From cfdfa3a82a7efe1fdce2b7ffd0b076ff330f1792 Mon Sep 17 00:00:00 2001 From: speakeasybot Date: Wed, 1 Oct 2025 07:52:01 +0000 Subject: [PATCH 1/2] ## Python SDK Changes Detected: * `apideck.accounting.projects.list()`: **Added** * `apideck.accounting.projects.create()`: **Added** * `apideck.accounting.projects.get()`: **Added** * `apideck.accounting.projects.update()`: **Added** * `apideck.accounting.projects.delete()`: **Added** * `apideck.accounting.bills.list()`: `response.data.[].supplier.address.line5` **Added** * `apideck.accounting.bills.create()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.bills.get()`: `response.data.supplier.address.line5` **Added** * `apideck.accounting.bills.update()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.invoices.list()`: * `request.filter` **Changed** * `response.data.[].billing_address.line5` **Added** * `apideck.accounting.invoices.create()`: * `request.billing_address.line5` **Added** * `apideck.accounting.invoices.get()`: `response.data.billing_address.line5` **Added** * `apideck.accounting.invoices.update()`: * `request.billing_address.line5` **Added** * `apideck.accounting.invoice_items.list()`: `request.filter` **Changed** * `apideck.accounting.invoice_items.get()`: `request.filter` **Changed** * `apideck.accounting.credit_notes.list()`: `response.data.[].billing_address.line5` **Added** * `apideck.accounting.credit_notes.create()`: * `request.billing_address.line5` **Added** * `apideck.accounting.credit_notes.get()`: `response.data.billing_address.line5` **Added** * `apideck.accounting.credit_notes.update()`: * `request.billing_address.line5` **Added** * `apideck.accounting.customers.list()`: `response.data.[]` **Changed** * `apideck.accounting.customers.create()`: `request` **Changed** * `apideck.accounting.customers.get()`: `response.data` **Changed** * `apideck.accounting.customers.update()`: `request` **Changed** * `apideck.accounting.suppliers.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.accounting.suppliers.create()`: * `request.addresses.[].line5` **Added** * `apideck.accounting.suppliers.get()`: `response.data.addresses.[].line5` **Added** * `apideck.accounting.suppliers.update()`: * `request.addresses.[].line5` **Added** * `apideck.accounting.payments.list()`: `response.data.[].supplier.address.line5` **Added** * `apideck.accounting.payments.create()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.payments.get()`: `response.data.supplier.address.line5` **Added** * `apideck.accounting.payments.update()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.company_info.get()`: `response.data.addresses.[].line5` **Added** * `apideck.accounting.journal_entries.list()`: `response.data.[]` **Changed** * `apideck.accounting.journal_entries.create()`: `request` **Changed** * `apideck.accounting.journal_entries.get()`: `response.data` **Changed** * `apideck.accounting.journal_entries.update()`: `request` **Changed** * `apideck.accounting.purchase_orders.list()`: `response.data.[].supplier.address.line5` **Added** * `apideck.accounting.purchase_orders.create()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.purchase_orders.get()`: `response.data.supplier.address.line5` **Added** * `apideck.accounting.purchase_orders.update()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.locations.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.accounting.locations.create()`: * `request.addresses.[].line5` **Added** * `apideck.accounting.locations.get()`: `response.data.addresses.[].line5` **Added** * `apideck.accounting.locations.update()`: * `request.addresses.[].line5` **Added** * `apideck.accounting.bill_payments.list()`: `response.data.[].supplier.address.line5` **Added** * `apideck.accounting.bill_payments.create()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.bill_payments.get()`: `response.data.supplier.address.line5` **Added** * `apideck.accounting.bill_payments.update()`: * `request.supplier.address.line5` **Added** * `apideck.accounting.categories.list()`: `request.filter` **Changed** * `apideck.accounting.categories.get()`: `request.filter` **Changed** * `apideck.accounting.quotes.list()`: `response.data.[].billing_address.line5` **Added** * `apideck.accounting.quotes.create()`: * `request.billing_address.line5` **Added** * `apideck.accounting.quotes.get()`: `response.data.billing_address.line5` **Added** * `apideck.accounting.quotes.update()`: * `request.billing_address.line5` **Added** * `apideck.ats.jobs.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.ats.jobs.get()`: `response.data.addresses.[].line5` **Added** * `apideck.ats.applicants.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.ats.applicants.create()`: * `request.addresses.[].line5` **Added** * `apideck.ats.applicants.get()`: `response.data.addresses.[].line5` **Added** * `apideck.ats.applicants.update()`: * `request.addresses.[].line5` **Added** * `apideck.crm.companies.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.crm.companies.create()`: * `request.addresses.[].line5` **Added** * `apideck.crm.companies.get()`: `response.data.addresses.[].line5` **Added** * `apideck.crm.companies.update()`: * `request.addresses.[].line5` **Added** * `apideck.crm.contacts.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.crm.contacts.create()`: * `request.addresses.[].line5` **Added** * `apideck.crm.contacts.get()`: `response.data.addresses.[].line5` **Added** * `apideck.crm.contacts.update()`: * `request.addresses.[].line5` **Added** * `apideck.crm.leads.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.crm.leads.create()`: * `request.addresses.[].line5` **Added** * `apideck.crm.leads.get()`: `response.data.addresses.[].line5` **Added** * `apideck.crm.leads.update()`: * `request.addresses.[].line5` **Added** * `apideck.crm.users.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.crm.users.create()`: * `request.addresses.[].line5` **Added** * `apideck.crm.users.get()`: `response.data.addresses.[].line5` **Added** * `apideck.crm.users.update()`: * `request.addresses.[].line5` **Added** * `apideck.crm.activities.list()`: `response.data.[].location_address.line5` **Added** * `apideck.crm.activities.create()`: * `request.location_address.line5` **Added** * `apideck.crm.activities.get()`: `response.data.location_address.line5` **Added** * `apideck.crm.activities.update()`: * `request.location_address.line5` **Added** * `apideck.hris.employees.list()`: `response.data.[].jobs.[].location.line5` **Added** * `apideck.hris.employees.create()`: * `request.jobs.[].location.line5` **Added** * `apideck.hris.employees.get()`: `response.data.jobs.[].location.line5` **Added** * `apideck.hris.employees.update()`: * `request.jobs.[].location.line5` **Added** * `apideck.hris.companies.list()`: `response.data.[].addresses.[].line5` **Added** * `apideck.hris.companies.create()`: * `request.addresses.[].line5` **Added** * `apideck.hris.companies.get()`: `response.data.addresses.[].line5` **Added** * `apideck.hris.companies.update()`: * `request.addresses.[].line5` **Added** * `apideck.hris.employee_schedules.list()`: `response.data.employee.jobs.[].location.line5` **Added** --- .speakeasy/gen.lock | 273 ++- .speakeasy/gen.yaml | 4 +- .speakeasy/workflow.lock | 16 +- README.md | 9 + RELEASES.md | 12 +- USAGE.md | 1 + .../accountinginvoiceitemsallrequest.md | 2 +- .../accountinginvoiceitemsonerequest.md | 2 +- docs/models/accountinginvoicesallrequest.md | 2 +- docs/models/accountingprojectsaddglobals.md | 9 + docs/models/accountingprojectsaddrequest.md | 12 + docs/models/accountingprojectsaddresponse.md | 10 + docs/models/accountingprojectsallglobals.md | 9 + docs/models/accountingprojectsallrequest.md | 17 + docs/models/accountingprojectsallresponse.md | 10 + .../models/accountingprojectsdeleteglobals.md | 9 + .../models/accountingprojectsdeleterequest.md | 12 + .../accountingprojectsdeleteresponse.md | 10 + docs/models/accountingprojectsoneglobals.md | 9 + docs/models/accountingprojectsonerequest.md | 12 + docs/models/accountingprojectsoneresponse.md | 10 + .../models/accountingprojectsupdateglobals.md | 9 + .../models/accountingprojectsupdaterequest.md | 13 + .../accountingprojectsupdateresponse.md | 10 + docs/models/address.md | 1 + docs/models/balancebytransaction.md | 18 +- .../balancebytransactiontransactiontype.md | 14 + docs/models/billingmethod.md | 14 + docs/models/categoriesfiltertype.md | 3 +- docs/models/categorytype.md | 3 +- docs/models/createprojectresponse.md | 15 + docs/models/customer.md | 2 + docs/models/customerinput.md | 2 + docs/models/deleteprojectresponse.md | 15 + docs/models/getprojectresponse.md | 15 + docs/models/getprojectsresponse.md | 17 + docs/models/invoiceitemfilter.md | 3 +- .../invoiceitemfiltertransactiontype.md | 11 + docs/models/invoiceitemsfilter.md | 3 +- docs/models/invoicesfilter.md | 3 +- docs/models/journalentry.md | 4 + docs/models/journalentryinput.md | 3 + docs/models/parentproject.md | 11 + docs/models/priority.md | 14 +- docs/models/project.md | 49 + docs/models/projectdepartment.md | 11 + docs/models/projectinput.md | 41 + docs/models/projectphase.md | 15 + docs/models/projectprojectstatus.md | 15 + docs/models/projectsfilter.md | 11 + docs/models/projectssort.md | 9 + docs/models/projectssortsortby.md | 17 + docs/models/projectstatus.md | 14 + docs/models/projecttype.md | 15 + docs/models/schedulestatus.md | 13 + docs/models/ticket.md | 2 +- docs/models/ticketinput.md | 2 +- docs/models/ticketpriority.md | 13 + docs/models/transactiontype.md | 13 +- docs/models/updateprojectresponse.md | 15 + docs/models/webhookeventtype.md | 5 +- docs/sdks/collectiontickets/README.md | 8 +- docs/sdks/connections/README.md | 4 +- docs/sdks/customers/README.md | 12 +- docs/sdks/invoiceitems/README.md | 4 +- docs/sdks/invoices/README.md | 2 +- docs/sdks/journalentries/README.md | 10 +- docs/sdks/projects/README.md | 478 ++++ docs/sdks/purchaseorders/README.md | 2 + docs/sdks/quotes/README.md | 4 + pyproject.toml | 2 +- src/apideck_unify/_version.py | 8 +- src/apideck_unify/accounting.py | 3 + src/apideck_unify/collectiontickets.py | 8 +- src/apideck_unify/customers.py | 24 + src/apideck_unify/journalentries.py | 36 + src/apideck_unify/models/__init__.py | 206 +- .../models/accounting_projectsaddop.py | 107 + .../models/accounting_projectsallop.py | 196 ++ .../models/accounting_projectsdeleteop.py | 107 + .../models/accounting_projectsoneop.py | 107 + .../models/accounting_projectsupdateop.py | 115 + src/apideck_unify/models/address.py | 7 + .../models/balancebytransaction.py | 6 +- src/apideck_unify/models/categoriesfilter.py | 1 + src/apideck_unify/models/category.py | 1 + .../models/createprojectresponse.py | 45 + src/apideck_unify/models/customer.py | 28 + .../models/deleteprojectresponse.py | 45 + .../models/getprojectresponse.py | 43 + .../models/getprojectsresponse.py | 56 + src/apideck_unify/models/invoiceitemfilter.py | 18 +- .../models/invoiceitemsfilter.py | 18 +- src/apideck_unify/models/invoicesfilter.py | 5 + src/apideck_unify/models/journalentry.py | 49 + src/apideck_unify/models/project.py | 718 ++++++ src/apideck_unify/models/projectsfilter.py | 44 + src/apideck_unify/models/projectssort.py | 39 + src/apideck_unify/models/ticket.py | 10 +- .../models/updateprojectresponse.py | 45 + src/apideck_unify/models/webhookeventtype.py | 3 + src/apideck_unify/projects.py | 2061 +++++++++++++++++ src/apideck_unify/sdk.py | 4 +- src/apideck_unify/utils/annotations.py | 40 +- 104 files changed, 5500 insertions(+), 142 deletions(-) create mode 100644 docs/models/accountingprojectsaddglobals.md create mode 100644 docs/models/accountingprojectsaddrequest.md create mode 100644 docs/models/accountingprojectsaddresponse.md create mode 100644 docs/models/accountingprojectsallglobals.md create mode 100644 docs/models/accountingprojectsallrequest.md create mode 100644 docs/models/accountingprojectsallresponse.md create mode 100644 docs/models/accountingprojectsdeleteglobals.md create mode 100644 docs/models/accountingprojectsdeleterequest.md create mode 100644 docs/models/accountingprojectsdeleteresponse.md create mode 100644 docs/models/accountingprojectsoneglobals.md create mode 100644 docs/models/accountingprojectsonerequest.md create mode 100644 docs/models/accountingprojectsoneresponse.md create mode 100644 docs/models/accountingprojectsupdateglobals.md create mode 100644 docs/models/accountingprojectsupdaterequest.md create mode 100644 docs/models/accountingprojectsupdateresponse.md create mode 100644 docs/models/balancebytransactiontransactiontype.md create mode 100644 docs/models/billingmethod.md create mode 100644 docs/models/createprojectresponse.md create mode 100644 docs/models/deleteprojectresponse.md create mode 100644 docs/models/getprojectresponse.md create mode 100644 docs/models/getprojectsresponse.md create mode 100644 docs/models/invoiceitemfiltertransactiontype.md create mode 100644 docs/models/parentproject.md create mode 100644 docs/models/project.md create mode 100644 docs/models/projectdepartment.md create mode 100644 docs/models/projectinput.md create mode 100644 docs/models/projectphase.md create mode 100644 docs/models/projectprojectstatus.md create mode 100644 docs/models/projectsfilter.md create mode 100644 docs/models/projectssort.md create mode 100644 docs/models/projectssortsortby.md create mode 100644 docs/models/projectstatus.md create mode 100644 docs/models/projecttype.md create mode 100644 docs/models/schedulestatus.md create mode 100644 docs/models/ticketpriority.md create mode 100644 docs/models/updateprojectresponse.md create mode 100644 docs/sdks/projects/README.md create mode 100644 src/apideck_unify/models/accounting_projectsaddop.py create mode 100644 src/apideck_unify/models/accounting_projectsallop.py create mode 100644 src/apideck_unify/models/accounting_projectsdeleteop.py create mode 100644 src/apideck_unify/models/accounting_projectsoneop.py create mode 100644 src/apideck_unify/models/accounting_projectsupdateop.py create mode 100644 src/apideck_unify/models/createprojectresponse.py create mode 100644 src/apideck_unify/models/deleteprojectresponse.py create mode 100644 src/apideck_unify/models/getprojectresponse.py create mode 100644 src/apideck_unify/models/getprojectsresponse.py create mode 100644 src/apideck_unify/models/project.py create mode 100644 src/apideck_unify/models/projectsfilter.py create mode 100644 src/apideck_unify/models/projectssort.py create mode 100644 src/apideck_unify/models/updateprojectresponse.py create mode 100644 src/apideck_unify/projects.py diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index b78aa669..41d9dfc0 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: fca0ac3a-5f4e-452c-bbc7-2311afa8da40 management: - docChecksum: 94936f0e0287ac5fd26fef3d5f2a030b - docVersion: 10.20.16 - speakeasyVersion: 1.622.1 - generationVersion: 2.709.0 - releaseVersion: 0.22.1 - configChecksum: 2191f1001804bd3cc8170e16e9745450 + docChecksum: 160f81b60b69a1404e238be7ac784498 + docVersion: 10.21.2 + speakeasyVersion: 1.631.5 + generationVersion: 2.716.16 + releaseVersion: 0.23.0 + configChecksum: cdc1b151838e3952453827ccdd2f6940 repoURL: https://github.com/apideck-libraries/sdk-python.git installationURL: https://github.com/apideck-libraries/sdk-python.git published: true @@ -15,7 +15,7 @@ features: acceptHeaders: 3.0.0 additionalDependencies: 1.0.0 constsAndDefaults: 1.0.5 - core: 5.20.4 + core: 5.22.0 deepObjectParams: 0.1.0 defaultEnabledRetries: 0.2.0 deprecations: 3.0.2 @@ -37,12 +37,12 @@ features: methodServerURLs: 3.1.1 nameOverrides: 3.0.1 nullables: 1.0.1 - pagination: 3.0.5 + pagination: 3.0.6 responseFormat: 1.0.1 retries: 3.0.2 sdkHooks: 1.1.0 typeOverrides: 3.0.0 - unions: 3.0.4 + unions: 3.0.5 uploadStreams: 1.0.0 generatedFiles: - .devcontainer/README.md @@ -322,6 +322,21 @@ generatedFiles: - docs/models/accountingprofitandlossoneglobals.md - docs/models/accountingprofitandlossonerequest.md - docs/models/accountingprofitandlossoneresponse.md + - docs/models/accountingprojectsaddglobals.md + - docs/models/accountingprojectsaddrequest.md + - docs/models/accountingprojectsaddresponse.md + - docs/models/accountingprojectsallglobals.md + - docs/models/accountingprojectsallrequest.md + - docs/models/accountingprojectsallresponse.md + - docs/models/accountingprojectsdeleteglobals.md + - docs/models/accountingprojectsdeleterequest.md + - docs/models/accountingprojectsdeleteresponse.md + - docs/models/accountingprojectsoneglobals.md + - docs/models/accountingprojectsonerequest.md + - docs/models/accountingprojectsoneresponse.md + - docs/models/accountingprojectsupdateglobals.md + - docs/models/accountingprojectsupdaterequest.md + - docs/models/accountingprojectsupdateresponse.md - docs/models/accountingpurchaseordersaddglobals.md - docs/models/accountingpurchaseordersaddrequest.md - docs/models/accountingpurchaseordersaddresponse.md @@ -496,6 +511,7 @@ generatedFiles: - docs/models/badrequestresponsedetail.md - docs/models/balancebyperiod.md - docs/models/balancebytransaction.md + - docs/models/balancebytransactiontransactiontype.md - docs/models/balancesheet.md - docs/models/balancesheetassetsaccount.md - docs/models/balancesheetequityaccount.md @@ -516,6 +532,7 @@ generatedFiles: - docs/models/bankfeedstatementtransactiontype.md - docs/models/benefit.md - docs/models/bill.md + - docs/models/billingmethod.md - docs/models/billinput.md - docs/models/billlineitem.md - docs/models/billlineiteminput.md @@ -663,6 +680,7 @@ generatedFiles: - docs/models/createopportunityresponse.md - docs/models/createpaymentresponse.md - docs/models/createpipelineresponse.md + - docs/models/createprojectresponse.md - docs/models/createpurchaseorderresponse.md - docs/models/createquoteresponse.md - docs/models/createsessionresponse.md @@ -904,6 +922,7 @@ generatedFiles: - docs/models/deleteopportunityresponse.md - docs/models/deletepaymentresponse.md - docs/models/deletepipelineresponse.md + - docs/models/deleteprojectresponse.md - docs/models/deletepurchaseorderresponse.md - docs/models/deletequoteresponse.md - docs/models/deletesharedlinkresponse.md @@ -1231,6 +1250,8 @@ generatedFiles: - docs/models/getproductresponse.md - docs/models/getproductsresponse.md - docs/models/getprofitandlossresponse.md + - docs/models/getprojectresponse.md + - docs/models/getprojectsresponse.md - docs/models/getpurchaseorderresponse.md - docs/models/getpurchaseordersresponse.md - docs/models/getquoteresponse.md @@ -1344,6 +1365,7 @@ generatedFiles: - docs/models/invoiceitem.md - docs/models/invoiceitemfilter.md - docs/models/invoiceitemfilterinvoiceitemtype.md + - docs/models/invoiceitemfiltertransactiontype.md - docs/models/invoiceiteminput.md - docs/models/invoiceitempurchasedetails.md - docs/models/invoiceitemsalesdetails.md @@ -1497,6 +1519,7 @@ generatedFiles: - docs/models/paginationcoverage.md - docs/models/paginationcoveragemode.md - docs/models/parentaccount.md + - docs/models/parentproject.md - docs/models/passthroughbody.md - docs/models/payment.md - docs/models/paymentallocations.md @@ -1529,6 +1552,16 @@ generatedFiles: - docs/models/profitandlossfilter.md - docs/models/profitandlossindicator.md - docs/models/profitandlosstype.md + - docs/models/project.md + - docs/models/projectdepartment.md + - docs/models/projectinput.md + - docs/models/projectphase.md + - docs/models/projectprojectstatus.md + - docs/models/projectsfilter.md + - docs/models/projectssort.md + - docs/models/projectssortsortby.md + - docs/models/projectstatus.md + - docs/models/projecttype.md - docs/models/purchasedetails.md - docs/models/purchaseorder.md - docs/models/purchaseorderamortizationtype.md @@ -1554,6 +1587,7 @@ generatedFiles: - docs/models/salary.md - docs/models/salesdetails.md - docs/models/schedule.md + - docs/models/schedulestatus.md - docs/models/schema.md - docs/models/schemasupport.md - docs/models/scope.md @@ -1616,6 +1650,7 @@ generatedFiles: - docs/models/thestartmonthoffiscalyear.md - docs/models/ticket.md - docs/models/ticketinput.md + - docs/models/ticketpriority.md - docs/models/ticketssort.md - docs/models/ticketssortby.md - docs/models/timeoffrequest.md @@ -1690,6 +1725,7 @@ generatedFiles: - docs/models/updateopportunityresponse.md - docs/models/updatepaymentresponse.md - docs/models/updatepipelineresponse.md + - docs/models/updateprojectresponse.md - docs/models/updatepurchaseorderresponse.md - docs/models/updatequoteresponse.md - docs/models/updatesharedlinkresponse.md @@ -1896,6 +1932,7 @@ generatedFiles: - docs/sdks/pipelines/README.md - docs/sdks/products/README.md - docs/sdks/profitandlosssdk/README.md + - docs/sdks/projects/README.md - docs/sdks/purchaseorders/README.md - docs/sdks/quotes/README.md - docs/sdks/sessions/README.md @@ -2085,6 +2122,11 @@ generatedFiles: - src/apideck_unify/models/accounting_paymentsoneop.py - src/apideck_unify/models/accounting_paymentsupdateop.py - src/apideck_unify/models/accounting_profitandlossoneop.py + - src/apideck_unify/models/accounting_projectsaddop.py + - src/apideck_unify/models/accounting_projectsallop.py + - src/apideck_unify/models/accounting_projectsdeleteop.py + - src/apideck_unify/models/accounting_projectsoneop.py + - src/apideck_unify/models/accounting_projectsupdateop.py - src/apideck_unify/models/accounting_purchaseordersaddop.py - src/apideck_unify/models/accounting_purchaseordersallop.py - src/apideck_unify/models/accounting_purchaseordersdeleteop.py @@ -2259,6 +2301,7 @@ generatedFiles: - src/apideck_unify/models/createopportunityresponse.py - src/apideck_unify/models/createpaymentresponse.py - src/apideck_unify/models/createpipelineresponse.py + - src/apideck_unify/models/createprojectresponse.py - src/apideck_unify/models/createpurchaseorderresponse.py - src/apideck_unify/models/createquoteresponse.py - src/apideck_unify/models/createsessionresponse.py @@ -2378,6 +2421,7 @@ generatedFiles: - src/apideck_unify/models/deleteopportunityresponse.py - src/apideck_unify/models/deletepaymentresponse.py - src/apideck_unify/models/deletepipelineresponse.py + - src/apideck_unify/models/deleteprojectresponse.py - src/apideck_unify/models/deletepurchaseorderresponse.py - src/apideck_unify/models/deletequoteresponse.py - src/apideck_unify/models/deletesharedlinkresponse.py @@ -2586,6 +2630,8 @@ generatedFiles: - src/apideck_unify/models/getproductresponse.py - src/apideck_unify/models/getproductsresponse.py - src/apideck_unify/models/getprofitandlossresponse.py + - src/apideck_unify/models/getprojectresponse.py + - src/apideck_unify/models/getprojectsresponse.py - src/apideck_unify/models/getpurchaseorderresponse.py - src/apideck_unify/models/getpurchaseordersresponse.py - src/apideck_unify/models/getquoteresponse.py @@ -2741,6 +2787,9 @@ generatedFiles: - src/apideck_unify/models/profitandlossfilter.py - src/apideck_unify/models/profitandlossindicator.py - src/apideck_unify/models/profitandlosstype.py + - src/apideck_unify/models/project.py + - src/apideck_unify/models/projectsfilter.py + - src/apideck_unify/models/projectssort.py - src/apideck_unify/models/purchaseorder.py - src/apideck_unify/models/purchaseordersfilter.py - src/apideck_unify/models/purchaseorderssort.py @@ -2830,6 +2879,7 @@ generatedFiles: - src/apideck_unify/models/updateopportunityresponse.py - src/apideck_unify/models/updatepaymentresponse.py - src/apideck_unify/models/updatepipelineresponse.py + - src/apideck_unify/models/updateprojectresponse.py - src/apideck_unify/models/updatepurchaseorderresponse.py - src/apideck_unify/models/updatequoteresponse.py - src/apideck_unify/models/updatesharedlinkresponse.py @@ -2891,6 +2941,7 @@ generatedFiles: - src/apideck_unify/pipelines.py - src/apideck_unify/products.py - src/apideck_unify/profitandloss_sdk.py + - src/apideck_unify/projects.py - src/apideck_unify/purchaseorders.py - src/apideck_unify/py.typed - src/apideck_unify/quotes.py @@ -3288,7 +3339,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"display_id": "123456", "bill_number": "10001", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "bill_date": "2020-09-30", "due_date": "2020-10-30", "paid_date": "2020-10-30", "po_number": "90000117", "reference": "INV-2024-001", "line_items": [{"row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "expense_account", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345"}], "terms": "Net 30 days", "balance": 27500, "deposit": 0, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_code": "1234", "notes": "Some notes about this bill.", "status": "draft", "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "discount_percentage": 5.5, "template_id": "123456", "approved_by": "John Doe", "tax_method": "Due to supplier", "document_received": true, "source_document_url": "https://www.invoicesolution.com/bill/123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}], "accounting_period": "01-24", "attachments": [{"name": "sample.jpg", "mime_type": "image/jpeg", "is_compressed": false, "encoding": "base64", "content": "data:image/jpeg;base64,...", "notes": "A sample image"}]} + application/json: {"display_id": "123456", "bill_number": "10001", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "bill_date": "2020-09-30", "due_date": "2020-10-30", "paid_date": "2020-10-30", "po_number": "90000117", "reference": "INV-2024-001", "line_items": [{"row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "expense_account", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345"}], "terms": "Net 30 days", "balance": 27500, "deposit": 0, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_code": "1234", "notes": "Some notes about this bill.", "status": "draft", "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "discount_percentage": 5.5, "template_id": "123456", "approved_by": "John Doe", "tax_method": "Due to supplier", "document_received": true, "source_document_url": "https://www.invoicesolution.com/bill/123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}], "accounting_period": "01-24", "attachments": [{"name": "sample.jpg", "mime_type": "image/jpeg", "is_compressed": false, "encoding": "base64", "content": "data:image/jpeg;base64,...", "notes": "A sample image"}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "bills", "operation": "add", "data": {"id": "12345"}} @@ -3344,7 +3395,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "bills", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "display_id": "123456", "bill_number": "10001", "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "bill_date": "2020-09-30", "due_date": "2020-10-30", "paid_date": "2020-10-30", "po_number": "90000117", "reference": "INV-2024-001", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "expense_account", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "terms": "Net 30 days", "balance": 27500, "deposit": 0, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_code": "1234", "notes": "Some notes about this bill.", "status": "draft", "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "discount_percentage": 5.5, "template_id": "123456", "approved_by": "John Doe", "tax_method": "Due to supplier", "document_received": true, "source_document_url": "https://www.invoicesolution.com/bill/123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}], "accounting_period": "01-24", "attachments": [{"name": "sample.jpg", "mime_type": "image/jpeg", "is_compressed": false, "encoding": "base64", "content": "data:image/jpeg;base64,...", "notes": "A sample image"}]}} + application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "bills", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "display_id": "123456", "bill_number": "10001", "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "bill_date": "2020-09-30", "due_date": "2020-10-30", "paid_date": "2020-10-30", "po_number": "90000117", "reference": "INV-2024-001", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "expense_account", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "terms": "Net 30 days", "balance": 27500, "deposit": 0, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_code": "1234", "notes": "Some notes about this bill.", "status": "draft", "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "discount_percentage": 5.5, "template_id": "123456", "approved_by": "John Doe", "tax_method": "Due to supplier", "document_received": true, "source_document_url": "https://www.invoicesolution.com/bill/123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}], "accounting_period": "01-24", "attachments": [{"name": "sample.jpg", "mime_type": "image/jpeg", "is_compressed": false, "encoding": "base64", "content": "data:image/jpeg;base64,...", "notes": "A sample image"}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -3396,7 +3447,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"display_id": "123456", "bill_number": "10001", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "bill_date": "2020-09-30", "due_date": "2020-10-30", "paid_date": "2020-10-30", "po_number": "90000117", "reference": "INV-2024-001", "line_items": [{"row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "expense_account", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345"}], "terms": "Net 30 days", "balance": 27500, "deposit": 0, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_code": "1234", "notes": "Some notes about this bill.", "status": "draft", "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "discount_percentage": 5.5, "template_id": "123456", "approved_by": "John Doe", "tax_method": "Due to supplier", "document_received": true, "source_document_url": "https://www.invoicesolution.com/bill/123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}], "accounting_period": "01-24", "attachments": [{"name": "sample.jpg", "mime_type": "image/jpeg", "is_compressed": false, "encoding": "base64", "content": "data:image/jpeg;base64,...", "notes": "A sample image"}]} + application/json: {"display_id": "123456", "bill_number": "10001", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "bill_date": "2020-09-30", "due_date": "2020-10-30", "paid_date": "2020-10-30", "po_number": "90000117", "reference": "INV-2024-001", "line_items": [{"row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "expense_account", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345"}], "terms": "Net 30 days", "balance": 27500, "deposit": 0, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_code": "1234", "notes": "Some notes about this bill.", "status": "draft", "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "discount_percentage": 5.5, "template_id": "123456", "approved_by": "John Doe", "tax_method": "Due to supplier", "document_received": true, "source_document_url": "https://www.invoicesolution.com/bill/123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}], "accounting_period": "01-24", "attachments": [{"name": "sample.jpg", "mime_type": "image/jpeg", "is_compressed": false, "encoding": "base64", "content": "data:image/jpeg;base64,...", "notes": "A sample image"}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "bills", "operation": "update", "data": {"id": "12345"}} @@ -3497,7 +3548,7 @@ examples: query: raw: false limit: 20 - filter: {"updated_since": "2020-09-30T07:43:32.000Z", "created_since": "2020-09-30T07:43:32.000Z", "number": "OIT00546"} + filter: {"updated_since": "2020-09-30T07:43:32.000Z", "created_since": "2020-09-30T07:43:32.000Z", "number": "OIT00546", "supplier_id": "123"} sort: {"by": "updated_at", "direction": "desc"} pass_through: {"search": "San Francisco"} fields: "id,updated_at" @@ -3555,7 +3606,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"display_id": "123456", "type": "service", "number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "invoice_date": "2020-09-30", "due_date": "2020-09-30", "terms": "Net 30 days", "po_number": "90000117", "reference": "INV-2024-001", "status": "draft", "invoice_sent": true, "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "balance": 27500, "deposit": 0, "customer_memo": "Thank you for your business and have a great day!", "tracking_categories": [{"id": "123456", "name": "New York"}], "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "template_id": "123456", "source_document_url": "https://www.invoicesolution.com/invoice/123456", "payment_allocations": [{"id": "123456", "allocated_amount": 1000, "date": "2020-09-30T07:43:32.000Z"}], "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "ledger_account": null, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"display_id": "123456", "type": "service", "number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "invoice_date": "2020-09-30", "due_date": "2020-09-30", "terms": "Net 30 days", "po_number": "90000117", "reference": "INV-2024-001", "status": "draft", "invoice_sent": true, "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "balance": 27500, "deposit": 0, "customer_memo": "Thank you for your business and have a great day!", "tracking_categories": [{"id": "123456", "name": "New York"}], "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "template_id": "123456", "source_document_url": "https://www.invoicesolution.com/invoice/123456", "payment_allocations": [{"id": "123456", "allocated_amount": 1000, "date": "2020-09-30T07:43:32.000Z"}], "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "ledger_account": null, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "invoices", "operation": "add", "data": {"id": "12345", "downstream_id": "12345"}} @@ -3611,7 +3662,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "invoices", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "display_id": "123456", "type": "service", "number": "OIT00546", "customer": null, "company_id": "12345", "department_id": "12345", "invoice_date": "2020-09-30", "due_date": "2020-09-30", "terms": "Net 30 days", "po_number": "90000117", "reference": "INV-2024-001", "status": "draft", "invoice_sent": true, "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "balance": 27500, "deposit": 0, "customer_memo": "Thank you for your business and have a great day!", "tracking_categories": [{"id": "123456", "name": "New York"}], "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "template_id": "123456", "source_document_url": "https://www.invoicesolution.com/invoice/123456", "payment_allocations": [{"id": "123456", "allocated_amount": 1000, "date": "2020-09-30T07:43:32.000Z"}], "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "invoices", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "display_id": "123456", "type": "service", "number": "OIT00546", "customer": null, "company_id": "12345", "department_id": "12345", "invoice_date": "2020-09-30", "due_date": "2020-09-30", "terms": "Net 30 days", "po_number": "90000117", "reference": "INV-2024-001", "status": "draft", "invoice_sent": true, "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "balance": 27500, "deposit": 0, "customer_memo": "Thank you for your business and have a great day!", "tracking_categories": [{"id": "123456", "name": "New York"}], "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "template_id": "123456", "source_document_url": "https://www.invoicesolution.com/invoice/123456", "payment_allocations": [{"id": "123456", "allocated_amount": 1000, "date": "2020-09-30T07:43:32.000Z"}], "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -3663,7 +3714,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"display_id": "123456", "type": "service", "number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "invoice_date": "2020-09-30", "due_date": "2020-09-30", "terms": "Net 30 days", "po_number": "90000117", "reference": "INV-2024-001", "status": "draft", "invoice_sent": true, "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "balance": 27500, "deposit": 0, "customer_memo": "Thank you for your business and have a great day!", "tracking_categories": [{"id": "123456", "name": "New York"}], "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "template_id": "123456", "source_document_url": "https://www.invoicesolution.com/invoice/123456", "payment_allocations": [{"id": "123456", "allocated_amount": 1000, "date": "2020-09-30T07:43:32.000Z"}], "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"display_id": "123456", "type": "service", "number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "invoice_date": "2020-09-30", "due_date": "2020-09-30", "terms": "Net 30 days", "po_number": "90000117", "reference": "INV-2024-001", "status": "draft", "invoice_sent": true, "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "balance": 27500, "deposit": 0, "customer_memo": "Thank you for your business and have a great day!", "tracking_categories": [{"id": "123456", "name": "New York"}], "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "template_id": "123456", "source_document_url": "https://www.invoicesolution.com/invoice/123456", "payment_allocations": [{"id": "123456", "allocated_amount": 1000, "date": "2020-09-30T07:43:32.000Z"}], "payment_method": "cash", "channel": "email", "language": "EN", "accounting_by_row": false, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "invoices", "operation": "update", "data": {"id": "12345", "downstream_id": "12345"}} @@ -4031,7 +4082,7 @@ examples: query: raw: false limit: 20 - filter: {"name": "Widgets Large", "type": "service"} + filter: {"name": "Widgets Large", "type": "service", "transaction_type": "sale"} sort: {"by": "updated_at", "direction": "desc"} pass_through: {"search": "San Francisco"} fields: "id,updated_at" @@ -4140,7 +4191,7 @@ examples: query: raw: false fields: "id,updated_at" - filter: {"type": "service"} + filter: {"type": "service", "transaction_type": "purchase"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -4358,7 +4409,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_amount": 49.99, "total_tax": 2500, "tax_code": "1234", "balance": 27500, "remaining_credit": 27500, "status": "authorised", "reference": "123456", "date_issued": "2021-05-01T12:00:00.000Z", "date_paid": "2021-05-01T12:00:00.000Z", "type": "accounts_receivable_credit", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "allocations": [{"id": "123456", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this credit note", "terms": "Some terms about this credit note", "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_amount": 49.99, "total_tax": 2500, "tax_code": "1234", "balance": 27500, "remaining_credit": 27500, "status": "authorised", "reference": "123456", "date_issued": "2021-05-01T12:00:00.000Z", "date_paid": "2021-05-01T12:00:00.000Z", "type": "accounts_receivable_credit", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "allocations": [{"id": "123456", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this credit note", "terms": "Some terms about this credit note", "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "credit-notes", "operation": "add", "data": {"id": "12345"}} @@ -4414,7 +4465,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "credit-notes", "operation": "one", "data": {"id": "123456", "number": "OIT00546", "customer": {"id": "12345", "display_id": "CUST00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_amount": 49.99, "total_tax": 2500, "tax_code": "1234", "balance": 27500, "remaining_credit": 27500, "status": "authorised", "reference": "123456", "date_issued": "2021-05-01T12:00:00.000Z", "date_paid": "2021-05-01T12:00:00.000Z", "type": "accounts_receivable_credit", "account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "allocations": [{"id": "123456", "code": "N091", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this credit note", "terms": "Some terms about this credit note", "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "credit-notes", "operation": "one", "data": {"id": "123456", "number": "OIT00546", "customer": {"id": "12345", "display_id": "CUST00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_amount": 49.99, "total_tax": 2500, "tax_code": "1234", "balance": 27500, "remaining_credit": 27500, "status": "authorised", "reference": "123456", "date_issued": "2021-05-01T12:00:00.000Z", "date_paid": "2021-05-01T12:00:00.000Z", "type": "accounts_receivable_credit", "account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "allocations": [{"id": "123456", "code": "N091", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this credit note", "terms": "Some terms about this credit note", "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -4466,7 +4517,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_amount": 49.99, "total_tax": 2500, "tax_code": "1234", "balance": 27500, "remaining_credit": 27500, "status": "authorised", "reference": "123456", "date_issued": "2021-05-01T12:00:00.000Z", "date_paid": "2021-05-01T12:00:00.000Z", "type": "accounts_receivable_credit", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345"}], "allocations": [{"id": "123456", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this credit note", "terms": "Some terms about this credit note", "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"number": "OIT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "company_id": "12345", "department_id": "12345", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_amount": 49.99, "total_tax": 2500, "tax_code": "1234", "balance": 27500, "remaining_credit": 27500, "status": "authorised", "reference": "123456", "date_issued": "2021-05-01T12:00:00.000Z", "date_paid": "2021-05-01T12:00:00.000Z", "type": "accounts_receivable_credit", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345"}], "allocations": [{"id": "123456", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this credit note", "terms": "Some terms about this credit note", "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "credit-notes", "operation": "update", "data": {"id": "12345"}} @@ -4625,7 +4676,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"display_id": "EMP00101", "display_name": "Windsurf Shop", "company_name": "SpaceX", "company_id": "12345", "title": "CEO", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "suffix": "Jr.", "individual": true, "project": false, "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "phone_numbers": [{"id": "12345", "country_code": "1", "area_code": "323", "number": "111-111-1111", "extension": "105", "type": "primary"}], "emails": [{"id": "123", "email": "elon@musk.com", "type": "primary"}], "websites": [{"id": "12345", "url": "http://example.com", "type": "primary"}], "bank_accounts": [{"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD"}], "notes": "Some notes about this customer", "tax_rate": {"id": "123456", "rate": 10}, "tax_number": "US123945459", "currency": "USD", "account": null, "parent": {"id": "12345", "name": "Windsurf Shop"}, "status": "active", "payment_method": "cash", "channel": "email", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"display_id": "EMP00101", "display_name": "Windsurf Shop", "company_name": "SpaceX", "company_id": "12345", "customer_category": "Insurance", "title": "CEO", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "suffix": "Jr.", "individual": true, "project": false, "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "phone_numbers": [{"id": "12345", "country_code": "1", "area_code": "323", "number": "111-111-1111", "extension": "105", "type": "primary"}], "emails": [{"id": "123", "email": "elon@musk.com", "type": "primary"}], "websites": [{"id": "12345", "url": "http://example.com", "type": "primary"}], "bank_accounts": [{"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD"}], "notes": "Some notes about this customer", "tax_rate": {"id": "123456", "rate": 10}, "tax_number": "US123945459", "currency": "USD", "account": null, "parent": {"id": "12345", "name": "Windsurf Shop"}, "status": "active", "payment_method": "cash", "terms": "Net 30 days", "channel": "email", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "customers", "operation": "add", "data": {"id": "12345"}} @@ -4681,7 +4732,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "customers", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "display_id": "EMP00101", "display_name": "Windsurf Shop", "company_name": "SpaceX", "company_id": "12345", "title": "CEO", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "suffix": "Jr.", "individual": true, "project": false, "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "phone_numbers": [{"id": "12345", "country_code": "1", "area_code": "323", "number": "111-111-1111", "extension": "105", "type": "primary"}], "emails": [{"id": "123", "email": "elon@musk.com", "type": "primary"}], "websites": [{"id": "12345", "url": "http://example.com", "type": "primary"}], "bank_accounts": [{"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD"}], "notes": "Some notes about this customer", "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tax_number": "US123945459", "currency": "USD", "account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "parent": {"id": "12345", "name": "Windsurf Shop"}, "status": "active", "payment_method": "cash", "channel": "email", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "customers", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "display_id": "EMP00101", "display_name": "Windsurf Shop", "company_name": "SpaceX", "company_id": "12345", "customer_category": "Insurance", "title": "CEO", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "suffix": "Jr.", "individual": true, "project": false, "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "phone_numbers": [{"id": "12345", "country_code": "1", "area_code": "323", "number": "111-111-1111", "extension": "105", "type": "primary"}], "emails": [{"id": "123", "email": "elon@musk.com", "type": "primary"}], "websites": [{"id": "12345", "url": "http://example.com", "type": "primary"}], "bank_accounts": [{"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD"}], "notes": "Some notes about this customer", "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tax_number": "US123945459", "currency": "USD", "account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "parent": {"id": "12345", "name": "Windsurf Shop"}, "status": "active", "payment_method": "cash", "terms": "Net 30 days", "channel": "email", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -4733,7 +4784,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"display_id": "EMP00101", "display_name": "Windsurf Shop", "company_name": "SpaceX", "company_id": "12345", "title": "CEO", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "suffix": "Jr.", "individual": true, "project": false, "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "phone_numbers": [{"id": "12345", "country_code": "1", "area_code": "323", "number": "111-111-1111", "extension": "105", "type": "primary"}], "emails": [{"id": "123", "email": "elon@musk.com", "type": "primary"}], "websites": [{"id": "12345", "url": "http://example.com", "type": "primary"}], "bank_accounts": [{"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD"}], "notes": "Some notes about this customer", "tax_rate": {"id": "123456", "rate": 10}, "tax_number": "US123945459", "currency": "USD", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "parent": {"id": "12345", "name": "Windsurf Shop"}, "status": "active", "payment_method": "cash", "channel": "email", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"display_id": "EMP00101", "display_name": "Windsurf Shop", "company_name": "SpaceX", "company_id": "12345", "customer_category": "Insurance", "title": "CEO", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "suffix": "Jr.", "individual": true, "project": false, "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "phone_numbers": [{"id": "12345", "country_code": "1", "area_code": "323", "number": "111-111-1111", "extension": "105", "type": "primary"}], "emails": [{"id": "123", "email": "elon@musk.com", "type": "primary"}], "websites": [{"id": "12345", "url": "http://example.com", "type": "primary"}], "bank_accounts": [{"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD"}], "notes": "Some notes about this customer", "tax_rate": {"id": "123456", "rate": 10}, "tax_number": "US123945459", "currency": "USD", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "parent": {"id": "12345", "name": "Windsurf Shop"}, "status": "active", "payment_method": "cash", "terms": "Net 30 days", "channel": "email", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "customers", "operation": "update", "data": {"id": "12345"}} @@ -5579,7 +5630,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"title": "Purchase Invoice-Inventory (USD): 2019/02/01 Batch Summary Entry", "currency_rate": 0.69, "currency": "USD", "company_id": "12345", "line_items": [{"description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "tax_amount": 27500, "sub_total": 27500, "total_amount": 27500, "type": "debit", "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "department_id": "12345", "location_id": "12345", "line_number": 1}], "status": "draft", "memo": "Thank you for your business and have a great day!", "posted_at": "2020-09-30T07:43:32.000Z", "journal_symbol": "IND", "tax_type": "sales", "tax_code": "1234", "number": "OIT00546", "tracking_categories": [{"id": "123456", "name": "New York"}], "accounting_period": "01-24", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"title": "Purchase Invoice-Inventory (USD): 2019/02/01 Batch Summary Entry", "currency_rate": 0.69, "currency": "USD", "company_id": "12345", "line_items": [{"description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "tax_amount": 27500, "sub_total": 27500, "total_amount": 27500, "type": "debit", "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "department_id": "12345", "location_id": "12345", "line_number": 1}], "status": "draft", "memo": "Thank you for your business and have a great day!", "posted_at": "2020-09-30T07:43:32.000Z", "journal_symbol": "IND", "tax_type": "sales", "tax_code": "1234", "number": "OIT00546", "tracking_categories": [{"id": "123456", "name": "New York"}], "accounting_period": "01-24", "tax_inclusive": true, "source_type": "manual", "source_id": "12345", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "journal-entries", "operation": "add", "data": {"id": "12345"}} @@ -5635,7 +5686,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "journal-entries", "operation": "one", "data": {"id": "12345", "title": "Purchase Invoice-Inventory (USD): 2019/02/01 Batch Summary Entry", "currency_rate": 0.69, "currency": "USD", "company_id": "12345", "line_items": [{"id": "12345", "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "tax_amount": 27500, "sub_total": 27500, "total_amount": 27500, "type": "debit", "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "customer": {"id": "12345", "display_id": "CUST00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "email": "boring@boring.com"}, "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "department_id": "12345", "location_id": "12345", "line_number": 1}], "status": "draft", "memo": "Thank you for your business and have a great day!", "posted_at": "2020-09-30T07:43:32.000Z", "journal_symbol": "IND", "tax_type": "sales", "tax_code": "1234", "number": "OIT00546", "tracking_categories": [{"id": "123456", "name": "New York"}], "accounting_period": "01-24", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "journal-entries", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "title": "Purchase Invoice-Inventory (USD): 2019/02/01 Batch Summary Entry", "currency_rate": 0.69, "currency": "USD", "company_id": "12345", "line_items": [{"id": "12345", "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "tax_amount": 27500, "sub_total": 27500, "total_amount": 27500, "type": "debit", "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "customer": {"id": "12345", "display_id": "CUST00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "email": "boring@boring.com"}, "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "department_id": "12345", "location_id": "12345", "line_number": 1}], "status": "draft", "memo": "Thank you for your business and have a great day!", "posted_at": "2020-09-30T07:43:32.000Z", "journal_symbol": "IND", "tax_type": "sales", "tax_code": "1234", "number": "OIT00546", "tracking_categories": [{"id": "123456", "name": "New York"}], "accounting_period": "01-24", "tax_inclusive": true, "source_type": "manual", "source_id": "12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -5687,7 +5738,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"title": "Purchase Invoice-Inventory (USD): 2019/02/01 Batch Summary Entry", "currency_rate": 0.69, "currency": "USD", "company_id": "12345", "line_items": [{"description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "tax_amount": 27500, "sub_total": 27500, "total_amount": 27500, "type": "debit", "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "department_id": "12345", "location_id": "12345", "line_number": 1}], "status": "draft", "memo": "Thank you for your business and have a great day!", "posted_at": "2020-09-30T07:43:32.000Z", "journal_symbol": "IND", "tax_type": "sales", "tax_code": "1234", "number": "OIT00546", "tracking_categories": [{"id": "123456", "name": "New York"}], "accounting_period": "01-24", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"title": "Purchase Invoice-Inventory (USD): 2019/02/01 Batch Summary Entry", "currency_rate": 0.69, "currency": "USD", "company_id": "12345", "line_items": [{"description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "tax_amount": 27500, "sub_total": 27500, "total_amount": 27500, "type": "debit", "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "department_id": "12345", "location_id": "12345", "line_number": 1}], "status": "draft", "memo": "Thank you for your business and have a great day!", "posted_at": "2020-09-30T07:43:32.000Z", "journal_symbol": "IND", "tax_type": "sales", "tax_code": "1234", "number": "OIT00546", "tracking_categories": [{"id": "123456", "name": "New York"}], "accounting_period": "01-24", "tax_inclusive": true, "source_type": "manual", "source_id": "12345", "row_version": "1-12345", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "journal-entries", "operation": "update", "data": {"id": "12345"}} @@ -5844,7 +5895,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"po_number": "90000117", "reference": "123456", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "subsidiary_id": "12345", "company_id": "12345", "department_id": "12345", "status": "open", "issued_date": "2020-09-30", "delivery_date": "2020-09-30", "expected_arrival_date": "2020-09-30", "currency": "USD", "currency_rate": 0.69, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_inclusive": true, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "template_id": "123456", "discount_percentage": 5.5, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "accounting_by_row": false, "due_date": "2020-10-30", "payment_method": "cash", "terms": "Net 30 days", "tax_code": "1234", "tax_method": "Due to supplier", "issued_method": "Email", "issued_email": "john.doe@example.com", "channel": "email", "memo": "Thank you for the partnership and have a great day!", "notes": "This is a test purchase order", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"po_number": "90000117", "reference": "123456", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "subsidiary_id": "12345", "company_id": "12345", "department_id": "12345", "status": "open", "issued_date": "2020-09-30", "delivery_date": "2020-09-30", "expected_arrival_date": "2020-09-30", "currency": "USD", "currency_rate": 0.69, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_inclusive": true, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "template_id": "123456", "discount_percentage": 5.5, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "accounting_by_row": false, "due_date": "2020-10-30", "payment_method": "cash", "terms": "Net 30 days", "tax_code": "1234", "tax_method": "Due to supplier", "issued_method": "Email", "issued_email": "john.doe@example.com", "channel": "email", "memo": "Thank you for the partnership and have a great day!", "notes": "This is a test purchase order", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "PurchaseOrders", "operation": "add", "data": {"id": "12345"}} @@ -5898,7 +5949,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "PurchaseOrders", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "po_number": "90000117", "reference": "123456", "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "subsidiary_id": "12345", "company_id": "12345", "department_id": "12345", "status": "open", "issued_date": "2020-09-30", "delivery_date": "2020-09-30", "expected_arrival_date": "2020-09-30", "currency": "USD", "currency_rate": 0.69, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_inclusive": true, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "template_id": "123456", "discount_percentage": 5.5, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "accounting_by_row": false, "due_date": "2020-10-30", "payment_method": "cash", "terms": "Net 30 days", "tax_code": "1234", "tax_method": "Due to supplier", "issued_method": "Email", "issued_email": "john.doe@example.com", "channel": "email", "memo": "Thank you for the partnership and have a great day!", "notes": "This is a test purchase order", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "PurchaseOrders", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "po_number": "90000117", "reference": "123456", "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "subsidiary_id": "12345", "company_id": "12345", "department_id": "12345", "status": "open", "issued_date": "2020-09-30", "delivery_date": "2020-09-30", "expected_arrival_date": "2020-09-30", "currency": "USD", "currency_rate": 0.69, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_inclusive": true, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "template_id": "123456", "discount_percentage": 5.5, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "accounting_by_row": false, "due_date": "2020-10-30", "payment_method": "cash", "terms": "Net 30 days", "tax_code": "1234", "tax_method": "Due to supplier", "issued_method": "Email", "issued_email": "john.doe@example.com", "channel": "email", "memo": "Thank you for the partnership and have a great day!", "notes": "This is a test purchase order", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -5950,7 +6001,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"po_number": "90000117", "reference": "123456", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "subsidiary_id": "12345", "company_id": "12345", "department_id": "12345", "status": "open", "issued_date": "2020-09-30", "delivery_date": "2020-09-30", "expected_arrival_date": "2020-09-30", "currency": "USD", "currency_rate": 0.69, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_inclusive": true, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": null, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "template_id": "123456", "discount_percentage": 5.5, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "accounting_by_row": false, "due_date": "2020-10-30", "payment_method": "cash", "terms": "Net 30 days", "tax_code": "1234", "tax_method": "Due to supplier", "issued_method": "Email", "issued_email": "john.doe@example.com", "channel": "email", "memo": "Thank you for the partnership and have a great day!", "notes": "This is a test purchase order", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"po_number": "90000117", "reference": "123456", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "subsidiary_id": "12345", "company_id": "12345", "department_id": "12345", "status": "open", "issued_date": "2020-09-30", "delivery_date": "2020-09-30", "expected_arrival_date": "2020-09-30", "currency": "USD", "currency_rate": 0.69, "sub_total": 27500, "total_tax": 2500, "total": 27500, "tax_inclusive": true, "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York"}], "ledger_account": null, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "template_id": "123456", "discount_percentage": 5.5, "bank_account": {"bank_name": "Monzo", "account_number": "123465", "account_name": "SPACEX LLC", "account_type": "credit_card", "iban": "CH2989144532982975332", "bic": "AUDSCHGGXXX", "routing_number": "012345678", "bsb_number": "062-001", "branch_identifier": "001", "bank_code": "BNH", "currency": "USD", "country": "US"}, "accounting_by_row": false, "due_date": "2020-10-30", "payment_method": "cash", "terms": "Net 30 days", "tax_code": "1234", "tax_method": "Due to supplier", "issued_method": "Email", "issued_email": "john.doe@example.com", "channel": "email", "memo": "Thank you for the partnership and have a great day!", "notes": "This is a test purchase order", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "PurchaseOrders", "operation": "update", "data": {"id": "12345"}} @@ -7469,7 +7520,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"currency": "USD", "currency_rate": 0.69, "total_amount": 49.99, "reference": "123456", "payment_method": "cash", "payment_method_reference": "123456", "payment_method_id": "12345", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "transaction_date": "2021-05-01T12:00:00.000Z", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "reconciled": true, "status": "authorised", "type": "accounts_payable", "allocations": [{"id": "12345", "type": "bill", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this transaction", "number": "123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "display_id": "123456", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"currency": "USD", "currency_rate": 0.69, "total_amount": 49.99, "reference": "123456", "payment_method": "cash", "payment_method_reference": "123456", "payment_method_id": "12345", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "transaction_date": "2021-05-01T12:00:00.000Z", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "reconciled": true, "status": "authorised", "type": "accounts_payable", "allocations": [{"id": "12345", "type": "bill", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this transaction", "number": "123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "display_id": "123456", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "payments", "operation": "add", "data": {"id": "12345"}} @@ -7525,7 +7576,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "payments", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "currency": "USD", "currency_rate": 0.69, "total_amount": 49.99, "reference": "123456", "payment_method": "cash", "payment_method_reference": "123456", "payment_method_id": "12345", "account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "transaction_date": "2021-05-01T12:00:00.000Z", "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "reconciled": true, "status": "authorised", "type": "accounts_payable", "allocations": [{"id": "12345", "type": "bill", "code": "N091", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this transaction", "number": "123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "display_id": "123456", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "payments", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "currency": "USD", "currency_rate": 0.69, "total_amount": 49.99, "reference": "123456", "payment_method": "cash", "payment_method_reference": "123456", "payment_method_id": "12345", "account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "transaction_date": "2021-05-01T12:00:00.000Z", "supplier": {"id": "12345", "display_id": "SUPP00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "reconciled": true, "status": "authorised", "type": "accounts_payable", "allocations": [{"id": "12345", "type": "bill", "code": "N091", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this transaction", "number": "123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "display_id": "123456", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -7577,7 +7628,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"currency": "USD", "currency_rate": 0.69, "total_amount": 49.99, "reference": "123456", "payment_method": "cash", "payment_method_reference": "123456", "payment_method_id": "12345", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "transaction_date": "2021-05-01T12:00:00.000Z", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "reconciled": true, "status": "authorised", "type": "accounts_payable", "allocations": [{"id": "12345", "type": "bill", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this transaction", "number": "123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "display_id": "123456", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"currency": "USD", "currency_rate": 0.69, "total_amount": 49.99, "reference": "123456", "payment_method": "cash", "payment_method_reference": "123456", "payment_method_id": "12345", "account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "transaction_date": "2021-05-01T12:00:00.000Z", "supplier": {"id": "12345", "display_name": "Windsurf Shop", "address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}}, "company_id": "12345", "reconciled": true, "status": "authorised", "type": "accounts_payable", "allocations": [{"id": "12345", "type": "bill", "amount": 49.99, "allocation_id": "123456"}], "note": "Some notes about this transaction", "number": "123456", "tracking_categories": [{"id": "123456", "name": "New York"}], "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": null}], "row_version": "1-12345", "display_id": "123456", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "payments", "operation": "update", "data": {"id": "12345"}} @@ -11115,7 +11166,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"activity_datetime": "2021-05-01T12:00:00.000Z", "duration_seconds": 1800, "user_id": "12345", "account_id": "12345", "contact_id": "12345", "company_id": "12345", "opportunity_id": "12345", "lead_id": "12345", "owner_id": "12345", "campaign_id": "12345", "case_id": "12345", "asset_id": "12345", "contract_id": "12345", "product_id": "12345", "solution_id": "12345", "custom_object_id": "12345", "type": "meeting", "title": "Meeting", "description": "More info about the meeting", "note": "An internal note about the meeting", "location": "Space", "location_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "all_day_event": false, "private": true, "group_event": true, "event_sub_type": "debrief", "group_event_type": "Proposed", "child": false, "archived": false, "deleted": false, "show_as": "busy", "done": false, "start_datetime": "2021-05-01T12:00:00.000Z", "end_datetime": "2021-05-01T12:30:00.000Z", "activity_date": "2021-05-01", "end_date": "2021-05-01", "recurrent": false, "reminder_datetime": "2021-05-01T17:00:00.000Z", "reminder_set": false, "video_conference_url": "https://us02web.zoom.us/j/88120759396", "video_conference_id": "zoom:88120759396", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "attendees": [{"name": "Elon Musk", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "prefix": "Mr.", "suffix": "PhD", "email_address": "elon@musk.com", "is_organizer": true, "status": "accepted"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"activity_datetime": "2021-05-01T12:00:00.000Z", "duration_seconds": 1800, "user_id": "12345", "account_id": "12345", "contact_id": "12345", "company_id": "12345", "opportunity_id": "12345", "lead_id": "12345", "owner_id": "12345", "campaign_id": "12345", "case_id": "12345", "asset_id": "12345", "contract_id": "12345", "product_id": "12345", "solution_id": "12345", "custom_object_id": "12345", "type": "meeting", "title": "Meeting", "description": "More info about the meeting", "note": "An internal note about the meeting", "location": "Space", "location_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "all_day_event": false, "private": true, "group_event": true, "event_sub_type": "debrief", "group_event_type": "Proposed", "child": false, "archived": false, "deleted": false, "show_as": "busy", "done": false, "start_datetime": "2021-05-01T12:00:00.000Z", "end_datetime": "2021-05-01T12:30:00.000Z", "activity_date": "2021-05-01", "end_date": "2021-05-01", "recurrent": false, "reminder_datetime": "2021-05-01T17:00:00.000Z", "reminder_set": false, "video_conference_url": "https://us02web.zoom.us/j/88120759396", "video_conference_id": "zoom:88120759396", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "attendees": [{"name": "Elon Musk", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "prefix": "Mr.", "suffix": "PhD", "email_address": "elon@musk.com", "is_organizer": true, "status": "accepted"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "zoho-crm", "resource": "activities", "operation": "add", "data": {"id": "12345"}} @@ -11171,7 +11222,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "zoho-crm", "resource": "activities", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "activity_datetime": "2021-05-01T12:00:00.000Z", "duration_seconds": 1800, "user_id": "12345", "account_id": "12345", "contact_id": "12345", "company_id": "12345", "opportunity_id": "12345", "lead_id": "12345", "owner_id": "12345", "campaign_id": "12345", "case_id": "12345", "asset_id": "12345", "contract_id": "12345", "product_id": "12345", "solution_id": "12345", "custom_object_id": "12345", "type": "meeting", "title": "Meeting", "description": "More info about the meeting", "note": "An internal note about the meeting", "location": "Space", "location_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "all_day_event": false, "private": true, "group_event": true, "event_sub_type": "debrief", "group_event_type": "Proposed", "child": false, "archived": false, "deleted": false, "show_as": "busy", "done": false, "start_datetime": "2021-05-01T12:00:00.000Z", "end_datetime": "2021-05-01T12:30:00.000Z", "duration_minutes": 30, "activity_date": "2021-05-01", "end_date": "2021-05-01", "recurrent": false, "reminder_datetime": "2021-05-01T17:00:00.000Z", "reminder_set": false, "video_conference_url": "https://us02web.zoom.us/j/88120759396", "video_conference_id": "zoom:88120759396", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "attendees": [{"id": "12345", "name": "Elon Musk", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "prefix": "Mr.", "suffix": "PhD", "email_address": "elon@musk.com", "is_organizer": true, "status": "accepted", "user_id": "12345", "contact_id": "12345", "updated_at": "2017-08-12T20:43:21.291Z", "created_at": "2017-08-12T20:43:21.291Z"}], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "zoho-crm", "resource": "activities", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "activity_datetime": "2021-05-01T12:00:00.000Z", "duration_seconds": 1800, "user_id": "12345", "account_id": "12345", "contact_id": "12345", "company_id": "12345", "opportunity_id": "12345", "lead_id": "12345", "owner_id": "12345", "campaign_id": "12345", "case_id": "12345", "asset_id": "12345", "contract_id": "12345", "product_id": "12345", "solution_id": "12345", "custom_object_id": "12345", "type": "meeting", "title": "Meeting", "description": "More info about the meeting", "note": "An internal note about the meeting", "location": "Space", "location_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "all_day_event": false, "private": true, "group_event": true, "event_sub_type": "debrief", "group_event_type": "Proposed", "child": false, "archived": false, "deleted": false, "show_as": "busy", "done": false, "start_datetime": "2021-05-01T12:00:00.000Z", "end_datetime": "2021-05-01T12:30:00.000Z", "duration_minutes": 30, "activity_date": "2021-05-01", "end_date": "2021-05-01", "recurrent": false, "reminder_datetime": "2021-05-01T17:00:00.000Z", "reminder_set": false, "video_conference_url": "https://us02web.zoom.us/j/88120759396", "video_conference_id": "zoom:88120759396", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "attendees": [{"id": "12345", "name": "Elon Musk", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "prefix": "Mr.", "suffix": "PhD", "email_address": "elon@musk.com", "is_organizer": true, "status": "accepted", "user_id": "12345", "contact_id": "12345", "updated_at": "2017-08-12T20:43:21.291Z", "created_at": "2017-08-12T20:43:21.291Z"}], "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -11223,7 +11274,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"activity_datetime": "2021-05-01T12:00:00.000Z", "duration_seconds": 1800, "user_id": "12345", "account_id": "12345", "contact_id": "12345", "company_id": "12345", "opportunity_id": "12345", "lead_id": "12345", "owner_id": "12345", "campaign_id": "12345", "case_id": "12345", "asset_id": "12345", "contract_id": "12345", "product_id": "12345", "solution_id": "12345", "custom_object_id": "12345", "type": "meeting", "title": "Meeting", "description": "More info about the meeting", "note": "An internal note about the meeting", "location": "Space", "location_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "all_day_event": false, "private": true, "group_event": true, "event_sub_type": "debrief", "group_event_type": "Proposed", "child": false, "archived": false, "deleted": false, "show_as": "busy", "done": false, "start_datetime": "2021-05-01T12:00:00.000Z", "end_datetime": "2021-05-01T12:30:00.000Z", "activity_date": "2021-05-01", "end_date": "2021-05-01", "recurrent": false, "reminder_datetime": "2021-05-01T17:00:00.000Z", "reminder_set": false, "video_conference_url": "https://us02web.zoom.us/j/88120759396", "video_conference_id": "zoom:88120759396", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "attendees": [{"name": "Elon Musk", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "prefix": "Mr.", "suffix": "PhD", "email_address": "elon@musk.com", "is_organizer": true, "status": "accepted"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"activity_datetime": "2021-05-01T12:00:00.000Z", "duration_seconds": 1800, "user_id": "12345", "account_id": "12345", "contact_id": "12345", "company_id": "12345", "opportunity_id": "12345", "lead_id": "12345", "owner_id": "12345", "campaign_id": "12345", "case_id": "12345", "asset_id": "12345", "contract_id": "12345", "product_id": "12345", "solution_id": "12345", "custom_object_id": "12345", "type": "meeting", "title": "Meeting", "description": "More info about the meeting", "note": "An internal note about the meeting", "location": "Space", "location_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "all_day_event": false, "private": true, "group_event": true, "event_sub_type": "debrief", "group_event_type": "Proposed", "child": false, "archived": false, "deleted": false, "show_as": "busy", "done": false, "start_datetime": "2021-05-01T12:00:00.000Z", "end_datetime": "2021-05-01T12:30:00.000Z", "activity_date": "2021-05-01", "end_date": "2021-05-01", "recurrent": false, "reminder_datetime": "2021-05-01T17:00:00.000Z", "reminder_set": false, "video_conference_url": "https://us02web.zoom.us/j/88120759396", "video_conference_id": "zoom:88120759396", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "attendees": [{"name": "Elon Musk", "first_name": "Elon", "middle_name": "D.", "last_name": "Musk", "prefix": "Mr.", "suffix": "PhD", "email_address": "elon@musk.com", "is_organizer": true, "status": "accepted"}], "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "zoho-crm", "resource": "activities", "operation": "update", "data": {"id": "12345"}} @@ -18004,7 +18055,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"number": "QT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "sales_order_id": "123456", "company_id": "12345", "department_id": "12345", "project_id": "12345", "quote_date": "2020-09-30", "expiry_date": "2020-10-30", "terms": "Valid for 30 days", "reference": "INV-2024-001", "status": "draft", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "customer_memo": "Thank you for considering our services!", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "category_id": "12345", "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "template_id": "123456", "source_document_url": "https://www.quotesolution.com/quote/123456", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"number": "QT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "sales_order_id": "123456", "company_id": "12345", "department_id": "12345", "project_id": "12345", "quote_date": "2020-09-30", "expiry_date": "2020-10-30", "terms": "Valid for 30 days", "reference": "INV-2024-001", "status": "draft", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "customer_memo": "Thank you for considering our services!", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "category_id": "12345", "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "template_id": "123456", "source_document_url": "https://www.quotesolution.com/quote/123456", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "201": application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Quotes", "operation": "add", "data": {"id": "12345"}} @@ -18033,7 +18084,7 @@ examples: x-apideck-service-id: "salesforce" responses: "200": - application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Quotes", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "number": "QT00546", "customer": {"id": "12345", "display_id": "CUST00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "email": "boring@boring.com"}, "invoice_id": "123456", "sales_order_id": "123456", "company_id": "12345", "department_id": "12345", "project_id": "12345", "quote_date": "2020-09-30", "expiry_date": "2020-10-30", "terms": "Valid for 30 days", "reference": "INV-2024-001", "status": "draft", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "customer_memo": "Thank you for considering our services!", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "category_id": "12345", "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "template_id": "123456", "source_document_url": "https://www.quotesolution.com/quote/123456", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Quotes", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "number": "QT00546", "customer": {"id": "12345", "display_id": "CUST00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "email": "boring@boring.com"}, "invoice_id": "123456", "sales_order_id": "123456", "company_id": "12345", "department_id": "12345", "project_id": "12345", "quote_date": "2020-09-30", "expiry_date": "2020-10-30", "terms": "Valid for 30 days", "reference": "INV-2024-001", "status": "draft", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "customer_memo": "Thank you for considering our services!", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "category_id": "12345", "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "template_id": "123456", "source_document_url": "https://www.quotesolution.com/quote/123456", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "updated_at": "2020-09-30T07:43:32.000Z", "created_at": "2020-09-30T07:43:32.000Z", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]}} "400": application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} "401": @@ -18058,7 +18109,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" x-apideck-service-id: "salesforce" requestBody: - application/json: {"number": "QT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "sales_order_id": "123456", "company_id": "12345", "department_id": "12345", "project_id": "12345", "quote_date": "2020-09-30", "expiry_date": "2020-10-30", "terms": "Valid for 30 days", "reference": "INV-2024-001", "status": "draft", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "customer_memo": "Thank you for considering our services!", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "category_id": "12345", "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "template_id": "123456", "source_document_url": "https://www.quotesolution.com/quote/123456", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} + application/json: {"number": "QT00546", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "sales_order_id": "123456", "company_id": "12345", "department_id": "12345", "project_id": "12345", "quote_date": "2020-09-30", "expiry_date": "2020-10-30", "terms": "Valid for 30 days", "reference": "INV-2024-001", "status": "draft", "currency": "USD", "currency_rate": 0.69, "tax_inclusive": true, "sub_total": 27500, "total_tax": 2500, "tax_code": "1234", "discount_percentage": 5.5, "discount_amount": 25, "total": 27500, "customer_memo": "Thank you for considering our services!", "line_items": [{"id": "12345", "row_id": "12345", "code": "120-C", "line_number": 1, "description": "Model Y is a fully electric, mid-size SUV, with seating for up to seven, dual motor AWD and unparalleled protection.", "type": "sales_item", "tax_amount": 27500, "total_amount": 27500, "quantity": 1, "unit_price": 27500.5, "unit_of_measure": "pc.", "discount_percentage": 0.01, "discount_amount": 19.99, "category_id": "12345", "location_id": "12345", "department_id": "12345", "item": {"id": "12344", "code": "120-C", "name": "Model Y"}, "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": null, "ledger_account": {"id": "123456", "nominal_code": "N091", "code": "453"}, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"}], "billing_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "shipping_address": {"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "template_id": "123456", "source_document_url": "https://www.quotesolution.com/quote/123456", "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "pass_through": [{"service_id": "", "extend_paths": [{"path": "$.nested.property", "value": {"TaxClassificationRef": {"value": "EUC-99990201-V1-00020000"}}}]}]} responses: "200": application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Quotes", "operation": "update", "data": {"id": "12345"}} @@ -18286,13 +18337,141 @@ examples: application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} default: application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + accounting.projectsAll: + speakeasy-default-accounting-projects-all: + parameters: + query: + raw: false + limit: 20 + filter: {"name": "Website Redesign", "status": "active", "customer_id": "12345", "updated_since": "2020-09-30T07:43:32.000Z"} + sort: {"by": "name", "direction": "asc"} + pass_through: {"search": "San Francisco"} + fields: "id,updated_at" + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Projects", "operation": "all", "data": [], "meta": {"items_on_page": 50, "cursors": {"previous": "em9oby1jcm06OnBhZ2U6OjE=", "current": "em9oby1jcm06OnBhZ2U6OjI=", "next": "em9oby1jcm06OnBhZ2U6OjM="}}, "links": {"previous": "https://unify.apideck.com/crm/companies?cursor=em9oby1jcm06OnBhZ2U6OjE%3D", "current": "https://unify.apideck.com/crm/companies", "next": "https://unify.apideck.com/crm/companies?cursor=em9oby1jcm06OnBhZ2U6OjM"}} + "400": + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} + "401": + application/json: {"status_code": 401, "error": "Unauthorized", "type_name": "UnauthorizedError", "message": "Unauthorized Request", "detail": "Missing authentication", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + "402": + application/json: {"status_code": 402, "error": "Payment Required", "type_name": "RequestLimitError", "message": "Request Limit Reached", "detail": "You have reached your limit of 2000", "ref": "https://developers.apideck.com/errors#requestlimiterror"} + "404": + application/json: {"status_code": 404, "error": "Not Found", "type_name": "EntityNotFoundError", "message": "Unknown Widget", "detail": "Could not find widget with id: '123'", "ref": "https://developers.apideck.com/errors#entitynotfounderror"} + "422": + application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} + default: + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + accounting.projectsAdd: + speakeasy-default-accounting-projects-add: + parameters: + query: + raw: false + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + requestBody: + application/json: {"name": "Website Redesign Project", "display_id": "PROJ-001", "reference_id": "WD-REF-2024-001", "description": "Complete redesign of the company website including new branding and improved user experience", "status": "active", "project_type": "client_project", "priority": "high", "completion_percentage": 75.5, "start_date": "2024-01-15", "end_date": "2024-06-30", "customer": {"id": "12345", "display_name": "Windsurf Shop", "email": "boring@boring.com"}, "department": {"id": "DEPT-001", "name": "Marketing"}, "company_id": "12345", "owner_id": "12345", "parent_project": {"id": "PROJ-PARENT-001", "name": "Company Website Overhaul"}, "currency": "USD", "budget_amount": 50000, "approved_amount": 48000, "budget_hours": 400, "hourly_rate": 125, "billing_method": "time_and_materials", "is_billable": true, "phase": "execution", "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "tags": ["website", "redesign", "urgent"], "notes": "Client has requested modern design with mobile-first approach", "contract_number": "CNT-2024-001", "profit_margin": 15.5, "schedule_status": "on_schedule", "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "team_size": 8, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"} + responses: + "201": + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Projects", "operation": "add", "data": {"id": "12345"}} + "400": + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} + "401": + application/json: {"status_code": 401, "error": "Unauthorized", "type_name": "UnauthorizedError", "message": "Unauthorized Request", "detail": "Missing authentication", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + "402": + application/json: {"status_code": 402, "error": "Payment Required", "type_name": "RequestLimitError", "message": "Request Limit Reached", "detail": "You have reached your limit of 2000", "ref": "https://developers.apideck.com/errors#requestlimiterror"} + "404": + application/json: {"status_code": 404, "error": "Not Found", "type_name": "EntityNotFoundError", "message": "Unknown Widget", "detail": "Could not find widget with id: '123'", "ref": "https://developers.apideck.com/errors#entitynotfounderror"} + "422": + application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} + default: + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + accounting.projectsOne: + speakeasy-default-accounting-projects-one: + parameters: + path: + id: "" + query: + raw: false + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Projects", "operation": "one", "data": {"id": "12345", "downstream_id": "12345", "name": "Website Redesign Project", "display_id": "PROJ-001", "reference_id": "WD-REF-2024-001", "description": "Complete redesign of the company website including new branding and improved user experience", "status": "active", "project_type": "client_project", "priority": "high", "completion_percentage": 75.5, "start_date": "2024-01-15", "end_date": "2024-06-30", "customer": {"id": "12345", "display_id": "CUST00101", "display_name": "Windsurf Shop", "company_name": "The boring company", "email": "boring@boring.com"}, "department": {"id": "DEPT-001", "name": "Marketing"}, "company_id": "12345", "owner_id": "12345", "parent_project": {"id": "PROJ-PARENT-001", "name": "Company Website Overhaul"}, "currency": "USD", "budget_amount": 50000, "approved_amount": 48000, "actual_amount": 45250.75, "budget_hours": 400, "actual_hours": 385.5, "hourly_rate": 125, "billing_method": "time_and_materials", "is_billable": true, "phase": "execution", "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "tags": ["website", "redesign", "urgent"], "notes": "Client has requested modern design with mobile-first approach", "contract_number": "CNT-2024-001", "profit_margin": 15.5, "schedule_status": "on_schedule", "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "team_size": 8, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345", "updated_by": "12345", "created_by": "12345", "created_at": "2020-09-30T07:43:32.000Z", "updated_at": "2020-09-30T07:43:32.000Z"}} + "400": + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} + "401": + application/json: {"status_code": 401, "error": "Unauthorized", "type_name": "UnauthorizedError", "message": "Unauthorized Request", "detail": "Missing authentication", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + "402": + application/json: {"status_code": 402, "error": "Payment Required", "type_name": "RequestLimitError", "message": "Request Limit Reached", "detail": "You have reached your limit of 2000", "ref": "https://developers.apideck.com/errors#requestlimiterror"} + "404": + application/json: {"status_code": 404, "error": "Not Found", "type_name": "EntityNotFoundError", "message": "Unknown Widget", "detail": "Could not find widget with id: '123'", "ref": "https://developers.apideck.com/errors#entitynotfounderror"} + "422": + application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} + default: + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + accounting.projectsUpdate: + speakeasy-default-accounting-projects-update: + parameters: + path: + id: "" + query: + raw: false + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + requestBody: + application/json: {"name": "Website Redesign Project", "display_id": "PROJ-001", "reference_id": "WD-REF-2024-001", "description": "Complete redesign of the company website including new branding and improved user experience", "status": "active", "project_type": "client_project", "priority": "high", "completion_percentage": 75.5, "start_date": "2024-01-15", "end_date": "2024-06-30", "customer": null, "department": {"id": "DEPT-001", "name": "Marketing"}, "company_id": "12345", "owner_id": "12345", "parent_project": {"id": "PROJ-PARENT-001", "name": "Company Website Overhaul"}, "currency": "USD", "budget_amount": 50000, "approved_amount": 48000, "budget_hours": 400, "hourly_rate": 125, "billing_method": "time_and_materials", "is_billable": true, "phase": "execution", "tax_rate": {"id": "123456", "rate": 10}, "tracking_categories": [{"id": "123456", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "tags": ["website", "redesign", "urgent"], "notes": "Client has requested modern design with mobile-first approach", "contract_number": "CNT-2024-001", "profit_margin": 15.5, "schedule_status": "on_schedule", "addresses": [{"id": "123", "type": "primary", "string": "25 Spring Street, Blackburn, VIC 3130", "name": "HQ US", "line1": "Main street", "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", "postal_code": "94104", "country": "US", "latitude": "40.759211", "longitude": "-73.984638", "county": "Santa Clara", "contact_name": "Elon Musk", "salutation": "Mr", "phone_number": "111-111-1111", "fax": "122-111-1111", "email": "elon@musk.com", "website": "https://elonmusk.com", "notes": "Address notes or delivery instructions.", "row_version": "1-12345"}], "team_size": 8, "custom_fields": [{"id": "2389328923893298", "name": "employee_level", "description": "Employee Level", "value": "Uses Salesforce and Marketo"}], "row_version": "1-12345"} + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Projects", "operation": "update", "data": {"id": "12345"}} + "400": + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} + "401": + application/json: {"status_code": 401, "error": "Unauthorized", "type_name": "UnauthorizedError", "message": "Unauthorized Request", "detail": "Missing authentication", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + "402": + application/json: {"status_code": 402, "error": "Payment Required", "type_name": "RequestLimitError", "message": "Request Limit Reached", "detail": "You have reached your limit of 2000", "ref": "https://developers.apideck.com/errors#requestlimiterror"} + "404": + application/json: {"status_code": 404, "error": "Not Found", "type_name": "EntityNotFoundError", "message": "Unknown Widget", "detail": "Could not find widget with id: '123'", "ref": "https://developers.apideck.com/errors#entitynotfounderror"} + "422": + application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} + default: + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + accounting.projectsDelete: + speakeasy-default-accounting-projects-delete: + parameters: + path: + id: "" + query: + raw: false + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "quickbooks", "resource": "Projects", "operation": "delete", "data": {"id": "12345"}} + "400": + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestValidationError", "message": "Invalid Params", "detail": "Missing property foobar", "ref": "https://developers.apideck.com/errors#requestvalidationerror"} + "401": + application/json: {"status_code": 401, "error": "Unauthorized", "type_name": "UnauthorizedError", "message": "Unauthorized Request", "detail": "Missing authentication", "ref": "https://developers.apideck.com/errors#unauthorizederror"} + "402": + application/json: {"status_code": 402, "error": "Payment Required", "type_name": "RequestLimitError", "message": "Request Limit Reached", "detail": "You have reached your limit of 2000", "ref": "https://developers.apideck.com/errors#requestlimiterror"} + "404": + application/json: {"status_code": 404, "error": "Not Found", "type_name": "EntityNotFoundError", "message": "Unknown Widget", "detail": "Could not find widget with id: '123'", "ref": "https://developers.apideck.com/errors#entitynotfounderror"} + "422": + application/json: {"status_code": 422, "error": "Unprocessable Entity", "type_name": "InvalidStateError", "message": "Invalid State", "detail": "Unprocessable request, please verify your request headers and body.", "ref": "https://developers.apideck.com/errors#invalidstateerror"} + default: + application/json: {"status_code": 400, "error": "Bad Request", "type_name": "RequestHeadersValidationError", "message": "Invalid Params", "detail": "Missing Header: x-apideck-consumer-id", "ref": "https://developers.apideck.com/errors#unauthorizederror"} examplesVersion: 1.0.2 generatedTests: {} -releaseNotes: | - ## Python SDK Changes Detected: - * `apideck.accounting.bank_accounts.list()`: **Added** - * `apideck.accounting.bank_accounts.create()`: **Added** - * `apideck.accounting.bank_accounts.get()`: **Added** - * `apideck.accounting.bank_accounts.update()`: **Added** - * `apideck.accounting.bank_accounts.delete()`: **Added** - * `apideck.vault.logs.list()`: `request.filter` **Changed** +releaseNotes: "## Python SDK Changes Detected:\n* `apideck.accounting.projects.list()`: **Added**\n* `apideck.accounting.projects.create()`: **Added**\n* `apideck.accounting.projects.get()`: **Added**\n* `apideck.accounting.projects.update()`: **Added**\n* `apideck.accounting.projects.delete()`: **Added**\n* `apideck.accounting.bills.list()`: `response.data.[].supplier.address.line5` **Added**\n* `apideck.accounting.bills.create()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.bills.get()`: `response.data.supplier.address.line5` **Added**\n* `apideck.accounting.bills.update()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.invoices.list()`: \n * `request.filter` **Changed**\n * `response.data.[].billing_address.line5` **Added**\n* `apideck.accounting.invoices.create()`: \n * `request.billing_address.line5` **Added**\n* `apideck.accounting.invoices.get()`: `response.data.billing_address.line5` **Added**\n* `apideck.accounting.invoices.update()`: \n * `request.billing_address.line5` **Added**\n* `apideck.accounting.invoice_items.list()`: `request.filter` **Changed**\n* `apideck.accounting.invoice_items.get()`: `request.filter` **Changed**\n* `apideck.accounting.credit_notes.list()`: `response.data.[].billing_address.line5` **Added**\n* `apideck.accounting.credit_notes.create()`: \n * `request.billing_address.line5` **Added**\n* `apideck.accounting.credit_notes.get()`: `response.data.billing_address.line5` **Added**\n* `apideck.accounting.credit_notes.update()`: \n * `request.billing_address.line5` **Added**\n* `apideck.accounting.customers.list()`: `response.data.[]` **Changed**\n* `apideck.accounting.customers.create()`: `request` **Changed**\n* `apideck.accounting.customers.get()`: `response.data` **Changed**\n* `apideck.accounting.customers.update()`: `request` **Changed**\n* `apideck.accounting.suppliers.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.accounting.suppliers.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.accounting.suppliers.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.accounting.suppliers.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.accounting.payments.list()`: `response.data.[].supplier.address.line5` **Added**\n* `apideck.accounting.payments.create()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.payments.get()`: `response.data.supplier.address.line5` **Added**\n* `apideck.accounting.payments.update()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.company_info.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.accounting.journal_entries.list()`: `response.data.[]` **Changed**\n* `apideck.accounting.journal_entries.create()`: `request` **Changed**\n* `apideck.accounting.journal_entries.get()`: `response.data` **Changed**\n* `apideck.accounting.journal_entries.update()`: `request` **Changed**\n* `apideck.accounting.purchase_orders.list()`: `response.data.[].supplier.address.line5` **Added**\n* `apideck.accounting.purchase_orders.create()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.purchase_orders.get()`: `response.data.supplier.address.line5` **Added**\n* `apideck.accounting.purchase_orders.update()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.locations.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.accounting.locations.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.accounting.locations.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.accounting.locations.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.accounting.bill_payments.list()`: `response.data.[].supplier.address.line5` **Added**\n* `apideck.accounting.bill_payments.create()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.bill_payments.get()`: `response.data.supplier.address.line5` **Added**\n* `apideck.accounting.bill_payments.update()`: \n * `request.supplier.address.line5` **Added**\n* `apideck.accounting.categories.list()`: `request.filter` **Changed**\n* `apideck.accounting.categories.get()`: `request.filter` **Changed**\n* `apideck.accounting.quotes.list()`: `response.data.[].billing_address.line5` **Added**\n* `apideck.accounting.quotes.create()`: \n * `request.billing_address.line5` **Added**\n* `apideck.accounting.quotes.get()`: `response.data.billing_address.line5` **Added**\n* `apideck.accounting.quotes.update()`: \n * `request.billing_address.line5` **Added**\n* `apideck.ats.jobs.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.ats.jobs.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.ats.applicants.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.ats.applicants.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.ats.applicants.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.ats.applicants.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.companies.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.crm.companies.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.companies.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.crm.companies.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.contacts.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.crm.contacts.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.contacts.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.crm.contacts.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.leads.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.crm.leads.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.leads.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.crm.leads.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.users.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.crm.users.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.users.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.crm.users.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.crm.activities.list()`: `response.data.[].location_address.line5` **Added**\n* `apideck.crm.activities.create()`: \n * `request.location_address.line5` **Added**\n* `apideck.crm.activities.get()`: `response.data.location_address.line5` **Added**\n* `apideck.crm.activities.update()`: \n * `request.location_address.line5` **Added**\n* `apideck.hris.employees.list()`: `response.data.[].jobs.[].location.line5` **Added**\n* `apideck.hris.employees.create()`: \n * `request.jobs.[].location.line5` **Added**\n* `apideck.hris.employees.get()`: `response.data.jobs.[].location.line5` **Added**\n* `apideck.hris.employees.update()`: \n * `request.jobs.[].location.line5` **Added**\n* `apideck.hris.companies.list()`: `response.data.[].addresses.[].line5` **Added**\n* `apideck.hris.companies.create()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.hris.companies.get()`: `response.data.addresses.[].line5` **Added**\n* `apideck.hris.companies.update()`: \n * `request.addresses.[].line5` **Added**\n* `apideck.hris.employee_schedules.list()`: `response.data.employee.jobs.[].location.line5` **Added**\n" diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 671b5ae7..e2c616b6 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -25,13 +25,14 @@ generation: generateNewTests: false skipResponseBodyAssertions: false python: - version: 0.22.1 + version: 0.23.0 additionalDependencies: dev: {} main: {} allowedRedefinedBuiltins: - id - object + asyncMode: both authors: - Speakeasy baseErrorName: ApideckError @@ -55,6 +56,7 @@ python: shared: "" webhooks: "" inputModelSuffix: input + legacyPyright: true maxMethodParams: 999 methodArguments: infer-optional-args moduleName: "" diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 9288c4df..facc8805 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,21 +1,21 @@ -speakeasyVersion: 1.622.1 +speakeasyVersion: 1.631.5 sources: Apideck: sourceNamespace: apideck - sourceRevisionDigest: sha256:b89dfeac61b6af51fea1bff368bfcd5a23f74d793f66299c9aeeaa5063dbd460 - sourceBlobDigest: sha256:8c94ca80af7cb854257519a8bf08a7a060c73248058c63f17aca9cc5208673ba + sourceRevisionDigest: sha256:0087c63890f3d406e9de4d6d1bc6009abcd5e97f21db723aa38c5c39b83a5f09 + sourceBlobDigest: sha256:69567c3d781e2d0d0c4cc1231a227c7fbb76820ad445cbad40c3ca56b3b4d0f5 tags: - latest - - speakeasy-sdk-regen-1757940178 - - 10.20.16 + - speakeasy-sdk-regen-1758786484 + - 10.21.2 targets: apideck: source: Apideck sourceNamespace: apideck - sourceRevisionDigest: sha256:b89dfeac61b6af51fea1bff368bfcd5a23f74d793f66299c9aeeaa5063dbd460 - sourceBlobDigest: sha256:8c94ca80af7cb854257519a8bf08a7a060c73248058c63f17aca9cc5208673ba + sourceRevisionDigest: sha256:0087c63890f3d406e9de4d6d1bc6009abcd5e97f21db723aa38c5c39b83a5f09 + sourceBlobDigest: sha256:69567c3d781e2d0d0c4cc1231a227c7fbb76820ad445cbad40c3ca56b3b4d0f5 codeSamplesNamespace: apideck-python-code-samples - codeSamplesRevisionDigest: sha256:cb341d086c4574b622244fea504d29462dcbc772b1d63c39541b255c1d2e55bc + codeSamplesRevisionDigest: sha256:2ca8dddbcde5a3c4a0fda1ab6b3c5ad020b527f2412ced0aca182340c9e431d8 workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index 16c37772..9ad71ea4 100644 --- a/README.md +++ b/README.md @@ -153,6 +153,7 @@ with Apideck(
The same SDK client can also be used to make asynchronous requests by importing asyncio. + ```python # Asynchronous Example from apideck_unify import Apideck @@ -389,6 +390,14 @@ with Apideck( * [get](docs/sdks/profitandlosssdk/README.md#get) - Get Profit and Loss +#### [accounting.projects](docs/sdks/projects/README.md) + +* [list](docs/sdks/projects/README.md#list) - List projects +* [create](docs/sdks/projects/README.md#create) - Create project +* [get](docs/sdks/projects/README.md#get) - Get project +* [update](docs/sdks/projects/README.md#update) - Update project +* [delete](docs/sdks/projects/README.md#delete) - Delete project + #### [accounting.purchase_orders](docs/sdks/purchaseorders/README.md) * [list](docs/sdks/purchaseorders/README.md#list) - List Purchase Orders diff --git a/RELEASES.md b/RELEASES.md index af1728a1..6e544364 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -468,4 +468,14 @@ Based on: ### Generated - [python v0.22.1] . ### Releases -- [PyPI v0.22.1] https://pypi.org/project/apideck-unify/0.22.1 - . \ No newline at end of file +- [PyPI v0.22.1] https://pypi.org/project/apideck-unify/0.22.1 - . + +## 2025-10-01 07:48:37 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.631.5 (2.716.16) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.23.0] . +### Releases +- [PyPI v0.23.0] https://pypi.org/project/apideck-unify/0.23.0 - . \ No newline at end of file diff --git a/USAGE.md b/USAGE.md index bd367cb2..20f21714 100644 --- a/USAGE.md +++ b/USAGE.md @@ -30,6 +30,7 @@ with Apideck(
The same SDK client can also be used to make asynchronous requests by importing asyncio. + ```python # Asynchronous Example from apideck_unify import Apideck diff --git a/docs/models/accountinginvoiceitemsallrequest.md b/docs/models/accountinginvoiceitemsallrequest.md index 7582435f..a07274fb 100644 --- a/docs/models/accountinginvoiceitemsallrequest.md +++ b/docs/models/accountinginvoiceitemsallrequest.md @@ -11,7 +11,7 @@ | `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `filter_` | [Optional[models.InvoiceItemsFilter]](../models/invoiceitemsfilter.md) | :heavy_minus_sign: | Apply filters | {
"name": "Widgets Large",
"type": "service"
} | +| `filter_` | [Optional[models.InvoiceItemsFilter]](../models/invoiceitemsfilter.md) | :heavy_minus_sign: | Apply filters | {
"name": "Widgets Large",
"type": "service",
"transaction_type": "sale"
} | | `sort` | [Optional[models.InvoiceItemsSort]](../models/invoiceitemssort.md) | :heavy_minus_sign: | Apply sorting | {
"by": "updated_at",
"direction": "desc"
} | | `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file diff --git a/docs/models/accountinginvoiceitemsonerequest.md b/docs/models/accountinginvoiceitemsonerequest.md index 9d5f4b33..deabc731 100644 --- a/docs/models/accountinginvoiceitemsonerequest.md +++ b/docs/models/accountinginvoiceitemsonerequest.md @@ -11,4 +11,4 @@ | `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | | `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.InvoiceItemFilter]](../models/invoiceitemfilter.md) | :heavy_minus_sign: | Apply filters | {
"type": "service"
} | \ No newline at end of file +| `filter_` | [Optional[models.InvoiceItemFilter]](../models/invoiceitemfilter.md) | :heavy_minus_sign: | Apply filters | {
"type": "service",
"transaction_type": "purchase"
} | \ No newline at end of file diff --git a/docs/models/accountinginvoicesallrequest.md b/docs/models/accountinginvoicesallrequest.md index b3ab64d6..0003b942 100644 --- a/docs/models/accountinginvoicesallrequest.md +++ b/docs/models/accountinginvoicesallrequest.md @@ -11,7 +11,7 @@ | `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `filter_` | [Optional[models.InvoicesFilter]](../models/invoicesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546"
} | +| `filter_` | [Optional[models.InvoicesFilter]](../models/invoicesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546",
"supplier_id": "123"
} | | `sort` | [Optional[models.InvoicesSort]](../models/invoicessort.md) | :heavy_minus_sign: | Apply sorting | {
"by": "updated_at",
"direction": "desc"
} | | `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file diff --git a/docs/models/accountingprojectsaddglobals.md b/docs/models/accountingprojectsaddglobals.md new file mode 100644 index 00000000..52e502f9 --- /dev/null +++ b/docs/models/accountingprojectsaddglobals.md @@ -0,0 +1,9 @@ +# AccountingProjectsAddGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | \ No newline at end of file diff --git a/docs/models/accountingprojectsaddrequest.md b/docs/models/accountingprojectsaddrequest.md new file mode 100644 index 00000000..7e574824 --- /dev/null +++ b/docs/models/accountingprojectsaddrequest.md @@ -0,0 +1,12 @@ +# AccountingProjectsAddRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `project` | [models.ProjectInput](../models/projectinput.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/accountingprojectsaddresponse.md b/docs/models/accountingprojectsaddresponse.md new file mode 100644 index 00000000..66b867bd --- /dev/null +++ b/docs/models/accountingprojectsaddresponse.md @@ -0,0 +1,10 @@ +# AccountingProjectsAddResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `create_project_response` | [Optional[models.CreateProjectResponse]](../models/createprojectresponse.md) | :heavy_minus_sign: | Projects | +| `unexpected_error_response` | [Optional[models.UnexpectedErrorResponse]](../models/unexpectederrorresponse.md) | :heavy_minus_sign: | Unexpected error | \ No newline at end of file diff --git a/docs/models/accountingprojectsallglobals.md b/docs/models/accountingprojectsallglobals.md new file mode 100644 index 00000000..ffc6ea34 --- /dev/null +++ b/docs/models/accountingprojectsallglobals.md @@ -0,0 +1,9 @@ +# AccountingProjectsAllGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | \ No newline at end of file diff --git a/docs/models/accountingprojectsallrequest.md b/docs/models/accountingprojectsallrequest.md new file mode 100644 index 00000000..a181d84f --- /dev/null +++ b/docs/models/accountingprojectsallrequest.md @@ -0,0 +1,17 @@ +# AccountingProjectsAllRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | +| `filter_` | [Optional[models.ProjectsFilter]](../models/projectsfilter.md) | :heavy_minus_sign: | Apply filters | {
"name": "Website Redesign",
"status": "active",
"customer_id": "12345",
"is_billable": true,
"is_active": true,
"updated_since": "2020-09-30T07:43:32.000Z"
} | +| `sort` | [Optional[models.ProjectsSort]](../models/projectssort.md) | :heavy_minus_sign: | Apply sorting | | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | \ No newline at end of file diff --git a/docs/models/accountingprojectsallresponse.md b/docs/models/accountingprojectsallresponse.md new file mode 100644 index 00000000..e08ce9cb --- /dev/null +++ b/docs/models/accountingprojectsallresponse.md @@ -0,0 +1,10 @@ +# AccountingProjectsAllResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `get_projects_response` | [Optional[models.GetProjectsResponse]](../models/getprojectsresponse.md) | :heavy_minus_sign: | Projects | +| `unexpected_error_response` | [Optional[models.UnexpectedErrorResponse]](../models/unexpectederrorresponse.md) | :heavy_minus_sign: | Unexpected error | \ No newline at end of file diff --git a/docs/models/accountingprojectsdeleteglobals.md b/docs/models/accountingprojectsdeleteglobals.md new file mode 100644 index 00000000..55046ce1 --- /dev/null +++ b/docs/models/accountingprojectsdeleteglobals.md @@ -0,0 +1,9 @@ +# AccountingProjectsDeleteGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | \ No newline at end of file diff --git a/docs/models/accountingprojectsdeleterequest.md b/docs/models/accountingprojectsdeleterequest.md new file mode 100644 index 00000000..202ddbb3 --- /dev/null +++ b/docs/models/accountingprojectsdeleterequest.md @@ -0,0 +1,12 @@ +# AccountingProjectsDeleteRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | \ No newline at end of file diff --git a/docs/models/accountingprojectsdeleteresponse.md b/docs/models/accountingprojectsdeleteresponse.md new file mode 100644 index 00000000..5e358550 --- /dev/null +++ b/docs/models/accountingprojectsdeleteresponse.md @@ -0,0 +1,10 @@ +# AccountingProjectsDeleteResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `delete_project_response` | [Optional[models.DeleteProjectResponse]](../models/deleteprojectresponse.md) | :heavy_minus_sign: | Projects | +| `unexpected_error_response` | [Optional[models.UnexpectedErrorResponse]](../models/unexpectederrorresponse.md) | :heavy_minus_sign: | Unexpected error | \ No newline at end of file diff --git a/docs/models/accountingprojectsoneglobals.md b/docs/models/accountingprojectsoneglobals.md new file mode 100644 index 00000000..b435db1b --- /dev/null +++ b/docs/models/accountingprojectsoneglobals.md @@ -0,0 +1,9 @@ +# AccountingProjectsOneGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | \ No newline at end of file diff --git a/docs/models/accountingprojectsonerequest.md b/docs/models/accountingprojectsonerequest.md new file mode 100644 index 00000000..eea1d690 --- /dev/null +++ b/docs/models/accountingprojectsonerequest.md @@ -0,0 +1,12 @@ +# AccountingProjectsOneRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | \ No newline at end of file diff --git a/docs/models/accountingprojectsoneresponse.md b/docs/models/accountingprojectsoneresponse.md new file mode 100644 index 00000000..06e0d64f --- /dev/null +++ b/docs/models/accountingprojectsoneresponse.md @@ -0,0 +1,10 @@ +# AccountingProjectsOneResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `get_project_response` | [Optional[models.GetProjectResponse]](../models/getprojectresponse.md) | :heavy_minus_sign: | Projects | +| `unexpected_error_response` | [Optional[models.UnexpectedErrorResponse]](../models/unexpectederrorresponse.md) | :heavy_minus_sign: | Unexpected error | \ No newline at end of file diff --git a/docs/models/accountingprojectsupdateglobals.md b/docs/models/accountingprojectsupdateglobals.md new file mode 100644 index 00000000..0e7c57cf --- /dev/null +++ b/docs/models/accountingprojectsupdateglobals.md @@ -0,0 +1,9 @@ +# AccountingProjectsUpdateGlobals + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | \ No newline at end of file diff --git a/docs/models/accountingprojectsupdaterequest.md b/docs/models/accountingprojectsupdaterequest.md new file mode 100644 index 00000000..ab4f0cc7 --- /dev/null +++ b/docs/models/accountingprojectsupdaterequest.md @@ -0,0 +1,13 @@ +# AccountingProjectsUpdateRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `project` | [models.ProjectInput](../models/projectinput.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/accountingprojectsupdateresponse.md b/docs/models/accountingprojectsupdateresponse.md new file mode 100644 index 00000000..e4041120 --- /dev/null +++ b/docs/models/accountingprojectsupdateresponse.md @@ -0,0 +1,10 @@ +# AccountingProjectsUpdateResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `update_project_response` | [Optional[models.UpdateProjectResponse]](../models/updateprojectresponse.md) | :heavy_minus_sign: | Projects | +| `unexpected_error_response` | [Optional[models.UnexpectedErrorResponse]](../models/unexpectederrorresponse.md) | :heavy_minus_sign: | Unexpected error | \ No newline at end of file diff --git a/docs/models/address.md b/docs/models/address.md index 829d095f..94bfd847 100644 --- a/docs/models/address.md +++ b/docs/models/address.md @@ -13,6 +13,7 @@ | `line2` | *OptionalNullable[str]* | :heavy_minus_sign: | Line 2 of the address | apt # | | `line3` | *OptionalNullable[str]* | :heavy_minus_sign: | Line 3 of the address | Suite # | | `line4` | *OptionalNullable[str]* | :heavy_minus_sign: | Line 4 of the address | delivery instructions | +| `line5` | *OptionalNullable[str]* | :heavy_minus_sign: | Line 5 of the address | Attention: Finance Dept | | `street_number` | *OptionalNullable[str]* | :heavy_minus_sign: | Street number | 25 | | `city` | *OptionalNullable[str]* | :heavy_minus_sign: | Name of city. | San Francisco | | `state` | *OptionalNullable[str]* | :heavy_minus_sign: | Name of state | CA | diff --git a/docs/models/balancebytransaction.md b/docs/models/balancebytransaction.md index 9f57e6b4..0197d9f6 100644 --- a/docs/models/balancebytransaction.md +++ b/docs/models/balancebytransaction.md @@ -3,12 +3,12 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | -| `transaction_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the transaction. | INV-1001 | -| `transaction_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Date of the transaction. | 2024-01-15 | -| `transaction_type` | [Optional[models.TransactionType]](../models/transactiontype.md) | :heavy_minus_sign: | Type of the transaction. | invoice | -| `due_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Due date of the transaction. | 2024-02-15 | -| `original_amount` | *Optional[float]* | :heavy_minus_sign: | Original amount of the transaction. | 1000 | -| `outstanding_balance` | *Optional[float]* | :heavy_minus_sign: | Outstanding balance of the transaction. | 800 | -| `transaction_number` | *Optional[str]* | :heavy_minus_sign: | Transaction number of the transaction. | INV-1001 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `transaction_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the transaction. | INV-1001 | +| `transaction_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Date of the transaction. | 2024-01-15 | +| `transaction_type` | [Optional[models.BalanceByTransactionTransactionType]](../models/balancebytransactiontransactiontype.md) | :heavy_minus_sign: | Type of the transaction. | invoice | +| `due_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Due date of the transaction. | 2024-02-15 | +| `original_amount` | *Optional[float]* | :heavy_minus_sign: | Original amount of the transaction. | 1000 | +| `outstanding_balance` | *Optional[float]* | :heavy_minus_sign: | Outstanding balance of the transaction. | 800 | +| `transaction_number` | *Optional[str]* | :heavy_minus_sign: | Transaction number of the transaction. | INV-1001 | \ No newline at end of file diff --git a/docs/models/balancebytransactiontransactiontype.md b/docs/models/balancebytransactiontransactiontype.md new file mode 100644 index 00000000..9f9c5894 --- /dev/null +++ b/docs/models/balancebytransactiontransactiontype.md @@ -0,0 +1,14 @@ +# BalanceByTransactionTransactionType + +Type of the transaction. + + +## Values + +| Name | Value | +| -------------- | -------------- | +| `INVOICE` | invoice | +| `CREDIT_NOTE` | credit_note | +| `BILL` | bill | +| `PAYMENT` | payment | +| `BILL_PAYMENT` | bill_payment | \ No newline at end of file diff --git a/docs/models/billingmethod.md b/docs/models/billingmethod.md new file mode 100644 index 00000000..e36641d9 --- /dev/null +++ b/docs/models/billingmethod.md @@ -0,0 +1,14 @@ +# BillingMethod + +Method used for billing this project + + +## Values + +| Name | Value | +| -------------------- | -------------------- | +| `FIXED_PRICE` | fixed_price | +| `TIME_AND_MATERIALS` | time_and_materials | +| `MILESTONE_BASED` | milestone_based | +| `RETAINER` | retainer | +| `NON_BILLABLE` | non_billable | \ No newline at end of file diff --git a/docs/models/categoriesfiltertype.md b/docs/models/categoriesfiltertype.md index db485144..b38c34bd 100644 --- a/docs/models/categoriesfiltertype.md +++ b/docs/models/categoriesfiltertype.md @@ -9,4 +9,5 @@ The type of the category. | ---------- | ---------- | | `SUPPLIER` | supplier | | `EXPENSE` | expense | -| `REVENUE` | revenue | \ No newline at end of file +| `REVENUE` | revenue | +| `CUSTOMER` | customer | \ No newline at end of file diff --git a/docs/models/categorytype.md b/docs/models/categorytype.md index 28a41347..eac67f1a 100644 --- a/docs/models/categorytype.md +++ b/docs/models/categorytype.md @@ -9,4 +9,5 @@ The type of the category. | ---------- | ---------- | | `SUPPLIER` | supplier | | `EXPENSE` | expense | -| `REVENUE` | revenue | \ No newline at end of file +| `REVENUE` | revenue | +| `CUSTOMER` | customer | \ No newline at end of file diff --git a/docs/models/createprojectresponse.md b/docs/models/createprojectresponse.md new file mode 100644 index 00000000..0b5acd28 --- /dev/null +++ b/docs/models/createprojectresponse.md @@ -0,0 +1,15 @@ +# CreateProjectResponse + +Projects + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `status_code` | *int* | :heavy_check_mark: | HTTP Response Status Code | 200 | +| `status` | *str* | :heavy_check_mark: | HTTP Response Status | OK | +| `service` | *str* | :heavy_check_mark: | Apideck ID of service provider | quickbooks | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | Projects | +| `operation` | *str* | :heavy_check_mark: | Operation performed | add | +| `data` | [models.UnifiedID](../models/unifiedid.md) | :heavy_check_mark: | A object containing a unique identifier for the resource that was created, updated, or deleted. | | \ No newline at end of file diff --git a/docs/models/customer.md b/docs/models/customer.md index 0465938a..93b242e1 100644 --- a/docs/models/customer.md +++ b/docs/models/customer.md @@ -11,6 +11,7 @@ | `display_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Display name | Windsurf Shop | | `company_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the company. | SpaceX | | `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `customer_category` | *OptionalNullable[str]* | :heavy_minus_sign: | The category/type of the customer | Insurance | | `title` | *OptionalNullable[str]* | :heavy_minus_sign: | The job title of the person. | CEO | | `first_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The first name of the person. | Elon | | `middle_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Middle name of the person. | D. | @@ -31,6 +32,7 @@ | `parent` | [OptionalNullable[models.LinkedParentCustomer]](../models/linkedparentcustomer.md) | :heavy_minus_sign: | The parent customer this entity is linked to. | | | `status` | [OptionalNullable[models.CustomerStatusStatus]](../models/customerstatusstatus.md) | :heavy_minus_sign: | Customer status | active | | `payment_method` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment method used for the transaction, such as cash, credit card, bank transfer, or check | cash | +| `terms` | *OptionalNullable[str]* | :heavy_minus_sign: | Terms of payment. | Net 30 days | | `channel` | *OptionalNullable[str]* | :heavy_minus_sign: | The channel through which the transaction is processed. | email | | `custom_fields` | List[[models.CustomField](../models/customfield.md)] | :heavy_minus_sign: | N/A | | | `custom_mappings` | Dict[str, *Any*] | :heavy_minus_sign: | When custom mappings are configured on the resource, the result is included here. | | diff --git a/docs/models/customerinput.md b/docs/models/customerinput.md index f87dcb19..54c97991 100644 --- a/docs/models/customerinput.md +++ b/docs/models/customerinput.md @@ -9,6 +9,7 @@ | `display_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Display name | Windsurf Shop | | `company_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the company. | SpaceX | | `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `customer_category` | *OptionalNullable[str]* | :heavy_minus_sign: | The category/type of the customer | Insurance | | `title` | *OptionalNullable[str]* | :heavy_minus_sign: | The job title of the person. | CEO | | `first_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The first name of the person. | Elon | | `middle_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Middle name of the person. | D. | @@ -29,6 +30,7 @@ | `parent` | [OptionalNullable[models.LinkedParentCustomer]](../models/linkedparentcustomer.md) | :heavy_minus_sign: | The parent customer this entity is linked to. | | | `status` | [OptionalNullable[models.CustomerStatusStatus]](../models/customerstatusstatus.md) | :heavy_minus_sign: | Customer status | active | | `payment_method` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment method used for the transaction, such as cash, credit card, bank transfer, or check | cash | +| `terms` | *OptionalNullable[str]* | :heavy_minus_sign: | Terms of payment. | Net 30 days | | `channel` | *OptionalNullable[str]* | :heavy_minus_sign: | The channel through which the transaction is processed. | email | | `custom_fields` | List[[models.CustomField](../models/customfield.md)] | :heavy_minus_sign: | N/A | | | `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | diff --git a/docs/models/deleteprojectresponse.md b/docs/models/deleteprojectresponse.md new file mode 100644 index 00000000..303a59ae --- /dev/null +++ b/docs/models/deleteprojectresponse.md @@ -0,0 +1,15 @@ +# DeleteProjectResponse + +Projects + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `status_code` | *int* | :heavy_check_mark: | HTTP Response Status Code | 200 | +| `status` | *str* | :heavy_check_mark: | HTTP Response Status | OK | +| `service` | *str* | :heavy_check_mark: | Apideck ID of service provider | quickbooks | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | Projects | +| `operation` | *str* | :heavy_check_mark: | Operation performed | delete | +| `data` | [models.UnifiedID](../models/unifiedid.md) | :heavy_check_mark: | A object containing a unique identifier for the resource that was created, updated, or deleted. | | \ No newline at end of file diff --git a/docs/models/getprojectresponse.md b/docs/models/getprojectresponse.md new file mode 100644 index 00000000..a8d2bf5e --- /dev/null +++ b/docs/models/getprojectresponse.md @@ -0,0 +1,15 @@ +# GetProjectResponse + +Projects + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | +| `status_code` | *int* | :heavy_check_mark: | HTTP Response Status Code | 200 | +| `status` | *str* | :heavy_check_mark: | HTTP Response Status | OK | +| `service` | *str* | :heavy_check_mark: | Apideck ID of service provider | quickbooks | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | Projects | +| `operation` | *str* | :heavy_check_mark: | Operation performed | one | +| `data` | [models.Project](../models/project.md) | :heavy_check_mark: | N/A | | \ No newline at end of file diff --git a/docs/models/getprojectsresponse.md b/docs/models/getprojectsresponse.md new file mode 100644 index 00000000..90153165 --- /dev/null +++ b/docs/models/getprojectsresponse.md @@ -0,0 +1,17 @@ +# GetProjectsResponse + +Projects + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | +| `status_code` | *int* | :heavy_check_mark: | HTTP Response Status Code | 200 | +| `status` | *str* | :heavy_check_mark: | HTTP Response Status | OK | +| `service` | *str* | :heavy_check_mark: | Apideck ID of service provider | quickbooks | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | Projects | +| `operation` | *str* | :heavy_check_mark: | Operation performed | all | +| `data` | List[[models.Project](../models/project.md)] | :heavy_check_mark: | N/A | | +| `meta` | [Optional[models.Meta]](../models/meta.md) | :heavy_minus_sign: | Response metadata | | +| `links` | [Optional[models.Links]](../models/links.md) | :heavy_minus_sign: | Links to navigate to previous or next pages through the API | | \ No newline at end of file diff --git a/docs/models/invoiceitemfilter.md b/docs/models/invoiceitemfilter.md index 161299f5..1fad1395 100644 --- a/docs/models/invoiceitemfilter.md +++ b/docs/models/invoiceitemfilter.md @@ -5,4 +5,5 @@ | Field | Type | Required | Description | Example | | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| `type` | [OptionalNullable[models.InvoiceItemFilterInvoiceItemType]](../models/invoiceitemfilterinvoiceitemtype.md) | :heavy_minus_sign: | The type of invoice item, indicating whether it is an inventory item, a service, or another type. | service | \ No newline at end of file +| `type` | [OptionalNullable[models.InvoiceItemFilterInvoiceItemType]](../models/invoiceitemfilterinvoiceitemtype.md) | :heavy_minus_sign: | The type of invoice item, indicating whether it is an inventory item, a service, or another type. | service | +| `transaction_type` | [OptionalNullable[models.InvoiceItemFilterTransactionType]](../models/invoiceitemfiltertransactiontype.md) | :heavy_minus_sign: | The kind of transaction, indicating whether it is a sales transaction or a purchase transaction. | purchase | \ No newline at end of file diff --git a/docs/models/invoiceitemfiltertransactiontype.md b/docs/models/invoiceitemfiltertransactiontype.md new file mode 100644 index 00000000..bba2b3d0 --- /dev/null +++ b/docs/models/invoiceitemfiltertransactiontype.md @@ -0,0 +1,11 @@ +# InvoiceItemFilterTransactionType + +The kind of transaction, indicating whether it is a sales transaction or a purchase transaction. + + +## Values + +| Name | Value | +| ---------- | ---------- | +| `SALE` | sale | +| `PURCHASE` | purchase | \ No newline at end of file diff --git a/docs/models/invoiceitemsfilter.md b/docs/models/invoiceitemsfilter.md index 7c9883b9..a8b44255 100644 --- a/docs/models/invoiceitemsfilter.md +++ b/docs/models/invoiceitemsfilter.md @@ -6,4 +6,5 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | `name` | *Optional[str]* | :heavy_minus_sign: | Name of Invoice Items to search for | Widgets Large | -| `type` | [OptionalNullable[models.InvoiceItemType]](../models/invoiceitemtype.md) | :heavy_minus_sign: | The type of invoice item, indicating whether it is an inventory item, a service, or another type. | service | \ No newline at end of file +| `type` | [OptionalNullable[models.InvoiceItemType]](../models/invoiceitemtype.md) | :heavy_minus_sign: | The type of invoice item, indicating whether it is an inventory item, a service, or another type. | service | +| `transaction_type` | [OptionalNullable[models.TransactionType]](../models/transactiontype.md) | :heavy_minus_sign: | The kind of transaction, indicating whether it is a sales transaction or a purchase transaction. | sale | \ No newline at end of file diff --git a/docs/models/invoicesfilter.md b/docs/models/invoicesfilter.md index 6498a0ad..ac780d18 100644 --- a/docs/models/invoicesfilter.md +++ b/docs/models/invoicesfilter.md @@ -7,4 +7,5 @@ | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | | `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | | `created_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `number` | *Optional[str]* | :heavy_minus_sign: | Invoice number to search for | OIT00546 | \ No newline at end of file +| `number` | *Optional[str]* | :heavy_minus_sign: | Invoice number to search for | OIT00546 | +| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | Supplier ID to filter invoices by | 123 | \ No newline at end of file diff --git a/docs/models/journalentry.md b/docs/models/journalentry.md index 85327445..b1655afe 100644 --- a/docs/models/journalentry.md +++ b/docs/models/journalentry.md @@ -6,6 +6,7 @@ | Field | Type | Required | Description | Example | | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | | `id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for an object. | 12345 | +| `downstream_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The third-party API ID of original entity | 12345 | | `title` | *OptionalNullable[str]* | :heavy_minus_sign: | Journal entry title | Purchase Invoice-Inventory (USD): 2019/02/01 Batch Summary Entry | | `currency_rate` | *OptionalNullable[float]* | :heavy_minus_sign: | Currency Exchange Rate at the time entity was recorded/generated. | 0.69 | | `currency` | [OptionalNullable[models.Currency]](../models/currency.md) | :heavy_minus_sign: | Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). | USD | @@ -20,6 +21,9 @@ | `number` | *OptionalNullable[str]* | :heavy_minus_sign: | Journal entry number. | OIT00546 | | `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | | `accounting_period` | *OptionalNullable[str]* | :heavy_minus_sign: | Accounting period | 01-24 | +| `tax_inclusive` | *OptionalNullable[bool]* | :heavy_minus_sign: | Amounts are including tax | true | +| `source_type` | *OptionalNullable[str]* | :heavy_minus_sign: | The source type of the journal entry | manual | +| `source_id` | *OptionalNullable[str]* | :heavy_minus_sign: | A unique identifier for the source of the journal entry | 12345 | | `custom_mappings` | Dict[str, *Any*] | :heavy_minus_sign: | When custom mappings are configured on the resource, the result is included here. | | | `updated_by` | *OptionalNullable[str]* | :heavy_minus_sign: | The user who last updated the object. | 12345 | | `created_by` | *OptionalNullable[str]* | :heavy_minus_sign: | The user who created the object. | 12345 | diff --git a/docs/models/journalentryinput.md b/docs/models/journalentryinput.md index 015be75b..9d0f6b48 100644 --- a/docs/models/journalentryinput.md +++ b/docs/models/journalentryinput.md @@ -19,6 +19,9 @@ | `number` | *OptionalNullable[str]* | :heavy_minus_sign: | Journal entry number. | OIT00546 | | `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | | `accounting_period` | *OptionalNullable[str]* | :heavy_minus_sign: | Accounting period | 01-24 | +| `tax_inclusive` | *OptionalNullable[bool]* | :heavy_minus_sign: | Amounts are including tax | true | +| `source_type` | *OptionalNullable[str]* | :heavy_minus_sign: | The source type of the journal entry | manual | +| `source_id` | *OptionalNullable[str]* | :heavy_minus_sign: | A unique identifier for the source of the journal entry | 12345 | | `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | | `custom_fields` | List[[models.CustomField](../models/customfield.md)] | :heavy_minus_sign: | N/A | | | `pass_through` | List[[models.PassThroughBody](../models/passthroughbody.md)] | :heavy_minus_sign: | The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. | | \ No newline at end of file diff --git a/docs/models/parentproject.md b/docs/models/parentproject.md new file mode 100644 index 00000000..9977d71a --- /dev/null +++ b/docs/models/parentproject.md @@ -0,0 +1,11 @@ +# ParentProject + +Parent project if this is a subproject + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | ---------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the parent project | PROJ-PARENT-001 | +| `name` | *Optional[str]* | :heavy_minus_sign: | Name of the parent project | Company Website Overhaul | \ No newline at end of file diff --git a/docs/models/priority.md b/docs/models/priority.md index 168b0792..50ebcd97 100644 --- a/docs/models/priority.md +++ b/docs/models/priority.md @@ -1,13 +1,13 @@ # Priority -Priority of the ticket +Priority level of the project ## Values -| Name | Value | -| -------- | -------- | -| `LOW` | low | -| `NORMAL` | normal | -| `HIGH` | high | -| `URGENT` | urgent | \ No newline at end of file +| Name | Value | +| ---------- | ---------- | +| `LOW` | low | +| `MEDIUM` | medium | +| `HIGH` | high | +| `CRITICAL` | critical | \ No newline at end of file diff --git a/docs/models/project.md b/docs/models/project.md new file mode 100644 index 00000000..4b7abcad --- /dev/null +++ b/docs/models/project.md @@ -0,0 +1,49 @@ +# Project + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for an object. | 12345 | +| `downstream_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The third-party API ID of original entity | 12345 | +| `name` | *str* | :heavy_check_mark: | Name of the project | Website Redesign Project | +| `display_id` | *OptionalNullable[str]* | :heavy_minus_sign: | User-friendly project identifier | PROJ-001 | +| `reference_id` | *OptionalNullable[str]* | :heavy_minus_sign: | External reference identifier for the project | WD-REF-2024-001 | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Detailed description of the project | Complete redesign of the company website including new branding and improved user experience | +| `status` | [OptionalNullable[models.ProjectProjectStatus]](../models/projectprojectstatus.md) | :heavy_minus_sign: | Current status of the project | active | +| `project_type` | [OptionalNullable[models.ProjectType]](../models/projecttype.md) | :heavy_minus_sign: | Type or category of the project | client_project | +| `priority` | [OptionalNullable[models.Priority]](../models/priority.md) | :heavy_minus_sign: | Priority level of the project | high | +| `completion_percentage` | *OptionalNullable[float]* | :heavy_minus_sign: | Percentage of project completion (0-100) | 75.5 | +| `start_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Start date of the project | 2024-01-15 | +| `end_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Expected or actual end date of the project | 2024-06-30 | +| `customer` | [OptionalNullable[models.LinkedCustomer]](../models/linkedcustomer.md) | :heavy_minus_sign: | The customer this entity is linked to. | | +| `department` | [OptionalNullable[models.ProjectDepartment]](../models/projectdepartment.md) | :heavy_minus_sign: | Department or organizational unit associated with the project | | +| `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `owner_id` | *OptionalNullable[str]* | :heavy_minus_sign: | ID of the user who owns/manages this project | 12345 | +| `parent_project` | [OptionalNullable[models.ParentProject]](../models/parentproject.md) | :heavy_minus_sign: | Parent project if this is a subproject | | +| `currency` | [OptionalNullable[models.Currency]](../models/currency.md) | :heavy_minus_sign: | Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). | USD | +| `budget_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted amount for the project | 50000 | +| `approved_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Approved budget amount for the project | 48000 | +| `actual_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Total actual amount spent on the project | 45250.75 | +| `budget_hours` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted hours for the project | 400 | +| `actual_hours` | *OptionalNullable[float]* | :heavy_minus_sign: | Total actual hours worked on the project | 385.5 | +| `hourly_rate` | *OptionalNullable[float]* | :heavy_minus_sign: | Default hourly rate for project work | 125 | +| `billing_method` | [OptionalNullable[models.BillingMethod]](../models/billingmethod.md) | :heavy_minus_sign: | Method used for billing this project | time_and_materials | +| `is_billable` | *OptionalNullable[bool]* | :heavy_minus_sign: | Indicates if the project is billable to the customer | true | +| `phase` | [OptionalNullable[models.ProjectPhase]](../models/projectphase.md) | :heavy_minus_sign: | Current phase of the project lifecycle | execution | +| `tax_rate` | [Optional[models.LinkedTaxRate]](../models/linkedtaxrate.md) | :heavy_minus_sign: | N/A | | +| `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | +| `tags` | List[*str*] | :heavy_minus_sign: | Tags associated with the project | [
"website",
"redesign",
"urgent"
] | +| `notes` | *OptionalNullable[str]* | :heavy_minus_sign: | Additional notes about the project | Client has requested modern design with mobile-first approach | +| `contract_number` | *OptionalNullable[str]* | :heavy_minus_sign: | Contract or agreement number associated with the project | CNT-2024-001 | +| `profit_margin` | *OptionalNullable[float]* | :heavy_minus_sign: | Expected profit margin percentage for the project | 15.5 | +| `schedule_status` | [OptionalNullable[models.ScheduleStatus]](../models/schedulestatus.md) | :heavy_minus_sign: | Current status of project schedule compared to plan | on_schedule | +| `addresses` | List[[models.Address](../models/address.md)] | :heavy_minus_sign: | An array of addresses associated with the project (billing, job site, etc.) | | +| `team_size` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of team members assigned to the project | 8 | +| `custom_fields` | List[[models.CustomField](../models/customfield.md)] | :heavy_minus_sign: | N/A | | +| `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | +| `updated_by` | *OptionalNullable[str]* | :heavy_minus_sign: | The user who last updated the object. | 12345 | +| `created_by` | *OptionalNullable[str]* | :heavy_minus_sign: | The user who created the object. | 12345 | +| `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The date and time when the object was created. | 2020-09-30T07:43:32.000Z | +| `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The date and time when the object was last updated. | 2020-09-30T07:43:32.000Z | \ No newline at end of file diff --git a/docs/models/projectdepartment.md b/docs/models/projectdepartment.md new file mode 100644 index 00000000..beeec276 --- /dev/null +++ b/docs/models/projectdepartment.md @@ -0,0 +1,11 @@ +# ProjectDepartment + +Department or organizational unit associated with the project + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the department | DEPT-001 | +| `name` | *Optional[str]* | :heavy_minus_sign: | Name of the department | Marketing | \ No newline at end of file diff --git a/docs/models/projectinput.md b/docs/models/projectinput.md new file mode 100644 index 00000000..6ca90e87 --- /dev/null +++ b/docs/models/projectinput.md @@ -0,0 +1,41 @@ +# ProjectInput + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | +| `name` | *str* | :heavy_check_mark: | Name of the project | Website Redesign Project | +| `display_id` | *OptionalNullable[str]* | :heavy_minus_sign: | User-friendly project identifier | PROJ-001 | +| `reference_id` | *OptionalNullable[str]* | :heavy_minus_sign: | External reference identifier for the project | WD-REF-2024-001 | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Detailed description of the project | Complete redesign of the company website including new branding and improved user experience | +| `status` | [OptionalNullable[models.ProjectProjectStatus]](../models/projectprojectstatus.md) | :heavy_minus_sign: | Current status of the project | active | +| `project_type` | [OptionalNullable[models.ProjectType]](../models/projecttype.md) | :heavy_minus_sign: | Type or category of the project | client_project | +| `priority` | [OptionalNullable[models.Priority]](../models/priority.md) | :heavy_minus_sign: | Priority level of the project | high | +| `completion_percentage` | *OptionalNullable[float]* | :heavy_minus_sign: | Percentage of project completion (0-100) | 75.5 | +| `start_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Start date of the project | 2024-01-15 | +| `end_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Expected or actual end date of the project | 2024-06-30 | +| `customer` | [OptionalNullable[models.LinkedCustomerInput]](../models/linkedcustomerinput.md) | :heavy_minus_sign: | The customer this entity is linked to. | | +| `department` | [OptionalNullable[models.ProjectDepartment]](../models/projectdepartment.md) | :heavy_minus_sign: | Department or organizational unit associated with the project | | +| `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `owner_id` | *OptionalNullable[str]* | :heavy_minus_sign: | ID of the user who owns/manages this project | 12345 | +| `parent_project` | [OptionalNullable[models.ParentProject]](../models/parentproject.md) | :heavy_minus_sign: | Parent project if this is a subproject | | +| `currency` | [OptionalNullable[models.Currency]](../models/currency.md) | :heavy_minus_sign: | Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). | USD | +| `budget_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted amount for the project | 50000 | +| `approved_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Approved budget amount for the project | 48000 | +| `budget_hours` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted hours for the project | 400 | +| `hourly_rate` | *OptionalNullable[float]* | :heavy_minus_sign: | Default hourly rate for project work | 125 | +| `billing_method` | [OptionalNullable[models.BillingMethod]](../models/billingmethod.md) | :heavy_minus_sign: | Method used for billing this project | time_and_materials | +| `is_billable` | *OptionalNullable[bool]* | :heavy_minus_sign: | Indicates if the project is billable to the customer | true | +| `phase` | [OptionalNullable[models.ProjectPhase]](../models/projectphase.md) | :heavy_minus_sign: | Current phase of the project lifecycle | execution | +| `tax_rate` | [Optional[models.LinkedTaxRateInput]](../models/linkedtaxrateinput.md) | :heavy_minus_sign: | N/A | | +| `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | +| `tags` | List[*str*] | :heavy_minus_sign: | Tags associated with the project | [
"website",
"redesign",
"urgent"
] | +| `notes` | *OptionalNullable[str]* | :heavy_minus_sign: | Additional notes about the project | Client has requested modern design with mobile-first approach | +| `contract_number` | *OptionalNullable[str]* | :heavy_minus_sign: | Contract or agreement number associated with the project | CNT-2024-001 | +| `profit_margin` | *OptionalNullable[float]* | :heavy_minus_sign: | Expected profit margin percentage for the project | 15.5 | +| `schedule_status` | [OptionalNullable[models.ScheduleStatus]](../models/schedulestatus.md) | :heavy_minus_sign: | Current status of project schedule compared to plan | on_schedule | +| `addresses` | List[[models.Address](../models/address.md)] | :heavy_minus_sign: | An array of addresses associated with the project (billing, job site, etc.) | | +| `team_size` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of team members assigned to the project | 8 | +| `custom_fields` | List[[models.CustomField](../models/customfield.md)] | :heavy_minus_sign: | N/A | | +| `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | \ No newline at end of file diff --git a/docs/models/projectphase.md b/docs/models/projectphase.md new file mode 100644 index 00000000..544236ab --- /dev/null +++ b/docs/models/projectphase.md @@ -0,0 +1,15 @@ +# ProjectPhase + +Current phase of the project lifecycle + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `INITIATION` | initiation | +| `PLANNING` | planning | +| `EXECUTION` | execution | +| `MONITORING` | monitoring | +| `CLOSURE` | closure | +| `OTHER` | other | \ No newline at end of file diff --git a/docs/models/projectprojectstatus.md b/docs/models/projectprojectstatus.md new file mode 100644 index 00000000..48e319d6 --- /dev/null +++ b/docs/models/projectprojectstatus.md @@ -0,0 +1,15 @@ +# ProjectProjectStatus + +Current status of the project + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `ACTIVE` | active | +| `COMPLETED` | completed | +| `ON_HOLD` | on_hold | +| `CANCELLED` | cancelled | +| `DRAFT` | draft | +| `OTHER` | other | \ No newline at end of file diff --git a/docs/models/projectsfilter.md b/docs/models/projectsfilter.md new file mode 100644 index 00000000..8f45ab5e --- /dev/null +++ b/docs/models/projectsfilter.md @@ -0,0 +1,11 @@ +# ProjectsFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `name` | *Optional[str]* | :heavy_minus_sign: | Name of project to search for | Website Redesign | +| `status` | [Optional[models.ProjectStatus]](../models/projectstatus.md) | :heavy_minus_sign: | Status of projects to filter by | active | +| `customer_id` | *Optional[str]* | :heavy_minus_sign: | Filter projects by customer ID | 12345 | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Return projects modified after this date | 2020-09-30T07:43:32.000Z | \ No newline at end of file diff --git a/docs/models/projectssort.md b/docs/models/projectssort.md new file mode 100644 index 00000000..e8df8e85 --- /dev/null +++ b/docs/models/projectssort.md @@ -0,0 +1,9 @@ +# ProjectsSort + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `by` | [Optional[models.ProjectsSortSortBy]](../models/projectssortsortby.md) | :heavy_minus_sign: | The field to sort by | name | +| `direction` | [Optional[models.SortDirection]](../models/sortdirection.md) | :heavy_minus_sign: | The direction in which to sort the results | | \ No newline at end of file diff --git a/docs/models/projectssortsortby.md b/docs/models/projectssortsortby.md new file mode 100644 index 00000000..7f473715 --- /dev/null +++ b/docs/models/projectssortsortby.md @@ -0,0 +1,17 @@ +# ProjectsSortSortBy + +The field to sort by + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `NAME` | name | +| `STATUS` | status | +| `START_DATE` | start_date | +| `END_DATE` | end_date | +| `BUDGET_AMOUNT` | budget_amount | +| `ACTUAL_AMOUNT` | actual_amount | +| `CREATED_AT` | created_at | +| `UPDATED_AT` | updated_at | \ No newline at end of file diff --git a/docs/models/projectstatus.md b/docs/models/projectstatus.md new file mode 100644 index 00000000..1358b3d7 --- /dev/null +++ b/docs/models/projectstatus.md @@ -0,0 +1,14 @@ +# ProjectStatus + +Status of projects to filter by + + +## Values + +| Name | Value | +| ----------- | ----------- | +| `ACTIVE` | active | +| `COMPLETED` | completed | +| `ON_HOLD` | on_hold | +| `CANCELLED` | cancelled | +| `DRAFT` | draft | \ No newline at end of file diff --git a/docs/models/projecttype.md b/docs/models/projecttype.md new file mode 100644 index 00000000..6c168375 --- /dev/null +++ b/docs/models/projecttype.md @@ -0,0 +1,15 @@ +# ProjectType + +Type or category of the project + + +## Values + +| Name | Value | +| ---------------------- | ---------------------- | +| `CLIENT_PROJECT` | client_project | +| `INTERNAL_PROJECT` | internal_project | +| `MAINTENANCE` | maintenance | +| `RESEARCH_DEVELOPMENT` | research_development | +| `TRAINING` | training | +| `OTHER` | other | \ No newline at end of file diff --git a/docs/models/schedulestatus.md b/docs/models/schedulestatus.md new file mode 100644 index 00000000..85f6323b --- /dev/null +++ b/docs/models/schedulestatus.md @@ -0,0 +1,13 @@ +# ScheduleStatus + +Current status of project schedule compared to plan + + +## Values + +| Name | Value | +| ------------------- | ------------------- | +| `AHEAD_OF_SCHEDULE` | ahead_of_schedule | +| `ON_SCHEDULE` | on_schedule | +| `BEHIND_SCHEDULE` | behind_schedule | +| `CRITICAL_DELAY` | critical_delay | \ No newline at end of file diff --git a/docs/models/ticket.md b/docs/models/ticket.md index 31d4b6c2..bb733d71 100644 --- a/docs/models/ticket.md +++ b/docs/models/ticket.md @@ -12,7 +12,7 @@ | `subject` | *OptionalNullable[str]* | :heavy_minus_sign: | Subject of the ticket | Technical Support Request | | `description` | *OptionalNullable[str]* | :heavy_minus_sign: | The ticket's description. HTML version of description is mapped if supported by the third-party platform | I am facing issues with my internet connection | | `status` | *OptionalNullable[str]* | :heavy_minus_sign: | The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through. | open | -| `priority` | [OptionalNullable[models.Priority]](../models/priority.md) | :heavy_minus_sign: | Priority of the ticket | high | +| `priority` | [OptionalNullable[models.TicketPriority]](../models/ticketpriority.md) | :heavy_minus_sign: | Priority of the ticket | high | | `assignees` | List[[models.Assignee](../models/assignee.md)] | :heavy_minus_sign: | N/A | | | `updated_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The date and time when the object was last updated. | 2020-09-30T07:43:32.000Z | | `created_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The date and time when the object was created. | 2020-09-30T07:43:32.000Z | diff --git a/docs/models/ticketinput.md b/docs/models/ticketinput.md index f5dd6d0b..b8e25204 100644 --- a/docs/models/ticketinput.md +++ b/docs/models/ticketinput.md @@ -10,7 +10,7 @@ | `subject` | *OptionalNullable[str]* | :heavy_minus_sign: | Subject of the ticket | Technical Support Request | | `description` | *OptionalNullable[str]* | :heavy_minus_sign: | The ticket's description. HTML version of description is mapped if supported by the third-party platform | I am facing issues with my internet connection | | `status` | *OptionalNullable[str]* | :heavy_minus_sign: | The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through. | open | -| `priority` | [OptionalNullable[models.Priority]](../models/priority.md) | :heavy_minus_sign: | Priority of the ticket | high | +| `priority` | [OptionalNullable[models.TicketPriority]](../models/ticketpriority.md) | :heavy_minus_sign: | Priority of the ticket | high | | `assignees` | List[[models.AssigneeInput](../models/assigneeinput.md)] | :heavy_minus_sign: | N/A | | | `due_date` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Due date of the ticket | 2020-09-30T07:43:32.000Z | | `tags` | List[[models.CollectionTagInput](../models/collectiontaginput.md)] | :heavy_minus_sign: | N/A | | diff --git a/docs/models/ticketpriority.md b/docs/models/ticketpriority.md new file mode 100644 index 00000000..236d0f43 --- /dev/null +++ b/docs/models/ticketpriority.md @@ -0,0 +1,13 @@ +# TicketPriority + +Priority of the ticket + + +## Values + +| Name | Value | +| -------- | -------- | +| `LOW` | low | +| `NORMAL` | normal | +| `HIGH` | high | +| `URGENT` | urgent | \ No newline at end of file diff --git a/docs/models/transactiontype.md b/docs/models/transactiontype.md index 9304f181..8f7e57b8 100644 --- a/docs/models/transactiontype.md +++ b/docs/models/transactiontype.md @@ -1,14 +1,11 @@ # TransactionType -Type of the transaction. +The kind of transaction, indicating whether it is a sales transaction or a purchase transaction. ## Values -| Name | Value | -| -------------- | -------------- | -| `INVOICE` | invoice | -| `CREDIT_NOTE` | credit_note | -| `BILL` | bill | -| `PAYMENT` | payment | -| `BILL_PAYMENT` | bill_payment | \ No newline at end of file +| Name | Value | +| ---------- | ---------- | +| `SALE` | sale | +| `PURCHASE` | purchase | \ No newline at end of file diff --git a/docs/models/updateprojectresponse.md b/docs/models/updateprojectresponse.md new file mode 100644 index 00000000..531bd475 --- /dev/null +++ b/docs/models/updateprojectresponse.md @@ -0,0 +1,15 @@ +# UpdateProjectResponse + +Projects + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `status_code` | *int* | :heavy_check_mark: | HTTP Response Status Code | 200 | +| `status` | *str* | :heavy_check_mark: | HTTP Response Status | OK | +| `service` | *str* | :heavy_check_mark: | Apideck ID of service provider | quickbooks | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | Projects | +| `operation` | *str* | :heavy_check_mark: | Operation performed | update | +| `data` | [models.UnifiedID](../models/unifiedid.md) | :heavy_check_mark: | A object containing a unique identifier for the resource that was created, updated, or deleted. | | \ No newline at end of file diff --git a/docs/models/webhookeventtype.md b/docs/models/webhookeventtype.md index 8c0c90cc..0ce92b7d 100644 --- a/docs/models/webhookeventtype.md +++ b/docs/models/webhookeventtype.md @@ -125,4 +125,7 @@ | `ECOMMERCE_CUSTOMER_DELETED` | ecommerce.customer.deleted | | `ACCOUNTING_QUOTE_CREATED` | accounting.quote.created | | `ACCOUNTING_QUOTE_UPDATED` | accounting.quote.updated | -| `ACCOUNTING_QUOTE_DELETED` | accounting.quote.deleted | \ No newline at end of file +| `ACCOUNTING_QUOTE_DELETED` | accounting.quote.deleted | +| `ACCOUNTING_PROJECT_CREATED` | accounting.project.created | +| `ACCOUNTING_PROJECT_UPDATED` | accounting.project.updated | +| `ACCOUNTING_PROJECT_DELETED` | accounting.project.deleted | \ No newline at end of file diff --git a/docs/sdks/collectiontickets/README.md b/docs/sdks/collectiontickets/README.md index 8816aaa0..43bafe72 100644 --- a/docs/sdks/collectiontickets/README.md +++ b/docs/sdks/collectiontickets/README.md @@ -100,7 +100,7 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.issue_tracking.collection_tickets.create(collection_id="apideck-io", raw=False, service_id="salesforce", parent_id="12345", type_="Technical", subject="Technical Support Request", description="I am facing issues with my internet connection", status="open", priority=apideck_unify.Priority.HIGH, assignees=[ + res = apideck.issue_tracking.collection_tickets.create(collection_id="apideck-io", raw=False, service_id="salesforce", parent_id="12345", type_="Technical", subject="Technical Support Request", description="I am facing issues with my internet connection", status="open", priority=apideck_unify.TicketPriority.HIGH, assignees=[ { "id": "12345", }, @@ -207,7 +207,7 @@ with Apideck( | `subject` | *OptionalNullable[str]* | :heavy_minus_sign: | Subject of the ticket | Technical Support Request | | `description` | *OptionalNullable[str]* | :heavy_minus_sign: | The ticket's description. HTML version of description is mapped if supported by the third-party platform | I am facing issues with my internet connection | | `status` | *OptionalNullable[str]* | :heavy_minus_sign: | The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through. | open | -| `priority` | [OptionalNullable[models.Priority]](../../models/priority.md) | :heavy_minus_sign: | Priority of the ticket | high | +| `priority` | [OptionalNullable[models.TicketPriority]](../../models/ticketpriority.md) | :heavy_minus_sign: | Priority of the ticket | high | | `assignees` | List[[models.AssigneeInput](../../models/assigneeinput.md)] | :heavy_minus_sign: | N/A | | | `due_date` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Due date of the ticket | 2020-09-30T07:43:32.000Z | | `tags` | List[[models.CollectionTagInput](../../models/collectiontaginput.md)] | :heavy_minus_sign: | N/A | | @@ -304,7 +304,7 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.issue_tracking.collection_tickets.update(ticket_id="", collection_id="apideck-io", service_id="salesforce", raw=False, parent_id="12345", type_="Technical", subject="Technical Support Request", description="I am facing issues with my internet connection", status="open", priority=apideck_unify.Priority.HIGH, assignees=[ + res = apideck.issue_tracking.collection_tickets.update(ticket_id="", collection_id="apideck-io", service_id="salesforce", raw=False, parent_id="12345", type_="Technical", subject="Technical Support Request", description="I am facing issues with my internet connection", status="open", priority=apideck_unify.TicketPriority.HIGH, assignees=[ { "id": "12345", }, @@ -403,7 +403,7 @@ with Apideck( | `subject` | *OptionalNullable[str]* | :heavy_minus_sign: | Subject of the ticket | Technical Support Request | | `description` | *OptionalNullable[str]* | :heavy_minus_sign: | The ticket's description. HTML version of description is mapped if supported by the third-party platform | I am facing issues with my internet connection | | `status` | *OptionalNullable[str]* | :heavy_minus_sign: | The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through. | open | -| `priority` | [OptionalNullable[models.Priority]](../../models/priority.md) | :heavy_minus_sign: | Priority of the ticket | high | +| `priority` | [OptionalNullable[models.TicketPriority]](../../models/ticketpriority.md) | :heavy_minus_sign: | Priority of the ticket | high | | `assignees` | List[[models.AssigneeInput](../../models/assigneeinput.md)] | :heavy_minus_sign: | N/A | | | `due_date` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Due date of the ticket | 2020-09-30T07:43:32.000Z | | `tags` | List[[models.CollectionTagInput](../../models/collectiontaginput.md)] | :heavy_minus_sign: | N/A | | diff --git a/docs/sdks/connections/README.md b/docs/sdks/connections/README.md index c6ab5160..38be7ba8 100644 --- a/docs/sdks/connections/README.md +++ b/docs/sdks/connections/README.md @@ -408,10 +408,10 @@ with Apideck( res = apideck.vault.connections.delete(service_id="pipedrive", unified_api="crm") - assert res is not None + assert res.unexpected_error_response is not None # Handle response - print(res) + print(res.unexpected_error_response) ``` diff --git a/docs/sdks/customers/README.md b/docs/sdks/customers/README.md index b2db6b73..7f28e0ba 100644 --- a/docs/sdks/customers/README.md +++ b/docs/sdks/customers/README.md @@ -104,7 +104,7 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.accounting.customers.create(raw=False, service_id="salesforce", display_id="EMP00101", display_name="Windsurf Shop", company_name="SpaceX", company_id="12345", title="CEO", first_name="Elon", middle_name="D.", last_name="Musk", suffix="Jr.", individual=True, project=False, addresses=[ + res = apideck.accounting.customers.create(raw=False, service_id="salesforce", display_id="EMP00101", display_name="Windsurf Shop", company_name="SpaceX", company_id="12345", customer_category="Insurance", title="CEO", first_name="Elon", middle_name="D.", last_name="Musk", suffix="Jr.", individual=True, project=False, addresses=[ { "id": "123", "type": apideck_unify.Type.PRIMARY, @@ -199,7 +199,7 @@ with Apideck( }, parent={ "id": "12345", "name": "Windsurf Shop", - }, status=apideck_unify.CustomerStatusStatus.ACTIVE, payment_method="cash", channel="email", custom_fields=[ + }, status=apideck_unify.CustomerStatusStatus.ACTIVE, payment_method="cash", terms="Net 30 days", channel="email", custom_fields=[ { "id": "2389328923893298", "name": "employee_level", @@ -267,6 +267,7 @@ with Apideck( | `display_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Display name | Windsurf Shop | | `company_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the company. | SpaceX | | `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `customer_category` | *OptionalNullable[str]* | :heavy_minus_sign: | The category/type of the customer | Insurance | | `title` | *OptionalNullable[str]* | :heavy_minus_sign: | The job title of the person. | CEO | | `first_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The first name of the person. | Elon | | `middle_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Middle name of the person. | D. | @@ -287,6 +288,7 @@ with Apideck( | `parent` | [OptionalNullable[models.LinkedParentCustomer]](../../models/linkedparentcustomer.md) | :heavy_minus_sign: | The parent customer this entity is linked to. | | | `status` | [OptionalNullable[models.CustomerStatusStatus]](../../models/customerstatusstatus.md) | :heavy_minus_sign: | Customer status | active | | `payment_method` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment method used for the transaction, such as cash, credit card, bank transfer, or check | cash | +| `terms` | *OptionalNullable[str]* | :heavy_minus_sign: | Terms of payment. | Net 30 days | | `channel` | *OptionalNullable[str]* | :heavy_minus_sign: | The channel through which the transaction is processed. | email | | `custom_fields` | List[[models.CustomField](../../models/customfield.md)] | :heavy_minus_sign: | N/A | | | `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | @@ -381,7 +383,7 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.accounting.customers.update(id="", service_id="salesforce", raw=False, display_id="EMP00101", display_name="Windsurf Shop", company_name="SpaceX", company_id="12345", title="CEO", first_name="Elon", middle_name="D.", last_name="Musk", suffix="Jr.", individual=True, project=False, addresses=[ + res = apideck.accounting.customers.update(id="", service_id="salesforce", raw=False, display_id="EMP00101", display_name="Windsurf Shop", company_name="SpaceX", company_id="12345", customer_category="Insurance", title="CEO", first_name="Elon", middle_name="D.", last_name="Musk", suffix="Jr.", individual=True, project=False, addresses=[ { "id": "123", "type": apideck_unify.Type.PRIMARY, @@ -497,7 +499,7 @@ with Apideck( }, parent={ "id": "12345", "name": "Windsurf Shop", - }, status=apideck_unify.CustomerStatusStatus.ACTIVE, payment_method="cash", channel="email", custom_fields=[ + }, status=apideck_unify.CustomerStatusStatus.ACTIVE, payment_method="cash", terms="Net 30 days", channel="email", custom_fields=[ { "id": "2389328923893298", "name": "employee_level", @@ -555,6 +557,7 @@ with Apideck( | `display_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Display name | Windsurf Shop | | `company_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The name of the company. | SpaceX | | `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `customer_category` | *OptionalNullable[str]* | :heavy_minus_sign: | The category/type of the customer | Insurance | | `title` | *OptionalNullable[str]* | :heavy_minus_sign: | The job title of the person. | CEO | | `first_name` | *OptionalNullable[str]* | :heavy_minus_sign: | The first name of the person. | Elon | | `middle_name` | *OptionalNullable[str]* | :heavy_minus_sign: | Middle name of the person. | D. | @@ -575,6 +578,7 @@ with Apideck( | `parent` | [OptionalNullable[models.LinkedParentCustomer]](../../models/linkedparentcustomer.md) | :heavy_minus_sign: | The parent customer this entity is linked to. | | | `status` | [OptionalNullable[models.CustomerStatusStatus]](../../models/customerstatusstatus.md) | :heavy_minus_sign: | Customer status | active | | `payment_method` | *OptionalNullable[str]* | :heavy_minus_sign: | Payment method used for the transaction, such as cash, credit card, bank transfer, or check | cash | +| `terms` | *OptionalNullable[str]* | :heavy_minus_sign: | Terms of payment. | Net 30 days | | `channel` | *OptionalNullable[str]* | :heavy_minus_sign: | The channel through which the transaction is processed. | email | | `custom_fields` | List[[models.CustomField](../../models/customfield.md)] | :heavy_minus_sign: | N/A | | | `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | diff --git a/docs/sdks/invoiceitems/README.md b/docs/sdks/invoiceitems/README.md index d06e3379..aa47327b 100644 --- a/docs/sdks/invoiceitems/README.md +++ b/docs/sdks/invoiceitems/README.md @@ -57,7 +57,7 @@ with Apideck( | `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `filter_` | [Optional[models.InvoiceItemsFilter]](../../models/invoiceitemsfilter.md) | :heavy_minus_sign: | Apply filters | {
"name": "Widgets Large",
"type": "service"
} | +| `filter_` | [Optional[models.InvoiceItemsFilter]](../../models/invoiceitemsfilter.md) | :heavy_minus_sign: | Apply filters | {
"name": "Widgets Large",
"type": "service",
"transaction_type": "sale"
} | | `sort` | [Optional[models.InvoiceItemsSort]](../../models/invoiceitemssort.md) | :heavy_minus_sign: | Apply sorting | {
"by": "updated_at",
"direction": "desc"
} | | `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | @@ -323,7 +323,7 @@ with Apideck( | `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | | `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | -| `filter_` | [Optional[models.InvoiceItemFilter]](../../models/invoiceitemfilter.md) | :heavy_minus_sign: | Apply filters | {
"type": "service"
} | +| `filter_` | [Optional[models.InvoiceItemFilter]](../../models/invoiceitemfilter.md) | :heavy_minus_sign: | Apply filters | {
"type": "service",
"transaction_type": "purchase"
} | | `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | ### Response diff --git a/docs/sdks/invoices/README.md b/docs/sdks/invoices/README.md index ce17879c..b6082128 100644 --- a/docs/sdks/invoices/README.md +++ b/docs/sdks/invoices/README.md @@ -59,7 +59,7 @@ with Apideck( | `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | | `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | | `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | -| `filter_` | [Optional[models.InvoicesFilter]](../../models/invoicesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546"
} | +| `filter_` | [Optional[models.InvoicesFilter]](../../models/invoicesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546",
"supplier_id": "123"
} | | `sort` | [Optional[models.InvoicesSort]](../../models/invoicessort.md) | :heavy_minus_sign: | Apply sorting | {
"by": "updated_at",
"direction": "desc"
} | | `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | | `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | diff --git a/docs/sdks/journalentries/README.md b/docs/sdks/journalentries/README.md index a8d1a7cc..8acab4cf 100644 --- a/docs/sdks/journalentries/README.md +++ b/docs/sdks/journalentries/README.md @@ -180,7 +180,7 @@ with Apideck( "id": "123456", "name": "New York", }, - ], accounting_period="01-24", row_version="1-12345", custom_fields=[ + ], accounting_period="01-24", tax_inclusive=True, source_type="manual", source_id="12345", row_version="1-12345", custom_fields=[ { "id": "2389328923893298", "name": "employee_level", @@ -270,6 +270,9 @@ with Apideck( | `number` | *OptionalNullable[str]* | :heavy_minus_sign: | Journal entry number. | OIT00546 | | `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | | `accounting_period` | *OptionalNullable[str]* | :heavy_minus_sign: | Accounting period | 01-24 | +| `tax_inclusive` | *OptionalNullable[bool]* | :heavy_minus_sign: | Amounts are including tax | true | +| `source_type` | *OptionalNullable[str]* | :heavy_minus_sign: | The source type of the journal entry | manual | +| `source_id` | *OptionalNullable[str]* | :heavy_minus_sign: | A unique identifier for the source of the journal entry | 12345 | | `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | | `custom_fields` | List[[models.CustomField](../../models/customfield.md)] | :heavy_minus_sign: | N/A | | | `pass_through` | List[[models.PassThroughBody](../../models/passthroughbody.md)] | :heavy_minus_sign: | The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. | | @@ -446,7 +449,7 @@ with Apideck( "id": "123456", "name": "New York", }, - ], accounting_period="01-24", row_version="1-12345", custom_fields=[ + ], accounting_period="01-24", tax_inclusive=True, source_type="manual", source_id="12345", row_version="1-12345", custom_fields=[ { "id": "2389328923893298", "name": "employee_level", @@ -559,6 +562,9 @@ with Apideck( | `number` | *OptionalNullable[str]* | :heavy_minus_sign: | Journal entry number. | OIT00546 | | `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | | `accounting_period` | *OptionalNullable[str]* | :heavy_minus_sign: | Accounting period | 01-24 | +| `tax_inclusive` | *OptionalNullable[bool]* | :heavy_minus_sign: | Amounts are including tax | true | +| `source_type` | *OptionalNullable[str]* | :heavy_minus_sign: | The source type of the journal entry | manual | +| `source_id` | *OptionalNullable[str]* | :heavy_minus_sign: | A unique identifier for the source of the journal entry | 12345 | | `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | | `custom_fields` | List[[models.CustomField](../../models/customfield.md)] | :heavy_minus_sign: | N/A | | | `pass_through` | List[[models.PassThroughBody](../../models/passthroughbody.md)] | :heavy_minus_sign: | The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. | | diff --git a/docs/sdks/projects/README.md b/docs/sdks/projects/README.md new file mode 100644 index 00000000..e14ff041 --- /dev/null +++ b/docs/sdks/projects/README.md @@ -0,0 +1,478 @@ +# Projects +(*accounting.projects*) + +## Overview + +### Available Operations + +* [list](#list) - List projects +* [create](#create) - Create project +* [get](#get) - Get project +* [update](#update) - Update project +* [delete](#delete) - Delete project + +## list + +List projects + +### Example Usage + + +```python +import apideck_unify +from apideck_unify import Apideck +from apideck_unify.utils import parse_datetime +import os + + +with Apideck( + consumer_id="test-consumer", + app_id="dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX", + api_key=os.getenv("APIDECK_API_KEY", ""), +) as apideck: + + res = apideck.accounting.projects.list(raw=False, service_id="salesforce", limit=20, filter_={ + "name": "Website Redesign", + "status": apideck_unify.ProjectStatus.ACTIVE, + "customer_id": "12345", + "updated_since": parse_datetime("2020-09-30T07:43:32.000Z"), + }, sort={ + "by": apideck_unify.ProjectsSortSortBy.NAME, + }, pass_through={ + "search": "San Francisco", + }, fields="id,updated_at") + + while res is not None: + # Handle items + + res = res.next() + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `cursor` | *OptionalNullable[str]* | :heavy_minus_sign: | Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. | | +| `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | +| `filter_` | [Optional[models.ProjectsFilter]](../../models/projectsfilter.md) | :heavy_minus_sign: | Apply filters | {
"name": "Website Redesign",
"status": "active",
"customer_id": "12345",
"is_billable": true,
"is_active": true,
"updated_since": "2020-09-30T07:43:32.000Z"
} | +| `sort` | [Optional[models.ProjectsSort]](../../models/projectssort.md) | :heavy_minus_sign: | Apply sorting | | +| `pass_through` | Dict[str, *Any*] | :heavy_minus_sign: | Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads | {
"search": "San Francisco"
} | +| `fields` | *OptionalNullable[str]* | :heavy_minus_sign: | The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields "name", "email" and "addresses.city". If any other fields are available, they will be excluded. | id,updated_at | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AccountingProjectsAllResponse](../../models/accountingprojectsallresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------ | ------------------------------ | ------------------------------ | +| models.BadRequestResponse | 400 | application/json | +| models.UnauthorizedResponse | 401 | application/json | +| models.PaymentRequiredResponse | 402 | application/json | +| models.NotFoundResponse | 404 | application/json | +| models.UnprocessableResponse | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | + +## create + +Create project + +### Example Usage + + +```python +import apideck_unify +from apideck_unify import Apideck +from datetime import date +import os + + +with Apideck( + consumer_id="test-consumer", + app_id="dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX", + api_key=os.getenv("APIDECK_API_KEY", ""), +) as apideck: + + res = apideck.accounting.projects.create(name="Website Redesign Project", raw=False, service_id="salesforce", display_id="PROJ-001", reference_id="WD-REF-2024-001", description="Complete redesign of the company website including new branding and improved user experience", status=apideck_unify.ProjectProjectStatus.ACTIVE, project_type=apideck_unify.ProjectType.CLIENT_PROJECT, priority=apideck_unify.Priority.HIGH, completion_percentage=75.5, start_date=date.fromisoformat("2024-01-15"), end_date=date.fromisoformat("2024-06-30"), customer={ + "id": "12345", + "display_name": "Windsurf Shop", + "email": "boring@boring.com", + }, department={ + "id": "DEPT-001", + "name": "Marketing", + }, company_id="12345", owner_id="12345", parent_project={ + "id": "PROJ-PARENT-001", + "name": "Company Website Overhaul", + }, currency=apideck_unify.Currency.USD, budget_amount=50000, approved_amount=48000, budget_hours=400, hourly_rate=125, billing_method=apideck_unify.BillingMethod.TIME_AND_MATERIALS, is_billable=True, phase=apideck_unify.ProjectPhase.EXECUTION, tax_rate={ + "id": "123456", + "rate": 10, + }, tracking_categories=[ + { + "id": "123456", + "name": "New York", + "parent_id": "123456", + "parent_name": "New York", + }, + ], tags=[ + "website", + "redesign", + "urgent", + ], notes="Client has requested modern design with mobile-first approach", contract_number="CNT-2024-001", profit_margin=15.5, schedule_status=apideck_unify.ScheduleStatus.ON_SCHEDULE, addresses=[ + { + "id": "123", + "type": apideck_unify.Type.PRIMARY, + "string": "25 Spring Street, Blackburn, VIC 3130", + "name": "HQ US", + "line1": "Main street", + "line2": "apt #", + "line3": "Suite #", + "line4": "delivery instructions", + "line5": "Attention: Finance Dept", + "street_number": "25", + "city": "San Francisco", + "state": "CA", + "postal_code": "94104", + "country": "US", + "latitude": "40.759211", + "longitude": "-73.984638", + "county": "Santa Clara", + "contact_name": "Elon Musk", + "salutation": "Mr", + "phone_number": "111-111-1111", + "fax": "122-111-1111", + "email": "elon@musk.com", + "website": "https://elonmusk.com", + "notes": "Address notes or delivery instructions.", + "row_version": "1-12345", + }, + ], team_size=8, custom_fields=[ + { + "id": "2389328923893298", + "name": "employee_level", + "description": "Employee Level", + "value": "Uses Salesforce and Marketo", + }, + ], row_version="1-12345") + + assert res.create_project_response is not None + + # Handle response + print(res.create_project_response) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `name` | *str* | :heavy_check_mark: | Name of the project | Website Redesign Project | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `display_id` | *OptionalNullable[str]* | :heavy_minus_sign: | User-friendly project identifier | PROJ-001 | +| `reference_id` | *OptionalNullable[str]* | :heavy_minus_sign: | External reference identifier for the project | WD-REF-2024-001 | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Detailed description of the project | Complete redesign of the company website including new branding and improved user experience | +| `status` | [OptionalNullable[models.ProjectProjectStatus]](../../models/projectprojectstatus.md) | :heavy_minus_sign: | Current status of the project | active | +| `project_type` | [OptionalNullable[models.ProjectType]](../../models/projecttype.md) | :heavy_minus_sign: | Type or category of the project | client_project | +| `priority` | [OptionalNullable[models.Priority]](../../models/priority.md) | :heavy_minus_sign: | Priority level of the project | high | +| `completion_percentage` | *OptionalNullable[float]* | :heavy_minus_sign: | Percentage of project completion (0-100) | 75.5 | +| `start_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Start date of the project | 2024-01-15 | +| `end_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Expected or actual end date of the project | 2024-06-30 | +| `customer` | [OptionalNullable[models.LinkedCustomerInput]](../../models/linkedcustomerinput.md) | :heavy_minus_sign: | The customer this entity is linked to. | | +| `department` | [OptionalNullable[models.ProjectDepartment]](../../models/projectdepartment.md) | :heavy_minus_sign: | Department or organizational unit associated with the project | | +| `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `owner_id` | *OptionalNullable[str]* | :heavy_minus_sign: | ID of the user who owns/manages this project | 12345 | +| `parent_project` | [OptionalNullable[models.ParentProject]](../../models/parentproject.md) | :heavy_minus_sign: | Parent project if this is a subproject | | +| `currency` | [OptionalNullable[models.Currency]](../../models/currency.md) | :heavy_minus_sign: | Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). | USD | +| `budget_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted amount for the project | 50000 | +| `approved_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Approved budget amount for the project | 48000 | +| `budget_hours` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted hours for the project | 400 | +| `hourly_rate` | *OptionalNullable[float]* | :heavy_minus_sign: | Default hourly rate for project work | 125 | +| `billing_method` | [OptionalNullable[models.BillingMethod]](../../models/billingmethod.md) | :heavy_minus_sign: | Method used for billing this project | time_and_materials | +| `is_billable` | *OptionalNullable[bool]* | :heavy_minus_sign: | Indicates if the project is billable to the customer | true | +| `phase` | [OptionalNullable[models.ProjectPhase]](../../models/projectphase.md) | :heavy_minus_sign: | Current phase of the project lifecycle | execution | +| `tax_rate` | [Optional[models.LinkedTaxRateInput]](../../models/linkedtaxrateinput.md) | :heavy_minus_sign: | N/A | | +| `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | +| `tags` | List[*str*] | :heavy_minus_sign: | Tags associated with the project | [
"website",
"redesign",
"urgent"
] | +| `notes` | *OptionalNullable[str]* | :heavy_minus_sign: | Additional notes about the project | Client has requested modern design with mobile-first approach | +| `contract_number` | *OptionalNullable[str]* | :heavy_minus_sign: | Contract or agreement number associated with the project | CNT-2024-001 | +| `profit_margin` | *OptionalNullable[float]* | :heavy_minus_sign: | Expected profit margin percentage for the project | 15.5 | +| `schedule_status` | [OptionalNullable[models.ScheduleStatus]](../../models/schedulestatus.md) | :heavy_minus_sign: | Current status of project schedule compared to plan | on_schedule | +| `addresses` | List[[models.Address](../../models/address.md)] | :heavy_minus_sign: | An array of addresses associated with the project (billing, job site, etc.) | | +| `team_size` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of team members assigned to the project | 8 | +| `custom_fields` | List[[models.CustomField](../../models/customfield.md)] | :heavy_minus_sign: | N/A | | +| `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AccountingProjectsAddResponse](../../models/accountingprojectsaddresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------ | ------------------------------ | ------------------------------ | +| models.BadRequestResponse | 400 | application/json | +| models.UnauthorizedResponse | 401 | application/json | +| models.PaymentRequiredResponse | 402 | application/json | +| models.NotFoundResponse | 404 | application/json | +| models.UnprocessableResponse | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | + +## get + +Get project + +### Example Usage + + +```python +from apideck_unify import Apideck +import os + + +with Apideck( + consumer_id="test-consumer", + app_id="dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX", + api_key=os.getenv("APIDECK_API_KEY", ""), +) as apideck: + + res = apideck.accounting.projects.get(id="", service_id="salesforce", raw=False) + + assert res.get_project_response is not None + + # Handle response + print(res.get_project_response) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AccountingProjectsOneResponse](../../models/accountingprojectsoneresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------ | ------------------------------ | ------------------------------ | +| models.BadRequestResponse | 400 | application/json | +| models.UnauthorizedResponse | 401 | application/json | +| models.PaymentRequiredResponse | 402 | application/json | +| models.NotFoundResponse | 404 | application/json | +| models.UnprocessableResponse | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | + +## update + +Update project + +### Example Usage + + +```python +import apideck_unify +from apideck_unify import Apideck +from datetime import date +import os + + +with Apideck( + consumer_id="test-consumer", + app_id="dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX", + api_key=os.getenv("APIDECK_API_KEY", ""), +) as apideck: + + res = apideck.accounting.projects.update(id="", name="Website Redesign Project", service_id="salesforce", raw=False, display_id="PROJ-001", reference_id="WD-REF-2024-001", description="Complete redesign of the company website including new branding and improved user experience", status=apideck_unify.ProjectProjectStatus.ACTIVE, project_type=apideck_unify.ProjectType.CLIENT_PROJECT, priority=apideck_unify.Priority.HIGH, completion_percentage=75.5, start_date=date.fromisoformat("2024-01-15"), end_date=date.fromisoformat("2024-06-30"), customer=None, department={ + "id": "DEPT-001", + "name": "Marketing", + }, company_id="12345", owner_id="12345", parent_project={ + "id": "PROJ-PARENT-001", + "name": "Company Website Overhaul", + }, currency=apideck_unify.Currency.USD, budget_amount=50000, approved_amount=48000, budget_hours=400, hourly_rate=125, billing_method=apideck_unify.BillingMethod.TIME_AND_MATERIALS, is_billable=True, phase=apideck_unify.ProjectPhase.EXECUTION, tax_rate={ + "id": "123456", + "rate": 10, + }, tracking_categories=[ + { + "id": "123456", + "name": "New York", + "parent_id": "123456", + "parent_name": "New York", + }, + ], tags=[ + "website", + "redesign", + "urgent", + ], notes="Client has requested modern design with mobile-first approach", contract_number="CNT-2024-001", profit_margin=15.5, schedule_status=apideck_unify.ScheduleStatus.ON_SCHEDULE, addresses=[ + { + "id": "123", + "type": apideck_unify.Type.PRIMARY, + "string": "25 Spring Street, Blackburn, VIC 3130", + "name": "HQ US", + "line1": "Main street", + "line2": "apt #", + "line3": "Suite #", + "line4": "delivery instructions", + "line5": "Attention: Finance Dept", + "street_number": "25", + "city": "San Francisco", + "state": "CA", + "postal_code": "94104", + "country": "US", + "latitude": "40.759211", + "longitude": "-73.984638", + "county": "Santa Clara", + "contact_name": "Elon Musk", + "salutation": "Mr", + "phone_number": "111-111-1111", + "fax": "122-111-1111", + "email": "elon@musk.com", + "website": "https://elonmusk.com", + "notes": "Address notes or delivery instructions.", + "row_version": "1-12345", + }, + ], team_size=8, custom_fields=[ + { + "id": "2389328923893298", + "name": "employee_level", + "description": "Employee Level", + "value": "Uses Salesforce and Marketo", + }, + ], row_version="1-12345") + + assert res.update_project_response is not None + + # Handle response + print(res.update_project_response) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `name` | *str* | :heavy_check_mark: | Name of the project | Website Redesign Project | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `display_id` | *OptionalNullable[str]* | :heavy_minus_sign: | User-friendly project identifier | PROJ-001 | +| `reference_id` | *OptionalNullable[str]* | :heavy_minus_sign: | External reference identifier for the project | WD-REF-2024-001 | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Detailed description of the project | Complete redesign of the company website including new branding and improved user experience | +| `status` | [OptionalNullable[models.ProjectProjectStatus]](../../models/projectprojectstatus.md) | :heavy_minus_sign: | Current status of the project | active | +| `project_type` | [OptionalNullable[models.ProjectType]](../../models/projecttype.md) | :heavy_minus_sign: | Type or category of the project | client_project | +| `priority` | [OptionalNullable[models.Priority]](../../models/priority.md) | :heavy_minus_sign: | Priority level of the project | high | +| `completion_percentage` | *OptionalNullable[float]* | :heavy_minus_sign: | Percentage of project completion (0-100) | 75.5 | +| `start_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Start date of the project | 2024-01-15 | +| `end_date` | [datetime](https://docs.python.org/3/library/datetime.html#datetime-objects) | :heavy_minus_sign: | Expected or actual end date of the project | 2024-06-30 | +| `customer` | [OptionalNullable[models.LinkedCustomerInput]](../../models/linkedcustomerinput.md) | :heavy_minus_sign: | The customer this entity is linked to. | | +| `department` | [OptionalNullable[models.ProjectDepartment]](../../models/projectdepartment.md) | :heavy_minus_sign: | Department or organizational unit associated with the project | | +| `company_id` | *OptionalNullable[str]* | :heavy_minus_sign: | The company ID the transaction belongs to | 12345 | +| `owner_id` | *OptionalNullable[str]* | :heavy_minus_sign: | ID of the user who owns/manages this project | 12345 | +| `parent_project` | [OptionalNullable[models.ParentProject]](../../models/parentproject.md) | :heavy_minus_sign: | Parent project if this is a subproject | | +| `currency` | [OptionalNullable[models.Currency]](../../models/currency.md) | :heavy_minus_sign: | Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). | USD | +| `budget_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted amount for the project | 50000 | +| `approved_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Approved budget amount for the project | 48000 | +| `budget_hours` | *OptionalNullable[float]* | :heavy_minus_sign: | Total budgeted hours for the project | 400 | +| `hourly_rate` | *OptionalNullable[float]* | :heavy_minus_sign: | Default hourly rate for project work | 125 | +| `billing_method` | [OptionalNullable[models.BillingMethod]](../../models/billingmethod.md) | :heavy_minus_sign: | Method used for billing this project | time_and_materials | +| `is_billable` | *OptionalNullable[bool]* | :heavy_minus_sign: | Indicates if the project is billable to the customer | true | +| `phase` | [OptionalNullable[models.ProjectPhase]](../../models/projectphase.md) | :heavy_minus_sign: | Current phase of the project lifecycle | execution | +| `tax_rate` | [Optional[models.LinkedTaxRateInput]](../../models/linkedtaxrateinput.md) | :heavy_minus_sign: | N/A | | +| `tracking_categories` | List[[Nullable[models.LinkedTrackingCategory]](../../models/linkedtrackingcategory.md)] | :heavy_minus_sign: | A list of linked tracking categories. | | +| `tags` | List[*str*] | :heavy_minus_sign: | Tags associated with the project | [
"website",
"redesign",
"urgent"
] | +| `notes` | *OptionalNullable[str]* | :heavy_minus_sign: | Additional notes about the project | Client has requested modern design with mobile-first approach | +| `contract_number` | *OptionalNullable[str]* | :heavy_minus_sign: | Contract or agreement number associated with the project | CNT-2024-001 | +| `profit_margin` | *OptionalNullable[float]* | :heavy_minus_sign: | Expected profit margin percentage for the project | 15.5 | +| `schedule_status` | [OptionalNullable[models.ScheduleStatus]](../../models/schedulestatus.md) | :heavy_minus_sign: | Current status of project schedule compared to plan | on_schedule | +| `addresses` | List[[models.Address](../../models/address.md)] | :heavy_minus_sign: | An array of addresses associated with the project (billing, job site, etc.) | | +| `team_size` | *OptionalNullable[int]* | :heavy_minus_sign: | Number of team members assigned to the project | 8 | +| `custom_fields` | List[[models.CustomField](../../models/customfield.md)] | :heavy_minus_sign: | N/A | | +| `row_version` | *OptionalNullable[str]* | :heavy_minus_sign: | A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. | 1-12345 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AccountingProjectsUpdateResponse](../../models/accountingprojectsupdateresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------ | ------------------------------ | ------------------------------ | +| models.BadRequestResponse | 400 | application/json | +| models.UnauthorizedResponse | 401 | application/json | +| models.PaymentRequiredResponse | 402 | application/json | +| models.NotFoundResponse | 404 | application/json | +| models.UnprocessableResponse | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | + +## delete + +Delete project + +### Example Usage + + +```python +from apideck_unify import Apideck +import os + + +with Apideck( + consumer_id="test-consumer", + app_id="dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX", + api_key=os.getenv("APIDECK_API_KEY", ""), +) as apideck: + + res = apideck.accounting.projects.delete(id="", service_id="salesforce", raw=False) + + assert res.delete_project_response is not None + + # Handle response + print(res.delete_project_response) + +``` + +### Parameters + +| Parameter | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *str* | :heavy_check_mark: | ID of the record you are acting upon. | | +| `consumer_id` | *Optional[str]* | :heavy_minus_sign: | ID of the consumer which you want to get or push data from | test-consumer | +| `app_id` | *Optional[str]* | :heavy_minus_sign: | The ID of your Unify application | dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX | +| `service_id` | *Optional[str]* | :heavy_minus_sign: | Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. | salesforce | +| `raw` | *Optional[bool]* | :heavy_minus_sign: | Include raw response. Mostly used for debugging purposes | | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AccountingProjectsDeleteResponse](../../models/accountingprojectsdeleteresponse.md)** + +### Errors + +| Error Type | Status Code | Content Type | +| ------------------------------ | ------------------------------ | ------------------------------ | +| models.BadRequestResponse | 400 | application/json | +| models.UnauthorizedResponse | 401 | application/json | +| models.PaymentRequiredResponse | 402 | application/json | +| models.NotFoundResponse | 404 | application/json | +| models.UnprocessableResponse | 422 | application/json | +| models.APIError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/docs/sdks/purchaseorders/README.md b/docs/sdks/purchaseorders/README.md index 44ba2513..ce35572b 100644 --- a/docs/sdks/purchaseorders/README.md +++ b/docs/sdks/purchaseorders/README.md @@ -203,6 +203,7 @@ with Apideck( "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", + "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", @@ -576,6 +577,7 @@ with Apideck( "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", + "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", diff --git a/docs/sdks/quotes/README.md b/docs/sdks/quotes/README.md index caff9319..b71df613 100644 --- a/docs/sdks/quotes/README.md +++ b/docs/sdks/quotes/README.md @@ -148,6 +148,7 @@ with Apideck( "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", + "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", @@ -173,6 +174,7 @@ with Apideck( "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", + "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", @@ -410,6 +412,7 @@ with Apideck( "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", + "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", @@ -435,6 +438,7 @@ with Apideck( "line2": "apt #", "line3": "Suite #", "line4": "delivery instructions", + "line5": "Attention: Finance Dept", "street_number": "25", "city": "San Francisco", "state": "CA", diff --git a/pyproject.toml b/pyproject.toml index c3617639..f44e9070 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "apideck-unify" -version = "0.22.1" +version = "0.23.0" description = "Python Client SDK Generated by Speakeasy." authors = [{ name = "Speakeasy" },] readme = "README-PYPI.md" diff --git a/src/apideck_unify/_version.py b/src/apideck_unify/_version.py index 22b2dcb7..bdf2716c 100644 --- a/src/apideck_unify/_version.py +++ b/src/apideck_unify/_version.py @@ -3,10 +3,10 @@ import importlib.metadata __title__: str = "apideck-unify" -__version__: str = "0.22.1" -__openapi_doc_version__: str = "10.20.16" -__gen_version__: str = "2.709.0" -__user_agent__: str = "speakeasy-sdk/python 0.22.1 2.709.0 10.20.16 apideck-unify" +__version__: str = "0.23.0" +__openapi_doc_version__: str = "10.21.2" +__gen_version__: str = "2.716.16" +__user_agent__: str = "speakeasy-sdk/python 0.23.0 2.716.16 10.21.2 apideck-unify" try: if __package__ is not None: diff --git a/src/apideck_unify/accounting.py b/src/apideck_unify/accounting.py index 1cf7d2b4..8e932e47 100644 --- a/src/apideck_unify/accounting.py +++ b/src/apideck_unify/accounting.py @@ -24,6 +24,7 @@ from apideck_unify.locations import Locations from apideck_unify.payments import Payments from apideck_unify.profitandloss_sdk import ProfitAndLossSDK +from apideck_unify.projects import Projects from apideck_unify.purchaseorders import PurchaseOrders from apideck_unify.quotes import Quotes from apideck_unify.subsidiaries import Subsidiaries @@ -62,6 +63,7 @@ class Accounting(BaseSDK): bank_feed_statements: BankFeedStatements categories: Categories quotes: Quotes + projects: Projects def __init__( self, sdk_config: SDKConfiguration, parent_ref: Optional[object] = None @@ -135,3 +137,4 @@ def _init_sdks(self): ) self.categories = Categories(self.sdk_configuration, parent_ref=self.parent_ref) self.quotes = Quotes(self.sdk_configuration, parent_ref=self.parent_ref) + self.projects = Projects(self.sdk_configuration, parent_ref=self.parent_ref) diff --git a/src/apideck_unify/collectiontickets.py b/src/apideck_unify/collectiontickets.py index 499d825d..9fe7db36 100644 --- a/src/apideck_unify/collectiontickets.py +++ b/src/apideck_unify/collectiontickets.py @@ -403,7 +403,7 @@ def create( subject: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, status: OptionalNullable[str] = UNSET, - priority: OptionalNullable[models.Priority] = UNSET, + priority: OptionalNullable[models.TicketPriority] = UNSET, assignees: Optional[ Union[List[models.AssigneeInput], List[models.AssigneeInputTypedDict]] ] = None, @@ -594,7 +594,7 @@ async def create_async( subject: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, status: OptionalNullable[str] = UNSET, - priority: OptionalNullable[models.Priority] = UNSET, + priority: OptionalNullable[models.TicketPriority] = UNSET, assignees: Optional[ Union[List[models.AssigneeInput], List[models.AssigneeInputTypedDict]] ] = None, @@ -1080,7 +1080,7 @@ def update( subject: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, status: OptionalNullable[str] = UNSET, - priority: OptionalNullable[models.Priority] = UNSET, + priority: OptionalNullable[models.TicketPriority] = UNSET, assignees: Optional[ Union[List[models.AssigneeInput], List[models.AssigneeInputTypedDict]] ] = None, @@ -1274,7 +1274,7 @@ async def update_async( subject: OptionalNullable[str] = UNSET, description: OptionalNullable[str] = UNSET, status: OptionalNullable[str] = UNSET, - priority: OptionalNullable[models.Priority] = UNSET, + priority: OptionalNullable[models.TicketPriority] = UNSET, assignees: Optional[ Union[List[models.AssigneeInput], List[models.AssigneeInputTypedDict]] ] = None, diff --git a/src/apideck_unify/customers.py b/src/apideck_unify/customers.py index fae167a4..7545d0f2 100644 --- a/src/apideck_unify/customers.py +++ b/src/apideck_unify/customers.py @@ -396,6 +396,7 @@ def create( display_name: OptionalNullable[str] = UNSET, company_name: OptionalNullable[str] = UNSET, company_id: OptionalNullable[str] = UNSET, + customer_category: OptionalNullable[str] = UNSET, title: OptionalNullable[str] = UNSET, first_name: OptionalNullable[str] = UNSET, middle_name: OptionalNullable[str] = UNSET, @@ -433,6 +434,7 @@ def create( ] = UNSET, status: OptionalNullable[models.CustomerStatusStatus] = UNSET, payment_method: OptionalNullable[str] = UNSET, + terms: OptionalNullable[str] = UNSET, channel: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -458,6 +460,7 @@ def create( :param display_name: Display name :param company_name: The name of the company. :param company_id: The company ID the transaction belongs to + :param customer_category: The category/type of the customer :param title: The job title of the person. :param first_name: The first name of the person. :param middle_name: Middle name of the person. @@ -478,6 +481,7 @@ def create( :param parent: The parent customer this entity is linked to. :param status: Customer status :param payment_method: Payment method used for the transaction, such as cash, credit card, bank transfer, or check + :param terms: Terms of payment. :param channel: The channel through which the transaction is processed. :param custom_fields: :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. @@ -507,6 +511,7 @@ def create( display_name=display_name, company_name=company_name, company_id=company_id, + customer_category=customer_category, title=title, first_name=first_name, middle_name=middle_name, @@ -541,6 +546,7 @@ def create( ), status=status, payment_method=payment_method, + terms=terms, channel=channel, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] @@ -662,6 +668,7 @@ async def create_async( display_name: OptionalNullable[str] = UNSET, company_name: OptionalNullable[str] = UNSET, company_id: OptionalNullable[str] = UNSET, + customer_category: OptionalNullable[str] = UNSET, title: OptionalNullable[str] = UNSET, first_name: OptionalNullable[str] = UNSET, middle_name: OptionalNullable[str] = UNSET, @@ -699,6 +706,7 @@ async def create_async( ] = UNSET, status: OptionalNullable[models.CustomerStatusStatus] = UNSET, payment_method: OptionalNullable[str] = UNSET, + terms: OptionalNullable[str] = UNSET, channel: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -724,6 +732,7 @@ async def create_async( :param display_name: Display name :param company_name: The name of the company. :param company_id: The company ID the transaction belongs to + :param customer_category: The category/type of the customer :param title: The job title of the person. :param first_name: The first name of the person. :param middle_name: Middle name of the person. @@ -744,6 +753,7 @@ async def create_async( :param parent: The parent customer this entity is linked to. :param status: Customer status :param payment_method: Payment method used for the transaction, such as cash, credit card, bank transfer, or check + :param terms: Terms of payment. :param channel: The channel through which the transaction is processed. :param custom_fields: :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. @@ -773,6 +783,7 @@ async def create_async( display_name=display_name, company_name=company_name, company_id=company_id, + customer_category=customer_category, title=title, first_name=first_name, middle_name=middle_name, @@ -807,6 +818,7 @@ async def create_async( ), status=status, payment_method=payment_method, + terms=terms, channel=channel, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] @@ -1217,6 +1229,7 @@ def update( display_name: OptionalNullable[str] = UNSET, company_name: OptionalNullable[str] = UNSET, company_id: OptionalNullable[str] = UNSET, + customer_category: OptionalNullable[str] = UNSET, title: OptionalNullable[str] = UNSET, first_name: OptionalNullable[str] = UNSET, middle_name: OptionalNullable[str] = UNSET, @@ -1254,6 +1267,7 @@ def update( ] = UNSET, status: OptionalNullable[models.CustomerStatusStatus] = UNSET, payment_method: OptionalNullable[str] = UNSET, + terms: OptionalNullable[str] = UNSET, channel: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -1280,6 +1294,7 @@ def update( :param display_name: Display name :param company_name: The name of the company. :param company_id: The company ID the transaction belongs to + :param customer_category: The category/type of the customer :param title: The job title of the person. :param first_name: The first name of the person. :param middle_name: Middle name of the person. @@ -1300,6 +1315,7 @@ def update( :param parent: The parent customer this entity is linked to. :param status: Customer status :param payment_method: Payment method used for the transaction, such as cash, credit card, bank transfer, or check + :param terms: Terms of payment. :param channel: The channel through which the transaction is processed. :param custom_fields: :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. @@ -1330,6 +1346,7 @@ def update( display_name=display_name, company_name=company_name, company_id=company_id, + customer_category=customer_category, title=title, first_name=first_name, middle_name=middle_name, @@ -1364,6 +1381,7 @@ def update( ), status=status, payment_method=payment_method, + terms=terms, channel=channel, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] @@ -1486,6 +1504,7 @@ async def update_async( display_name: OptionalNullable[str] = UNSET, company_name: OptionalNullable[str] = UNSET, company_id: OptionalNullable[str] = UNSET, + customer_category: OptionalNullable[str] = UNSET, title: OptionalNullable[str] = UNSET, first_name: OptionalNullable[str] = UNSET, middle_name: OptionalNullable[str] = UNSET, @@ -1523,6 +1542,7 @@ async def update_async( ] = UNSET, status: OptionalNullable[models.CustomerStatusStatus] = UNSET, payment_method: OptionalNullable[str] = UNSET, + terms: OptionalNullable[str] = UNSET, channel: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -1549,6 +1569,7 @@ async def update_async( :param display_name: Display name :param company_name: The name of the company. :param company_id: The company ID the transaction belongs to + :param customer_category: The category/type of the customer :param title: The job title of the person. :param first_name: The first name of the person. :param middle_name: Middle name of the person. @@ -1569,6 +1590,7 @@ async def update_async( :param parent: The parent customer this entity is linked to. :param status: Customer status :param payment_method: Payment method used for the transaction, such as cash, credit card, bank transfer, or check + :param terms: Terms of payment. :param channel: The channel through which the transaction is processed. :param custom_fields: :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. @@ -1599,6 +1621,7 @@ async def update_async( display_name=display_name, company_name=company_name, company_id=company_id, + customer_category=customer_category, title=title, first_name=first_name, middle_name=middle_name, @@ -1633,6 +1656,7 @@ async def update_async( ), status=status, payment_method=payment_method, + terms=terms, channel=channel, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] diff --git a/src/apideck_unify/journalentries.py b/src/apideck_unify/journalentries.py index b36a2cb2..77bdd7f6 100644 --- a/src/apideck_unify/journalentries.py +++ b/src/apideck_unify/journalentries.py @@ -421,6 +421,9 @@ def create( ] ] = UNSET, accounting_period: OptionalNullable[str] = UNSET, + tax_inclusive: OptionalNullable[bool] = UNSET, + source_type: OptionalNullable[str] = UNSET, + source_id: OptionalNullable[str] = UNSET, row_version: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -455,6 +458,9 @@ def create( :param number: Journal entry number. :param tracking_categories: A list of linked tracking categories. :param accounting_period: Accounting period + :param tax_inclusive: Amounts are including tax + :param source_type: The source type of the journal entry + :param source_id: A unique identifier for the source of the journal entry :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. :param custom_fields: :param pass_through: The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. @@ -498,6 +504,9 @@ def create( OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], ), accounting_period=accounting_period, + tax_inclusive=tax_inclusive, + source_type=source_type, + source_id=source_id, row_version=row_version, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] @@ -638,6 +647,9 @@ async def create_async( ] ] = UNSET, accounting_period: OptionalNullable[str] = UNSET, + tax_inclusive: OptionalNullable[bool] = UNSET, + source_type: OptionalNullable[str] = UNSET, + source_id: OptionalNullable[str] = UNSET, row_version: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -672,6 +684,9 @@ async def create_async( :param number: Journal entry number. :param tracking_categories: A list of linked tracking categories. :param accounting_period: Accounting period + :param tax_inclusive: Amounts are including tax + :param source_type: The source type of the journal entry + :param source_id: A unique identifier for the source of the journal entry :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. :param custom_fields: :param pass_through: The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. @@ -715,6 +730,9 @@ async def create_async( OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], ), accounting_period=accounting_period, + tax_inclusive=tax_inclusive, + source_type=source_type, + source_id=source_id, row_version=row_version, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] @@ -1144,6 +1162,9 @@ def update( ] ] = UNSET, accounting_period: OptionalNullable[str] = UNSET, + tax_inclusive: OptionalNullable[bool] = UNSET, + source_type: OptionalNullable[str] = UNSET, + source_id: OptionalNullable[str] = UNSET, row_version: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -1179,6 +1200,9 @@ def update( :param number: Journal entry number. :param tracking_categories: A list of linked tracking categories. :param accounting_period: Accounting period + :param tax_inclusive: Amounts are including tax + :param source_type: The source type of the journal entry + :param source_id: A unique identifier for the source of the journal entry :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. :param custom_fields: :param pass_through: The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. @@ -1223,6 +1247,9 @@ def update( OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], ), accounting_period=accounting_period, + tax_inclusive=tax_inclusive, + source_type=source_type, + source_id=source_id, row_version=row_version, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] @@ -1364,6 +1391,9 @@ async def update_async( ] ] = UNSET, accounting_period: OptionalNullable[str] = UNSET, + tax_inclusive: OptionalNullable[bool] = UNSET, + source_type: OptionalNullable[str] = UNSET, + source_id: OptionalNullable[str] = UNSET, row_version: OptionalNullable[str] = UNSET, custom_fields: Optional[ Union[List[models.CustomField], List[models.CustomFieldTypedDict]] @@ -1399,6 +1429,9 @@ async def update_async( :param number: Journal entry number. :param tracking_categories: A list of linked tracking categories. :param accounting_period: Accounting period + :param tax_inclusive: Amounts are including tax + :param source_type: The source type of the journal entry + :param source_id: A unique identifier for the source of the journal entry :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. :param custom_fields: :param pass_through: The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources. @@ -1443,6 +1476,9 @@ async def update_async( OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], ), accounting_period=accounting_period, + tax_inclusive=tax_inclusive, + source_type=source_type, + source_id=source_id, row_version=row_version, custom_fields=utils.get_pydantic_model( custom_fields, Optional[List[models.CustomField]] diff --git a/src/apideck_unify/models/__init__.py b/src/apideck_unify/models/__init__.py index 515eaa84..2aeefcc0 100644 --- a/src/apideck_unify/models/__init__.py +++ b/src/apideck_unify/models/__init__.py @@ -704,6 +704,46 @@ AccountingProfitAndLossOneResponse, AccountingProfitAndLossOneResponseTypedDict, ) + from .accounting_projectsaddop import ( + AccountingProjectsAddGlobals, + AccountingProjectsAddGlobalsTypedDict, + AccountingProjectsAddRequest, + AccountingProjectsAddRequestTypedDict, + AccountingProjectsAddResponse, + AccountingProjectsAddResponseTypedDict, + ) + from .accounting_projectsallop import ( + AccountingProjectsAllGlobals, + AccountingProjectsAllGlobalsTypedDict, + AccountingProjectsAllRequest, + AccountingProjectsAllRequestTypedDict, + AccountingProjectsAllResponse, + AccountingProjectsAllResponseTypedDict, + ) + from .accounting_projectsdeleteop import ( + AccountingProjectsDeleteGlobals, + AccountingProjectsDeleteGlobalsTypedDict, + AccountingProjectsDeleteRequest, + AccountingProjectsDeleteRequestTypedDict, + AccountingProjectsDeleteResponse, + AccountingProjectsDeleteResponseTypedDict, + ) + from .accounting_projectsoneop import ( + AccountingProjectsOneGlobals, + AccountingProjectsOneGlobalsTypedDict, + AccountingProjectsOneRequest, + AccountingProjectsOneRequestTypedDict, + AccountingProjectsOneResponse, + AccountingProjectsOneResponseTypedDict, + ) + from .accounting_projectsupdateop import ( + AccountingProjectsUpdateGlobals, + AccountingProjectsUpdateGlobalsTypedDict, + AccountingProjectsUpdateRequest, + AccountingProjectsUpdateRequestTypedDict, + AccountingProjectsUpdateResponse, + AccountingProjectsUpdateResponseTypedDict, + ) from .accounting_purchaseordersaddop import ( AccountingPurchaseOrdersAddGlobals, AccountingPurchaseOrdersAddGlobalsTypedDict, @@ -1156,8 +1196,8 @@ from .balancebyperiod import BalanceByPeriod, BalanceByPeriodTypedDict from .balancebytransaction import ( BalanceByTransaction, + BalanceByTransactionTransactionType, BalanceByTransactionTypedDict, - TransactionType, ) from .balancesheet import ( BalanceSheet, @@ -1567,6 +1607,10 @@ CreatePipelineResponse, CreatePipelineResponseTypedDict, ) + from .createprojectresponse import ( + CreateProjectResponse, + CreateProjectResponseTypedDict, + ) from .createpurchaseorderresponse import ( CreatePurchaseOrderResponse, CreatePurchaseOrderResponseTypedDict, @@ -2223,6 +2267,10 @@ DeletePipelineResponse, DeletePipelineResponseTypedDict, ) + from .deleteprojectresponse import ( + DeleteProjectResponse, + DeleteProjectResponseTypedDict, + ) from .deletepurchaseorderresponse import ( DeletePurchaseOrderResponse, DeletePurchaseOrderResponseTypedDict, @@ -3061,6 +3109,8 @@ GetProfitAndLossResponse, GetProfitAndLossResponseTypedDict, ) + from .getprojectresponse import GetProjectResponse, GetProjectResponseTypedDict + from .getprojectsresponse import GetProjectsResponse, GetProjectsResponseTypedDict from .getpurchaseorderresponse import ( GetPurchaseOrderResponse, GetPurchaseOrderResponseTypedDict, @@ -3362,12 +3412,14 @@ from .invoiceitemfilter import ( InvoiceItemFilter, InvoiceItemFilterInvoiceItemType, + InvoiceItemFilterTransactionType, InvoiceItemFilterTypedDict, ) from .invoiceitemsfilter import ( InvoiceItemType, InvoiceItemsFilter, InvoiceItemsFilterTypedDict, + TransactionType, ) from .invoiceitemssort import ( InvoiceItemsSort, @@ -3731,6 +3783,24 @@ ProfitAndLossIndicatorTypedDict, ) from .profitandlosstype import ProfitAndLossType + from .project import ( + BillingMethod, + ParentProject, + ParentProjectTypedDict, + Priority, + Project, + ProjectDepartment, + ProjectDepartmentTypedDict, + ProjectInput, + ProjectInputTypedDict, + ProjectPhase, + ProjectProjectStatus, + ProjectType, + ProjectTypedDict, + ScheduleStatus, + ) + from .projectsfilter import ProjectStatus, ProjectsFilter, ProjectsFilterTypedDict + from .projectssort import ProjectsSort, ProjectsSortSortBy, ProjectsSortTypedDict from .purchaseorder import ( PurchaseOrder, PurchaseOrderAmortizationType, @@ -3887,10 +3957,10 @@ from .taxratesfilter import TaxRatesFilter, TaxRatesFilterTypedDict from .team import Team, TeamTypedDict from .ticket import ( - Priority, Ticket, TicketInput, TicketInputTypedDict, + TicketPriority, TicketTypedDict, ) from .ticketssort import TicketsSort, TicketsSortBy, TicketsSortTypedDict @@ -4096,6 +4166,10 @@ UpdatePipelineResponse, UpdatePipelineResponseTypedDict, ) + from .updateprojectresponse import ( + UpdateProjectResponse, + UpdateProjectResponseTypedDict, + ) from .updatepurchaseorderresponse import ( UpdatePurchaseOrderResponse, UpdatePurchaseOrderResponseTypedDict, @@ -4973,6 +5047,36 @@ "AccountingProfitAndLossOneRequestTypedDict", "AccountingProfitAndLossOneResponse", "AccountingProfitAndLossOneResponseTypedDict", + "AccountingProjectsAddGlobals", + "AccountingProjectsAddGlobalsTypedDict", + "AccountingProjectsAddRequest", + "AccountingProjectsAddRequestTypedDict", + "AccountingProjectsAddResponse", + "AccountingProjectsAddResponseTypedDict", + "AccountingProjectsAllGlobals", + "AccountingProjectsAllGlobalsTypedDict", + "AccountingProjectsAllRequest", + "AccountingProjectsAllRequestTypedDict", + "AccountingProjectsAllResponse", + "AccountingProjectsAllResponseTypedDict", + "AccountingProjectsDeleteGlobals", + "AccountingProjectsDeleteGlobalsTypedDict", + "AccountingProjectsDeleteRequest", + "AccountingProjectsDeleteRequestTypedDict", + "AccountingProjectsDeleteResponse", + "AccountingProjectsDeleteResponseTypedDict", + "AccountingProjectsOneGlobals", + "AccountingProjectsOneGlobalsTypedDict", + "AccountingProjectsOneRequest", + "AccountingProjectsOneRequestTypedDict", + "AccountingProjectsOneResponse", + "AccountingProjectsOneResponseTypedDict", + "AccountingProjectsUpdateGlobals", + "AccountingProjectsUpdateGlobalsTypedDict", + "AccountingProjectsUpdateRequest", + "AccountingProjectsUpdateRequestTypedDict", + "AccountingProjectsUpdateResponse", + "AccountingProjectsUpdateResponseTypedDict", "AccountingPurchaseOrdersAddGlobals", "AccountingPurchaseOrdersAddGlobalsTypedDict", "AccountingPurchaseOrdersAddRequest", @@ -5294,6 +5398,7 @@ "BalanceByPeriod", "BalanceByPeriodTypedDict", "BalanceByTransaction", + "BalanceByTransactionTransactionType", "BalanceByTransactionTypedDict", "BalanceSheet", "BalanceSheetAssetsAccount", @@ -5347,6 +5452,7 @@ "BillPaymentTypedDict", "BillStatus", "BillTypedDict", + "BillingMethod", "BillsFilter", "BillsFilterTypedDict", "BillsSort", @@ -5602,6 +5708,8 @@ "CreatePaymentResponseTypedDict", "CreatePipelineResponse", "CreatePipelineResponseTypedDict", + "CreateProjectResponse", + "CreateProjectResponseTypedDict", "CreatePurchaseOrderResponse", "CreatePurchaseOrderResponseTypedDict", "CreateQuoteResponse", @@ -6073,6 +6181,8 @@ "DeletePaymentResponseTypedDict", "DeletePipelineResponse", "DeletePipelineResponseTypedDict", + "DeleteProjectResponse", + "DeleteProjectResponseTypedDict", "DeletePurchaseOrderResponse", "DeletePurchaseOrderResponseTypedDict", "DeleteQuoteResponse", @@ -6703,6 +6813,10 @@ "GetProductsResponseTypedDict", "GetProfitAndLossResponse", "GetProfitAndLossResponseTypedDict", + "GetProjectResponse", + "GetProjectResponseTypedDict", + "GetProjectsResponse", + "GetProjectsResponseTypedDict", "GetPurchaseOrderResponse", "GetPurchaseOrderResponseTypedDict", "GetPurchaseOrdersResponse", @@ -6921,6 +7035,7 @@ "InvoiceItem", "InvoiceItemFilter", "InvoiceItemFilterInvoiceItemType", + "InvoiceItemFilterTransactionType", "InvoiceItemFilterTypedDict", "InvoiceItemInput", "InvoiceItemInputTypedDict", @@ -7201,6 +7316,8 @@ "PaginationCoverageTypedDict", "ParentAccount", "ParentAccountTypedDict", + "ParentProject", + "ParentProjectTypedDict", "PassThroughBody", "PassThroughBodyTypedDict", "Payment", @@ -7255,6 +7372,21 @@ "ProfitAndLossIndicatorTypedDict", "ProfitAndLossType", "ProfitAndLossTypedDict", + "Project", + "ProjectDepartment", + "ProjectDepartmentTypedDict", + "ProjectInput", + "ProjectInputTypedDict", + "ProjectPhase", + "ProjectProjectStatus", + "ProjectStatus", + "ProjectType", + "ProjectTypedDict", + "ProjectsFilter", + "ProjectsFilterTypedDict", + "ProjectsSort", + "ProjectsSortSortBy", + "ProjectsSortTypedDict", "PurchaseDetails", "PurchaseDetailsTypedDict", "PurchaseOrder", @@ -7297,6 +7429,7 @@ "SalesDetails", "SalesDetailsTypedDict", "Schedule", + "ScheduleStatus", "ScheduleTypedDict", "Schema", "SchemaSupport", @@ -7410,6 +7543,7 @@ "Ticket", "TicketInput", "TicketInputTypedDict", + "TicketPriority", "TicketTypedDict", "TicketsSort", "TicketsSortBy", @@ -7543,6 +7677,8 @@ "UpdatePaymentResponseTypedDict", "UpdatePipelineResponse", "UpdatePipelineResponseTypedDict", + "UpdateProjectResponse", + "UpdateProjectResponseTypedDict", "UpdatePurchaseOrderResponse", "UpdatePurchaseOrderResponseTypedDict", "UpdateQuoteResponse", @@ -8316,6 +8452,36 @@ "AccountingProfitAndLossOneRequestTypedDict": ".accounting_profitandlossoneop", "AccountingProfitAndLossOneResponse": ".accounting_profitandlossoneop", "AccountingProfitAndLossOneResponseTypedDict": ".accounting_profitandlossoneop", + "AccountingProjectsAddGlobals": ".accounting_projectsaddop", + "AccountingProjectsAddGlobalsTypedDict": ".accounting_projectsaddop", + "AccountingProjectsAddRequest": ".accounting_projectsaddop", + "AccountingProjectsAddRequestTypedDict": ".accounting_projectsaddop", + "AccountingProjectsAddResponse": ".accounting_projectsaddop", + "AccountingProjectsAddResponseTypedDict": ".accounting_projectsaddop", + "AccountingProjectsAllGlobals": ".accounting_projectsallop", + "AccountingProjectsAllGlobalsTypedDict": ".accounting_projectsallop", + "AccountingProjectsAllRequest": ".accounting_projectsallop", + "AccountingProjectsAllRequestTypedDict": ".accounting_projectsallop", + "AccountingProjectsAllResponse": ".accounting_projectsallop", + "AccountingProjectsAllResponseTypedDict": ".accounting_projectsallop", + "AccountingProjectsDeleteGlobals": ".accounting_projectsdeleteop", + "AccountingProjectsDeleteGlobalsTypedDict": ".accounting_projectsdeleteop", + "AccountingProjectsDeleteRequest": ".accounting_projectsdeleteop", + "AccountingProjectsDeleteRequestTypedDict": ".accounting_projectsdeleteop", + "AccountingProjectsDeleteResponse": ".accounting_projectsdeleteop", + "AccountingProjectsDeleteResponseTypedDict": ".accounting_projectsdeleteop", + "AccountingProjectsOneGlobals": ".accounting_projectsoneop", + "AccountingProjectsOneGlobalsTypedDict": ".accounting_projectsoneop", + "AccountingProjectsOneRequest": ".accounting_projectsoneop", + "AccountingProjectsOneRequestTypedDict": ".accounting_projectsoneop", + "AccountingProjectsOneResponse": ".accounting_projectsoneop", + "AccountingProjectsOneResponseTypedDict": ".accounting_projectsoneop", + "AccountingProjectsUpdateGlobals": ".accounting_projectsupdateop", + "AccountingProjectsUpdateGlobalsTypedDict": ".accounting_projectsupdateop", + "AccountingProjectsUpdateRequest": ".accounting_projectsupdateop", + "AccountingProjectsUpdateRequestTypedDict": ".accounting_projectsupdateop", + "AccountingProjectsUpdateResponse": ".accounting_projectsupdateop", + "AccountingProjectsUpdateResponseTypedDict": ".accounting_projectsupdateop", "AccountingPurchaseOrdersAddGlobals": ".accounting_purchaseordersaddop", "AccountingPurchaseOrdersAddGlobalsTypedDict": ".accounting_purchaseordersaddop", "AccountingPurchaseOrdersAddRequest": ".accounting_purchaseordersaddop", @@ -8672,8 +8838,8 @@ "BalanceByPeriod": ".balancebyperiod", "BalanceByPeriodTypedDict": ".balancebyperiod", "BalanceByTransaction": ".balancebytransaction", + "BalanceByTransactionTransactionType": ".balancebytransaction", "BalanceByTransactionTypedDict": ".balancebytransaction", - "TransactionType": ".balancebytransaction", "BalanceSheet": ".balancesheet", "BalanceSheetAssetsAccount": ".balancesheet", "BalanceSheetAssetsAccountTypedDict": ".balancesheet", @@ -8997,6 +9163,8 @@ "CreatePaymentResponseTypedDict": ".createpaymentresponse", "CreatePipelineResponse": ".createpipelineresponse", "CreatePipelineResponseTypedDict": ".createpipelineresponse", + "CreateProjectResponse": ".createprojectresponse", + "CreateProjectResponseTypedDict": ".createprojectresponse", "CreatePurchaseOrderResponse": ".createpurchaseorderresponse", "CreatePurchaseOrderResponseTypedDict": ".createpurchaseorderresponse", "CreateQuoteResponse": ".createquoteresponse", @@ -9465,6 +9633,8 @@ "DeletePaymentResponseTypedDict": ".deletepaymentresponse", "DeletePipelineResponse": ".deletepipelineresponse", "DeletePipelineResponseTypedDict": ".deletepipelineresponse", + "DeleteProjectResponse": ".deleteprojectresponse", + "DeleteProjectResponseTypedDict": ".deleteprojectresponse", "DeletePurchaseOrderResponse": ".deletepurchaseorderresponse", "DeletePurchaseOrderResponseTypedDict": ".deletepurchaseorderresponse", "DeleteQuoteResponse": ".deletequoteresponse", @@ -10091,6 +10261,10 @@ "GetProductsResponseTypedDict": ".getproductsresponse", "GetProfitAndLossResponse": ".getprofitandlossresponse", "GetProfitAndLossResponseTypedDict": ".getprofitandlossresponse", + "GetProjectResponse": ".getprojectresponse", + "GetProjectResponseTypedDict": ".getprojectresponse", + "GetProjectsResponse": ".getprojectsresponse", + "GetProjectsResponseTypedDict": ".getprojectsresponse", "GetPurchaseOrderResponse": ".getpurchaseorderresponse", "GetPurchaseOrderResponseTypedDict": ".getpurchaseorderresponse", "GetPurchaseOrdersResponse": ".getpurchaseordersresponse", @@ -10322,10 +10496,12 @@ "SalesDetailsTypedDict": ".invoiceitem", "InvoiceItemFilter": ".invoiceitemfilter", "InvoiceItemFilterInvoiceItemType": ".invoiceitemfilter", + "InvoiceItemFilterTransactionType": ".invoiceitemfilter", "InvoiceItemFilterTypedDict": ".invoiceitemfilter", "InvoiceItemType": ".invoiceitemsfilter", "InvoiceItemsFilter": ".invoiceitemsfilter", "InvoiceItemsFilterTypedDict": ".invoiceitemsfilter", + "TransactionType": ".invoiceitemsfilter", "InvoiceItemsSort": ".invoiceitemssort", "InvoiceItemsSortBy": ".invoiceitemssort", "InvoiceItemsSortTypedDict": ".invoiceitemssort", @@ -10650,6 +10826,26 @@ "ProfitAndLossIndicator": ".profitandlossindicator", "ProfitAndLossIndicatorTypedDict": ".profitandlossindicator", "ProfitAndLossType": ".profitandlosstype", + "BillingMethod": ".project", + "ParentProject": ".project", + "ParentProjectTypedDict": ".project", + "Priority": ".project", + "Project": ".project", + "ProjectDepartment": ".project", + "ProjectDepartmentTypedDict": ".project", + "ProjectInput": ".project", + "ProjectInputTypedDict": ".project", + "ProjectPhase": ".project", + "ProjectProjectStatus": ".project", + "ProjectType": ".project", + "ProjectTypedDict": ".project", + "ScheduleStatus": ".project", + "ProjectStatus": ".projectsfilter", + "ProjectsFilter": ".projectsfilter", + "ProjectsFilterTypedDict": ".projectsfilter", + "ProjectsSort": ".projectssort", + "ProjectsSortSortBy": ".projectssort", + "ProjectsSortTypedDict": ".projectssort", "PurchaseOrder": ".purchaseorder", "PurchaseOrderAmortizationType": ".purchaseorder", "PurchaseOrderInput": ".purchaseorder", @@ -10781,10 +10977,10 @@ "TaxRatesFilterTypedDict": ".taxratesfilter", "Team": ".team", "TeamTypedDict": ".team", - "Priority": ".ticket", "Ticket": ".ticket", "TicketInput": ".ticket", "TicketInputTypedDict": ".ticket", + "TicketPriority": ".ticket", "TicketTypedDict": ".ticket", "TicketsSort": ".ticketssort", "TicketsSortBy": ".ticketssort", @@ -10916,6 +11112,8 @@ "UpdatePaymentResponseTypedDict": ".updatepaymentresponse", "UpdatePipelineResponse": ".updatepipelineresponse", "UpdatePipelineResponseTypedDict": ".updatepipelineresponse", + "UpdateProjectResponse": ".updateprojectresponse", + "UpdateProjectResponseTypedDict": ".updateprojectresponse", "UpdatePurchaseOrderResponse": ".updatepurchaseorderresponse", "UpdatePurchaseOrderResponseTypedDict": ".updatepurchaseorderresponse", "UpdateQuoteResponse": ".updatequoteresponse", diff --git a/src/apideck_unify/models/accounting_projectsaddop.py b/src/apideck_unify/models/accounting_projectsaddop.py new file mode 100644 index 00000000..951cdc26 --- /dev/null +++ b/src/apideck_unify/models/accounting_projectsaddop.py @@ -0,0 +1,107 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .createprojectresponse import CreateProjectResponse, CreateProjectResponseTypedDict +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .project import ProjectInput, ProjectInputTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from apideck_unify.types import BaseModel +from apideck_unify.utils import ( + FieldMetadata, + HeaderMetadata, + QueryParamMetadata, + RequestMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AccountingProjectsAddGlobalsTypedDict(TypedDict): + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + + +class AccountingProjectsAddGlobals(BaseModel): + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + +class AccountingProjectsAddRequestTypedDict(TypedDict): + project: ProjectInputTypedDict + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + service_id: NotRequired[str] + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + +class AccountingProjectsAddRequest(BaseModel): + project: Annotated[ + ProjectInput, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + service_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-service-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + +class AccountingProjectsAddResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + create_project_response: NotRequired[CreateProjectResponseTypedDict] + r"""Projects""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class AccountingProjectsAddResponse(BaseModel): + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + create_project_response: Optional[CreateProjectResponse] = None + r"""Projects""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/accounting_projectsallop.py b/src/apideck_unify/models/accounting_projectsallop.py new file mode 100644 index 00000000..bc1e1574 --- /dev/null +++ b/src/apideck_unify/models/accounting_projectsallop.py @@ -0,0 +1,196 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getprojectsresponse import GetProjectsResponse, GetProjectsResponseTypedDict +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .projectsfilter import ProjectsFilter, ProjectsFilterTypedDict +from .projectssort import ProjectsSort, ProjectsSortTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from apideck_unify.utils import FieldMetadata, HeaderMetadata, QueryParamMetadata +import pydantic +from pydantic import model_serializer +from typing import Any, Callable, Dict, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AccountingProjectsAllGlobalsTypedDict(TypedDict): + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + + +class AccountingProjectsAllGlobals(BaseModel): + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + +class AccountingProjectsAllRequestTypedDict(TypedDict): + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + service_id: NotRequired[str] + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + cursor: NotRequired[Nullable[str]] + r"""Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response.""" + limit: NotRequired[int] + r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" + filter_: NotRequired[ProjectsFilterTypedDict] + r"""Apply filters""" + sort: NotRequired[ProjectsSortTypedDict] + r"""Apply sorting""" + pass_through: NotRequired[Dict[str, Any]] + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + fields: NotRequired[Nullable[str]] + r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + + +class AccountingProjectsAllRequest(BaseModel): + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + service_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-service-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + cursor: Annotated[ + OptionalNullable[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = UNSET + r"""Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response.""" + + limit: Annotated[ + Optional[int], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = 20 + r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" + + filter_: Annotated[ + Optional[ProjectsFilter], + pydantic.Field(alias="filter"), + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Apply filters""" + + sort: Annotated[ + Optional[ProjectsSort], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Apply sorting""" + + pass_through: Annotated[ + Optional[Dict[str, Any]], + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads""" + + fields: Annotated[ + OptionalNullable[str], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = UNSET + r"""The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = [ + "raw", + "consumerId", + "appId", + "serviceId", + "cursor", + "limit", + "filter", + "sort", + "pass_through", + "fields", + ] + nullable_fields = ["cursor", "fields"] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m + + +class AccountingProjectsAllResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + get_projects_response: NotRequired[GetProjectsResponseTypedDict] + r"""Projects""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class AccountingProjectsAllResponse(BaseModel): + next: Callable[[], Optional[AccountingProjectsAllResponse]] + + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + get_projects_response: Optional[GetProjectsResponse] = None + r"""Projects""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/accounting_projectsdeleteop.py b/src/apideck_unify/models/accounting_projectsdeleteop.py new file mode 100644 index 00000000..9edcde82 --- /dev/null +++ b/src/apideck_unify/models/accounting_projectsdeleteop.py @@ -0,0 +1,107 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .deleteprojectresponse import DeleteProjectResponse, DeleteProjectResponseTypedDict +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from apideck_unify.types import BaseModel +from apideck_unify.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AccountingProjectsDeleteGlobalsTypedDict(TypedDict): + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + + +class AccountingProjectsDeleteGlobals(BaseModel): + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + +class AccountingProjectsDeleteRequestTypedDict(TypedDict): + id: str + r"""ID of the record you are acting upon.""" + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + service_id: NotRequired[str] + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + + +class AccountingProjectsDeleteRequest(BaseModel): + id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the record you are acting upon.""" + + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + service_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-service-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + +class AccountingProjectsDeleteResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + delete_project_response: NotRequired[DeleteProjectResponseTypedDict] + r"""Projects""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class AccountingProjectsDeleteResponse(BaseModel): + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + delete_project_response: Optional[DeleteProjectResponse] = None + r"""Projects""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/accounting_projectsoneop.py b/src/apideck_unify/models/accounting_projectsoneop.py new file mode 100644 index 00000000..5bb033ab --- /dev/null +++ b/src/apideck_unify/models/accounting_projectsoneop.py @@ -0,0 +1,107 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getprojectresponse import GetProjectResponse, GetProjectResponseTypedDict +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from apideck_unify.types import BaseModel +from apideck_unify.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AccountingProjectsOneGlobalsTypedDict(TypedDict): + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + + +class AccountingProjectsOneGlobals(BaseModel): + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + +class AccountingProjectsOneRequestTypedDict(TypedDict): + id: str + r"""ID of the record you are acting upon.""" + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + service_id: NotRequired[str] + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + + +class AccountingProjectsOneRequest(BaseModel): + id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the record you are acting upon.""" + + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + service_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-service-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + +class AccountingProjectsOneResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + get_project_response: NotRequired[GetProjectResponseTypedDict] + r"""Projects""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class AccountingProjectsOneResponse(BaseModel): + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + get_project_response: Optional[GetProjectResponse] = None + r"""Projects""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/accounting_projectsupdateop.py b/src/apideck_unify/models/accounting_projectsupdateop.py new file mode 100644 index 00000000..407b99c2 --- /dev/null +++ b/src/apideck_unify/models/accounting_projectsupdateop.py @@ -0,0 +1,115 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .project import ProjectInput, ProjectInputTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from .updateprojectresponse import UpdateProjectResponse, UpdateProjectResponseTypedDict +from apideck_unify.types import BaseModel +from apideck_unify.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, + RequestMetadata, +) +import pydantic +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AccountingProjectsUpdateGlobalsTypedDict(TypedDict): + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + + +class AccountingProjectsUpdateGlobals(BaseModel): + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + +class AccountingProjectsUpdateRequestTypedDict(TypedDict): + id: str + r"""ID of the record you are acting upon.""" + project: ProjectInputTypedDict + consumer_id: NotRequired[str] + r"""ID of the consumer which you want to get or push data from""" + app_id: NotRequired[str] + r"""The ID of your Unify application""" + service_id: NotRequired[str] + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + + +class AccountingProjectsUpdateRequest(BaseModel): + id: Annotated[ + str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False)) + ] + r"""ID of the record you are acting upon.""" + + project: Annotated[ + ProjectInput, + FieldMetadata(request=RequestMetadata(media_type="application/json")), + ] + + consumer_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-consumer-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""ID of the consumer which you want to get or push data from""" + + app_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-app-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of your Unify application""" + + service_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-service-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API.""" + + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + +class AccountingProjectsUpdateResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + update_project_response: NotRequired[UpdateProjectResponseTypedDict] + r"""Projects""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class AccountingProjectsUpdateResponse(BaseModel): + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + update_project_response: Optional[UpdateProjectResponse] = None + r"""Projects""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/address.py b/src/apideck_unify/models/address.py index a073ebdf..b03b5cc7 100644 --- a/src/apideck_unify/models/address.py +++ b/src/apideck_unify/models/address.py @@ -43,6 +43,8 @@ class AddressTypedDict(TypedDict): r"""Line 3 of the address""" line4: NotRequired[Nullable[str]] r"""Line 4 of the address""" + line5: NotRequired[Nullable[str]] + r"""Line 5 of the address""" street_number: NotRequired[Nullable[str]] r"""Street number""" city: NotRequired[Nullable[str]] @@ -102,6 +104,9 @@ class Address(BaseModel): line4: OptionalNullable[str] = UNSET r"""Line 4 of the address""" + line5: OptionalNullable[str] = UNSET + r"""Line 5 of the address""" + street_number: OptionalNullable[str] = UNSET r"""Street number""" @@ -161,6 +166,7 @@ def serialize_model(self, handler): "line2", "line3", "line4", + "line5", "street_number", "city", "state", @@ -187,6 +193,7 @@ def serialize_model(self, handler): "line2", "line3", "line4", + "line5", "street_number", "city", "state", diff --git a/src/apideck_unify/models/balancebytransaction.py b/src/apideck_unify/models/balancebytransaction.py index 729ed234..393ec659 100644 --- a/src/apideck_unify/models/balancebytransaction.py +++ b/src/apideck_unify/models/balancebytransaction.py @@ -8,7 +8,7 @@ from typing_extensions import NotRequired, TypedDict -class TransactionType(str, Enum): +class BalanceByTransactionTransactionType(str, Enum): r"""Type of the transaction.""" INVOICE = "invoice" @@ -23,7 +23,7 @@ class BalanceByTransactionTypedDict(TypedDict): r"""Unique identifier for the transaction.""" transaction_date: NotRequired[date] r"""Date of the transaction.""" - transaction_type: NotRequired[TransactionType] + transaction_type: NotRequired[BalanceByTransactionTransactionType] r"""Type of the transaction.""" due_date: NotRequired[date] r"""Due date of the transaction.""" @@ -42,7 +42,7 @@ class BalanceByTransaction(BaseModel): transaction_date: Optional[date] = None r"""Date of the transaction.""" - transaction_type: Optional[TransactionType] = None + transaction_type: Optional[BalanceByTransactionTransactionType] = None r"""Type of the transaction.""" due_date: Optional[date] = None diff --git a/src/apideck_unify/models/categoriesfilter.py b/src/apideck_unify/models/categoriesfilter.py index 1bcb586e..e9c02ac8 100644 --- a/src/apideck_unify/models/categoriesfilter.py +++ b/src/apideck_unify/models/categoriesfilter.py @@ -14,6 +14,7 @@ class CategoriesFilterType(str, Enum): SUPPLIER = "supplier" EXPENSE = "expense" REVENUE = "revenue" + CUSTOMER = "customer" class CategoriesFilterTypedDict(TypedDict): diff --git a/src/apideck_unify/models/category.py b/src/apideck_unify/models/category.py index cc5485e0..2e77d128 100644 --- a/src/apideck_unify/models/category.py +++ b/src/apideck_unify/models/category.py @@ -22,6 +22,7 @@ class CategoryType(str, Enum): SUPPLIER = "supplier" EXPENSE = "expense" REVENUE = "revenue" + CUSTOMER = "customer" class CategoryStatus(str, Enum): diff --git a/src/apideck_unify/models/createprojectresponse.py b/src/apideck_unify/models/createprojectresponse.py new file mode 100644 index 00000000..4cea439f --- /dev/null +++ b/src/apideck_unify/models/createprojectresponse.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .unifiedid import UnifiedID, UnifiedIDTypedDict +from apideck_unify.types import BaseModel +from typing_extensions import TypedDict + + +class CreateProjectResponseTypedDict(TypedDict): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + status: str + r"""HTTP Response Status""" + service: str + r"""Apideck ID of service provider""" + resource: str + r"""Unified API resource name""" + operation: str + r"""Operation performed""" + data: UnifiedIDTypedDict + r"""A object containing a unique identifier for the resource that was created, updated, or deleted.""" + + +class CreateProjectResponse(BaseModel): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + + status: str + r"""HTTP Response Status""" + + service: str + r"""Apideck ID of service provider""" + + resource: str + r"""Unified API resource name""" + + operation: str + r"""Operation performed""" + + data: UnifiedID + r"""A object containing a unique identifier for the resource that was created, updated, or deleted.""" diff --git a/src/apideck_unify/models/customer.py b/src/apideck_unify/models/customer.py index 4e2db1bd..83ae7f57 100644 --- a/src/apideck_unify/models/customer.py +++ b/src/apideck_unify/models/customer.py @@ -54,6 +54,8 @@ class CustomerTypedDict(TypedDict): r"""The name of the company.""" company_id: NotRequired[Nullable[str]] r"""The company ID the transaction belongs to""" + customer_category: NotRequired[Nullable[str]] + r"""The category/type of the customer""" title: NotRequired[Nullable[str]] r"""The job title of the person.""" first_name: NotRequired[Nullable[str]] @@ -85,6 +87,8 @@ class CustomerTypedDict(TypedDict): r"""Customer status""" payment_method: NotRequired[Nullable[str]] r"""Payment method used for the transaction, such as cash, credit card, bank transfer, or check""" + terms: NotRequired[Nullable[str]] + r"""Terms of payment.""" channel: NotRequired[Nullable[str]] r"""The channel through which the transaction is processed.""" custom_fields: NotRequired[List[CustomFieldTypedDict]] @@ -123,6 +127,9 @@ class Customer(BaseModel): company_id: OptionalNullable[str] = UNSET r"""The company ID the transaction belongs to""" + customer_category: OptionalNullable[str] = UNSET + r"""The category/type of the customer""" + title: OptionalNullable[str] = UNSET r"""The job title of the person.""" @@ -174,6 +181,9 @@ class Customer(BaseModel): payment_method: OptionalNullable[str] = UNSET r"""Payment method used for the transaction, such as cash, credit card, bank transfer, or check""" + terms: OptionalNullable[str] = UNSET + r"""Terms of payment.""" + channel: OptionalNullable[str] = UNSET r"""The channel through which the transaction is processed.""" @@ -208,6 +218,7 @@ def serialize_model(self, handler): "display_name", "company_name", "company_id", + "customer_category", "title", "first_name", "middle_name", @@ -228,6 +239,7 @@ def serialize_model(self, handler): "parent", "status", "payment_method", + "terms", "channel", "custom_fields", "custom_mappings", @@ -244,6 +256,7 @@ def serialize_model(self, handler): "display_name", "company_name", "company_id", + "customer_category", "title", "first_name", "middle_name", @@ -258,6 +271,7 @@ def serialize_model(self, handler): "parent", "status", "payment_method", + "terms", "channel", "custom_mappings", "updated_by", @@ -302,6 +316,8 @@ class CustomerInputTypedDict(TypedDict): r"""The name of the company.""" company_id: NotRequired[Nullable[str]] r"""The company ID the transaction belongs to""" + customer_category: NotRequired[Nullable[str]] + r"""The category/type of the customer""" title: NotRequired[Nullable[str]] r"""The job title of the person.""" first_name: NotRequired[Nullable[str]] @@ -333,6 +349,8 @@ class CustomerInputTypedDict(TypedDict): r"""Customer status""" payment_method: NotRequired[Nullable[str]] r"""Payment method used for the transaction, such as cash, credit card, bank transfer, or check""" + terms: NotRequired[Nullable[str]] + r"""Terms of payment.""" channel: NotRequired[Nullable[str]] r"""The channel through which the transaction is processed.""" custom_fields: NotRequired[List[CustomFieldTypedDict]] @@ -355,6 +373,9 @@ class CustomerInput(BaseModel): company_id: OptionalNullable[str] = UNSET r"""The company ID the transaction belongs to""" + customer_category: OptionalNullable[str] = UNSET + r"""The category/type of the customer""" + title: OptionalNullable[str] = UNSET r"""The job title of the person.""" @@ -406,6 +427,9 @@ class CustomerInput(BaseModel): payment_method: OptionalNullable[str] = UNSET r"""Payment method used for the transaction, such as cash, credit card, bank transfer, or check""" + terms: OptionalNullable[str] = UNSET + r"""Terms of payment.""" + channel: OptionalNullable[str] = UNSET r"""The channel through which the transaction is processed.""" @@ -424,6 +448,7 @@ def serialize_model(self, handler): "display_name", "company_name", "company_id", + "customer_category", "title", "first_name", "middle_name", @@ -444,6 +469,7 @@ def serialize_model(self, handler): "parent", "status", "payment_method", + "terms", "channel", "custom_fields", "row_version", @@ -454,6 +480,7 @@ def serialize_model(self, handler): "display_name", "company_name", "company_id", + "customer_category", "title", "first_name", "middle_name", @@ -468,6 +495,7 @@ def serialize_model(self, handler): "parent", "status", "payment_method", + "terms", "channel", "row_version", ] diff --git a/src/apideck_unify/models/deleteprojectresponse.py b/src/apideck_unify/models/deleteprojectresponse.py new file mode 100644 index 00000000..5ce47f49 --- /dev/null +++ b/src/apideck_unify/models/deleteprojectresponse.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .unifiedid import UnifiedID, UnifiedIDTypedDict +from apideck_unify.types import BaseModel +from typing_extensions import TypedDict + + +class DeleteProjectResponseTypedDict(TypedDict): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + status: str + r"""HTTP Response Status""" + service: str + r"""Apideck ID of service provider""" + resource: str + r"""Unified API resource name""" + operation: str + r"""Operation performed""" + data: UnifiedIDTypedDict + r"""A object containing a unique identifier for the resource that was created, updated, or deleted.""" + + +class DeleteProjectResponse(BaseModel): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + + status: str + r"""HTTP Response Status""" + + service: str + r"""Apideck ID of service provider""" + + resource: str + r"""Unified API resource name""" + + operation: str + r"""Operation performed""" + + data: UnifiedID + r"""A object containing a unique identifier for the resource that was created, updated, or deleted.""" diff --git a/src/apideck_unify/models/getprojectresponse.py b/src/apideck_unify/models/getprojectresponse.py new file mode 100644 index 00000000..a61c1e4a --- /dev/null +++ b/src/apideck_unify/models/getprojectresponse.py @@ -0,0 +1,43 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .project import Project, ProjectTypedDict +from apideck_unify.types import BaseModel +from typing_extensions import TypedDict + + +class GetProjectResponseTypedDict(TypedDict): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + status: str + r"""HTTP Response Status""" + service: str + r"""Apideck ID of service provider""" + resource: str + r"""Unified API resource name""" + operation: str + r"""Operation performed""" + data: ProjectTypedDict + + +class GetProjectResponse(BaseModel): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + + status: str + r"""HTTP Response Status""" + + service: str + r"""Apideck ID of service provider""" + + resource: str + r"""Unified API resource name""" + + operation: str + r"""Operation performed""" + + data: Project diff --git a/src/apideck_unify/models/getprojectsresponse.py b/src/apideck_unify/models/getprojectsresponse.py new file mode 100644 index 00000000..df3ff913 --- /dev/null +++ b/src/apideck_unify/models/getprojectsresponse.py @@ -0,0 +1,56 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .links import Links, LinksTypedDict +from .meta import Meta, MetaTypedDict +from .project import Project, ProjectTypedDict +from apideck_unify.types import BaseModel +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class GetProjectsResponseTypedDict(TypedDict): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + status: str + r"""HTTP Response Status""" + service: str + r"""Apideck ID of service provider""" + resource: str + r"""Unified API resource name""" + operation: str + r"""Operation performed""" + data: List[ProjectTypedDict] + meta: NotRequired[MetaTypedDict] + r"""Response metadata""" + links: NotRequired[LinksTypedDict] + r"""Links to navigate to previous or next pages through the API""" + + +class GetProjectsResponse(BaseModel): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + + status: str + r"""HTTP Response Status""" + + service: str + r"""Apideck ID of service provider""" + + resource: str + r"""Unified API resource name""" + + operation: str + r"""Operation performed""" + + data: List[Project] + + meta: Optional[Meta] = None + r"""Response metadata""" + + links: Optional[Links] = None + r"""Links to navigate to previous or next pages through the API""" diff --git a/src/apideck_unify/models/invoiceitemfilter.py b/src/apideck_unify/models/invoiceitemfilter.py index cf768b3d..07f84e6a 100644 --- a/src/apideck_unify/models/invoiceitemfilter.py +++ b/src/apideck_unify/models/invoiceitemfilter.py @@ -22,9 +22,18 @@ class InvoiceItemFilterInvoiceItemType(str, Enum): OTHER = "other" +class InvoiceItemFilterTransactionType(str, Enum): + r"""The kind of transaction, indicating whether it is a sales transaction or a purchase transaction.""" + + SALE = "sale" + PURCHASE = "purchase" + + class InvoiceItemFilterTypedDict(TypedDict): type: NotRequired[Nullable[InvoiceItemFilterInvoiceItemType]] r"""The type of invoice item, indicating whether it is an inventory item, a service, or another type.""" + transaction_type: NotRequired[Nullable[InvoiceItemFilterTransactionType]] + r"""The kind of transaction, indicating whether it is a sales transaction or a purchase transaction.""" class InvoiceItemFilter(BaseModel): @@ -33,10 +42,15 @@ class InvoiceItemFilter(BaseModel): ] = UNSET r"""The type of invoice item, indicating whether it is an inventory item, a service, or another type.""" + transaction_type: Annotated[ + OptionalNullable[InvoiceItemFilterTransactionType], FieldMetadata(query=True) + ] = UNSET + r"""The kind of transaction, indicating whether it is a sales transaction or a purchase transaction.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["type"] - nullable_fields = ["type"] + optional_fields = ["type", "transaction_type"] + nullable_fields = ["type", "transaction_type"] null_default_fields = [] serialized = handler(self) diff --git a/src/apideck_unify/models/invoiceitemsfilter.py b/src/apideck_unify/models/invoiceitemsfilter.py index 2503f3be..68d4db5b 100644 --- a/src/apideck_unify/models/invoiceitemsfilter.py +++ b/src/apideck_unify/models/invoiceitemsfilter.py @@ -23,11 +23,20 @@ class InvoiceItemType(str, Enum): OTHER = "other" +class TransactionType(str, Enum): + r"""The kind of transaction, indicating whether it is a sales transaction or a purchase transaction.""" + + SALE = "sale" + PURCHASE = "purchase" + + class InvoiceItemsFilterTypedDict(TypedDict): name: NotRequired[str] r"""Name of Invoice Items to search for""" type: NotRequired[Nullable[InvoiceItemType]] r"""The type of invoice item, indicating whether it is an inventory item, a service, or another type.""" + transaction_type: NotRequired[Nullable[TransactionType]] + r"""The kind of transaction, indicating whether it is a sales transaction or a purchase transaction.""" class InvoiceItemsFilter(BaseModel): @@ -39,10 +48,15 @@ class InvoiceItemsFilter(BaseModel): ) r"""The type of invoice item, indicating whether it is an inventory item, a service, or another type.""" + transaction_type: Annotated[ + OptionalNullable[TransactionType], FieldMetadata(query=True) + ] = UNSET + r"""The kind of transaction, indicating whether it is a sales transaction or a purchase transaction.""" + @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["name", "type"] - nullable_fields = ["type"] + optional_fields = ["name", "type", "transaction_type"] + nullable_fields = ["type", "transaction_type"] null_default_fields = [] serialized = handler(self) diff --git a/src/apideck_unify/models/invoicesfilter.py b/src/apideck_unify/models/invoicesfilter.py index dd08ae89..97758196 100644 --- a/src/apideck_unify/models/invoicesfilter.py +++ b/src/apideck_unify/models/invoicesfilter.py @@ -13,6 +13,8 @@ class InvoicesFilterTypedDict(TypedDict): created_since: NotRequired[datetime] number: NotRequired[str] r"""Invoice number to search for""" + supplier_id: NotRequired[str] + r"""Supplier ID to filter invoices by""" class InvoicesFilter(BaseModel): @@ -22,3 +24,6 @@ class InvoicesFilter(BaseModel): number: Annotated[Optional[str], FieldMetadata(query=True)] = None r"""Invoice number to search for""" + + supplier_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Supplier ID to filter invoices by""" diff --git a/src/apideck_unify/models/journalentry.py b/src/apideck_unify/models/journalentry.py index 3bfb803f..2b20344c 100644 --- a/src/apideck_unify/models/journalentry.py +++ b/src/apideck_unify/models/journalentry.py @@ -44,6 +44,8 @@ class JournalEntryStatus(str, Enum): class JournalEntryTypedDict(TypedDict): id: NotRequired[str] r"""A unique identifier for an object.""" + downstream_id: NotRequired[Nullable[str]] + r"""The third-party API ID of original entity""" title: NotRequired[Nullable[str]] r"""Journal entry title""" currency_rate: NotRequired[Nullable[float]] @@ -74,6 +76,12 @@ class JournalEntryTypedDict(TypedDict): r"""A list of linked tracking categories.""" accounting_period: NotRequired[Nullable[str]] r"""Accounting period""" + tax_inclusive: NotRequired[Nullable[bool]] + r"""Amounts are including tax""" + source_type: NotRequired[Nullable[str]] + r"""The source type of the journal entry""" + source_id: NotRequired[Nullable[str]] + r"""A unique identifier for the source of the journal entry""" custom_mappings: NotRequired[Nullable[Dict[str, Any]]] r"""When custom mappings are configured on the resource, the result is included here.""" updated_by: NotRequired[Nullable[str]] @@ -95,6 +103,9 @@ class JournalEntry(BaseModel): id: Optional[str] = None r"""A unique identifier for an object.""" + downstream_id: OptionalNullable[str] = UNSET + r"""The third-party API ID of original entity""" + title: OptionalNullable[str] = UNSET r"""Journal entry title""" @@ -139,6 +150,15 @@ class JournalEntry(BaseModel): accounting_period: OptionalNullable[str] = UNSET r"""Accounting period""" + tax_inclusive: OptionalNullable[bool] = UNSET + r"""Amounts are including tax""" + + source_type: OptionalNullable[str] = UNSET + r"""The source type of the journal entry""" + + source_id: OptionalNullable[str] = UNSET + r"""A unique identifier for the source of the journal entry""" + custom_mappings: OptionalNullable[Dict[str, Any]] = UNSET r"""When custom mappings are configured on the resource, the result is included here.""" @@ -166,6 +186,7 @@ class JournalEntry(BaseModel): def serialize_model(self, handler): optional_fields = [ "id", + "downstream_id", "title", "currency_rate", "currency", @@ -180,6 +201,9 @@ def serialize_model(self, handler): "number", "tracking_categories", "accounting_period", + "tax_inclusive", + "source_type", + "source_id", "custom_mappings", "updated_by", "created_by", @@ -190,6 +214,7 @@ def serialize_model(self, handler): "pass_through", ] nullable_fields = [ + "downstream_id", "title", "currency_rate", "currency", @@ -202,6 +227,9 @@ def serialize_model(self, handler): "number", "tracking_categories", "accounting_period", + "tax_inclusive", + "source_type", + "source_id", "custom_mappings", "updated_by", "created_by", @@ -267,6 +295,12 @@ class JournalEntryInputTypedDict(TypedDict): r"""A list of linked tracking categories.""" accounting_period: NotRequired[Nullable[str]] r"""Accounting period""" + tax_inclusive: NotRequired[Nullable[bool]] + r"""Amounts are including tax""" + source_type: NotRequired[Nullable[str]] + r"""The source type of the journal entry""" + source_id: NotRequired[Nullable[str]] + r"""A unique identifier for the source of the journal entry""" row_version: NotRequired[Nullable[str]] r"""A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.""" custom_fields: NotRequired[List[CustomFieldTypedDict]] @@ -319,6 +353,15 @@ class JournalEntryInput(BaseModel): accounting_period: OptionalNullable[str] = UNSET r"""Accounting period""" + tax_inclusive: OptionalNullable[bool] = UNSET + r"""Amounts are including tax""" + + source_type: OptionalNullable[str] = UNSET + r"""The source type of the journal entry""" + + source_id: OptionalNullable[str] = UNSET + r"""A unique identifier for the source of the journal entry""" + row_version: OptionalNullable[str] = UNSET r"""A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.""" @@ -344,6 +387,9 @@ def serialize_model(self, handler): "number", "tracking_categories", "accounting_period", + "tax_inclusive", + "source_type", + "source_id", "row_version", "custom_fields", "pass_through", @@ -361,6 +407,9 @@ def serialize_model(self, handler): "number", "tracking_categories", "accounting_period", + "tax_inclusive", + "source_type", + "source_id", "row_version", ] null_default_fields = [] diff --git a/src/apideck_unify/models/project.py b/src/apideck_unify/models/project.py new file mode 100644 index 00000000..fcc85d4f --- /dev/null +++ b/src/apideck_unify/models/project.py @@ -0,0 +1,718 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .address import Address, AddressTypedDict +from .currency import Currency +from .customfield import CustomField, CustomFieldTypedDict +from .linkedcustomer import LinkedCustomer, LinkedCustomerTypedDict +from .linkedcustomer_input import LinkedCustomerInput, LinkedCustomerInputTypedDict +from .linkedtaxrate import LinkedTaxRate, LinkedTaxRateTypedDict +from .linkedtaxrate_input import LinkedTaxRateInput, LinkedTaxRateInputTypedDict +from .linkedtrackingcategory import ( + LinkedTrackingCategory, + LinkedTrackingCategoryTypedDict, +) +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from datetime import date, datetime +from enum import Enum +from pydantic import model_serializer +from typing import List, Optional +from typing_extensions import NotRequired, TypedDict + + +class ProjectProjectStatus(str, Enum): + r"""Current status of the project""" + + ACTIVE = "active" + COMPLETED = "completed" + ON_HOLD = "on_hold" + CANCELLED = "cancelled" + DRAFT = "draft" + OTHER = "other" + + +class ProjectType(str, Enum): + r"""Type or category of the project""" + + CLIENT_PROJECT = "client_project" + INTERNAL_PROJECT = "internal_project" + MAINTENANCE = "maintenance" + RESEARCH_DEVELOPMENT = "research_development" + TRAINING = "training" + OTHER = "other" + + +class Priority(str, Enum): + r"""Priority level of the project""" + + LOW = "low" + MEDIUM = "medium" + HIGH = "high" + CRITICAL = "critical" + + +class ProjectDepartmentTypedDict(TypedDict): + r"""Department or organizational unit associated with the project""" + + id: NotRequired[str] + r"""Unique identifier for the department""" + name: NotRequired[str] + r"""Name of the department""" + + +class ProjectDepartment(BaseModel): + r"""Department or organizational unit associated with the project""" + + id: Optional[str] = None + r"""Unique identifier for the department""" + + name: Optional[str] = None + r"""Name of the department""" + + +class ParentProjectTypedDict(TypedDict): + r"""Parent project if this is a subproject""" + + id: NotRequired[str] + r"""Unique identifier for the parent project""" + name: NotRequired[str] + r"""Name of the parent project""" + + +class ParentProject(BaseModel): + r"""Parent project if this is a subproject""" + + id: Optional[str] = None + r"""Unique identifier for the parent project""" + + name: Optional[str] = None + r"""Name of the parent project""" + + +class BillingMethod(str, Enum): + r"""Method used for billing this project""" + + FIXED_PRICE = "fixed_price" + TIME_AND_MATERIALS = "time_and_materials" + MILESTONE_BASED = "milestone_based" + RETAINER = "retainer" + NON_BILLABLE = "non_billable" + + +class ProjectPhase(str, Enum): + r"""Current phase of the project lifecycle""" + + INITIATION = "initiation" + PLANNING = "planning" + EXECUTION = "execution" + MONITORING = "monitoring" + CLOSURE = "closure" + OTHER = "other" + + +class ScheduleStatus(str, Enum): + r"""Current status of project schedule compared to plan""" + + AHEAD_OF_SCHEDULE = "ahead_of_schedule" + ON_SCHEDULE = "on_schedule" + BEHIND_SCHEDULE = "behind_schedule" + CRITICAL_DELAY = "critical_delay" + + +class ProjectTypedDict(TypedDict): + name: str + r"""Name of the project""" + id: NotRequired[str] + r"""A unique identifier for an object.""" + downstream_id: NotRequired[Nullable[str]] + r"""The third-party API ID of original entity""" + display_id: NotRequired[Nullable[str]] + r"""User-friendly project identifier""" + reference_id: NotRequired[Nullable[str]] + r"""External reference identifier for the project""" + description: NotRequired[Nullable[str]] + r"""Detailed description of the project""" + status: NotRequired[Nullable[ProjectProjectStatus]] + r"""Current status of the project""" + project_type: NotRequired[Nullable[ProjectType]] + r"""Type or category of the project""" + priority: NotRequired[Nullable[Priority]] + r"""Priority level of the project""" + completion_percentage: NotRequired[Nullable[float]] + r"""Percentage of project completion (0-100)""" + start_date: NotRequired[Nullable[date]] + r"""Start date of the project""" + end_date: NotRequired[Nullable[date]] + r"""Expected or actual end date of the project""" + customer: NotRequired[Nullable[LinkedCustomerTypedDict]] + r"""The customer this entity is linked to.""" + department: NotRequired[Nullable[ProjectDepartmentTypedDict]] + r"""Department or organizational unit associated with the project""" + company_id: NotRequired[Nullable[str]] + r"""The company ID the transaction belongs to""" + owner_id: NotRequired[Nullable[str]] + r"""ID of the user who owns/manages this project""" + parent_project: NotRequired[Nullable[ParentProjectTypedDict]] + r"""Parent project if this is a subproject""" + currency: NotRequired[Nullable[Currency]] + r"""Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).""" + budget_amount: NotRequired[Nullable[float]] + r"""Total budgeted amount for the project""" + approved_amount: NotRequired[Nullable[float]] + r"""Approved budget amount for the project""" + actual_amount: NotRequired[Nullable[float]] + r"""Total actual amount spent on the project""" + budget_hours: NotRequired[Nullable[float]] + r"""Total budgeted hours for the project""" + actual_hours: NotRequired[Nullable[float]] + r"""Total actual hours worked on the project""" + hourly_rate: NotRequired[Nullable[float]] + r"""Default hourly rate for project work""" + billing_method: NotRequired[Nullable[BillingMethod]] + r"""Method used for billing this project""" + is_billable: NotRequired[Nullable[bool]] + r"""Indicates if the project is billable to the customer""" + phase: NotRequired[Nullable[ProjectPhase]] + r"""Current phase of the project lifecycle""" + tax_rate: NotRequired[LinkedTaxRateTypedDict] + tracking_categories: NotRequired[ + Nullable[List[Nullable[LinkedTrackingCategoryTypedDict]]] + ] + r"""A list of linked tracking categories.""" + tags: NotRequired[List[str]] + r"""Tags associated with the project""" + notes: NotRequired[Nullable[str]] + r"""Additional notes about the project""" + contract_number: NotRequired[Nullable[str]] + r"""Contract or agreement number associated with the project""" + profit_margin: NotRequired[Nullable[float]] + r"""Expected profit margin percentage for the project""" + schedule_status: NotRequired[Nullable[ScheduleStatus]] + r"""Current status of project schedule compared to plan""" + addresses: NotRequired[List[AddressTypedDict]] + r"""An array of addresses associated with the project (billing, job site, etc.)""" + team_size: NotRequired[Nullable[int]] + r"""Number of team members assigned to the project""" + custom_fields: NotRequired[List[CustomFieldTypedDict]] + row_version: NotRequired[Nullable[str]] + r"""A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.""" + updated_by: NotRequired[Nullable[str]] + r"""The user who last updated the object.""" + created_by: NotRequired[Nullable[str]] + r"""The user who created the object.""" + created_at: NotRequired[Nullable[datetime]] + r"""The date and time when the object was created.""" + updated_at: NotRequired[Nullable[datetime]] + r"""The date and time when the object was last updated.""" + + +class Project(BaseModel): + name: str + r"""Name of the project""" + + id: Optional[str] = None + r"""A unique identifier for an object.""" + + downstream_id: OptionalNullable[str] = UNSET + r"""The third-party API ID of original entity""" + + display_id: OptionalNullable[str] = UNSET + r"""User-friendly project identifier""" + + reference_id: OptionalNullable[str] = UNSET + r"""External reference identifier for the project""" + + description: OptionalNullable[str] = UNSET + r"""Detailed description of the project""" + + status: OptionalNullable[ProjectProjectStatus] = UNSET + r"""Current status of the project""" + + project_type: OptionalNullable[ProjectType] = UNSET + r"""Type or category of the project""" + + priority: OptionalNullable[Priority] = UNSET + r"""Priority level of the project""" + + completion_percentage: OptionalNullable[float] = UNSET + r"""Percentage of project completion (0-100)""" + + start_date: OptionalNullable[date] = UNSET + r"""Start date of the project""" + + end_date: OptionalNullable[date] = UNSET + r"""Expected or actual end date of the project""" + + customer: OptionalNullable[LinkedCustomer] = UNSET + r"""The customer this entity is linked to.""" + + department: OptionalNullable[ProjectDepartment] = UNSET + r"""Department or organizational unit associated with the project""" + + company_id: OptionalNullable[str] = UNSET + r"""The company ID the transaction belongs to""" + + owner_id: OptionalNullable[str] = UNSET + r"""ID of the user who owns/manages this project""" + + parent_project: OptionalNullable[ParentProject] = UNSET + r"""Parent project if this is a subproject""" + + currency: OptionalNullable[Currency] = UNSET + r"""Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).""" + + budget_amount: OptionalNullable[float] = UNSET + r"""Total budgeted amount for the project""" + + approved_amount: OptionalNullable[float] = UNSET + r"""Approved budget amount for the project""" + + actual_amount: OptionalNullable[float] = UNSET + r"""Total actual amount spent on the project""" + + budget_hours: OptionalNullable[float] = UNSET + r"""Total budgeted hours for the project""" + + actual_hours: OptionalNullable[float] = UNSET + r"""Total actual hours worked on the project""" + + hourly_rate: OptionalNullable[float] = UNSET + r"""Default hourly rate for project work""" + + billing_method: OptionalNullable[BillingMethod] = UNSET + r"""Method used for billing this project""" + + is_billable: OptionalNullable[bool] = True + r"""Indicates if the project is billable to the customer""" + + phase: OptionalNullable[ProjectPhase] = UNSET + r"""Current phase of the project lifecycle""" + + tax_rate: Optional[LinkedTaxRate] = None + + tracking_categories: OptionalNullable[List[Nullable[LinkedTrackingCategory]]] = ( + UNSET + ) + r"""A list of linked tracking categories.""" + + tags: Optional[List[str]] = None + r"""Tags associated with the project""" + + notes: OptionalNullable[str] = UNSET + r"""Additional notes about the project""" + + contract_number: OptionalNullable[str] = UNSET + r"""Contract or agreement number associated with the project""" + + profit_margin: OptionalNullable[float] = UNSET + r"""Expected profit margin percentage for the project""" + + schedule_status: OptionalNullable[ScheduleStatus] = UNSET + r"""Current status of project schedule compared to plan""" + + addresses: Optional[List[Address]] = None + r"""An array of addresses associated with the project (billing, job site, etc.)""" + + team_size: OptionalNullable[int] = UNSET + r"""Number of team members assigned to the project""" + + custom_fields: Optional[List[CustomField]] = None + + row_version: OptionalNullable[str] = UNSET + r"""A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.""" + + updated_by: OptionalNullable[str] = UNSET + r"""The user who last updated the object.""" + + created_by: OptionalNullable[str] = UNSET + r"""The user who created the object.""" + + created_at: OptionalNullable[datetime] = UNSET + r"""The date and time when the object was created.""" + + updated_at: OptionalNullable[datetime] = UNSET + r"""The date and time when the object was last updated.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = [ + "id", + "downstream_id", + "display_id", + "reference_id", + "description", + "status", + "project_type", + "priority", + "completion_percentage", + "start_date", + "end_date", + "customer", + "department", + "company_id", + "owner_id", + "parent_project", + "currency", + "budget_amount", + "approved_amount", + "actual_amount", + "budget_hours", + "actual_hours", + "hourly_rate", + "billing_method", + "is_billable", + "phase", + "tax_rate", + "tracking_categories", + "tags", + "notes", + "contract_number", + "profit_margin", + "schedule_status", + "addresses", + "team_size", + "custom_fields", + "row_version", + "updated_by", + "created_by", + "created_at", + "updated_at", + ] + nullable_fields = [ + "downstream_id", + "display_id", + "reference_id", + "description", + "status", + "project_type", + "priority", + "completion_percentage", + "start_date", + "end_date", + "customer", + "department", + "company_id", + "owner_id", + "parent_project", + "currency", + "budget_amount", + "approved_amount", + "actual_amount", + "budget_hours", + "actual_hours", + "hourly_rate", + "billing_method", + "is_billable", + "phase", + "tracking_categories", + "notes", + "contract_number", + "profit_margin", + "schedule_status", + "team_size", + "row_version", + "updated_by", + "created_by", + "created_at", + "updated_at", + ] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m + + +class ProjectInputTypedDict(TypedDict): + name: str + r"""Name of the project""" + display_id: NotRequired[Nullable[str]] + r"""User-friendly project identifier""" + reference_id: NotRequired[Nullable[str]] + r"""External reference identifier for the project""" + description: NotRequired[Nullable[str]] + r"""Detailed description of the project""" + status: NotRequired[Nullable[ProjectProjectStatus]] + r"""Current status of the project""" + project_type: NotRequired[Nullable[ProjectType]] + r"""Type or category of the project""" + priority: NotRequired[Nullable[Priority]] + r"""Priority level of the project""" + completion_percentage: NotRequired[Nullable[float]] + r"""Percentage of project completion (0-100)""" + start_date: NotRequired[Nullable[date]] + r"""Start date of the project""" + end_date: NotRequired[Nullable[date]] + r"""Expected or actual end date of the project""" + customer: NotRequired[Nullable[LinkedCustomerInputTypedDict]] + r"""The customer this entity is linked to.""" + department: NotRequired[Nullable[ProjectDepartmentTypedDict]] + r"""Department or organizational unit associated with the project""" + company_id: NotRequired[Nullable[str]] + r"""The company ID the transaction belongs to""" + owner_id: NotRequired[Nullable[str]] + r"""ID of the user who owns/manages this project""" + parent_project: NotRequired[Nullable[ParentProjectTypedDict]] + r"""Parent project if this is a subproject""" + currency: NotRequired[Nullable[Currency]] + r"""Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).""" + budget_amount: NotRequired[Nullable[float]] + r"""Total budgeted amount for the project""" + approved_amount: NotRequired[Nullable[float]] + r"""Approved budget amount for the project""" + budget_hours: NotRequired[Nullable[float]] + r"""Total budgeted hours for the project""" + hourly_rate: NotRequired[Nullable[float]] + r"""Default hourly rate for project work""" + billing_method: NotRequired[Nullable[BillingMethod]] + r"""Method used for billing this project""" + is_billable: NotRequired[Nullable[bool]] + r"""Indicates if the project is billable to the customer""" + phase: NotRequired[Nullable[ProjectPhase]] + r"""Current phase of the project lifecycle""" + tax_rate: NotRequired[LinkedTaxRateInputTypedDict] + tracking_categories: NotRequired[ + Nullable[List[Nullable[LinkedTrackingCategoryTypedDict]]] + ] + r"""A list of linked tracking categories.""" + tags: NotRequired[List[str]] + r"""Tags associated with the project""" + notes: NotRequired[Nullable[str]] + r"""Additional notes about the project""" + contract_number: NotRequired[Nullable[str]] + r"""Contract or agreement number associated with the project""" + profit_margin: NotRequired[Nullable[float]] + r"""Expected profit margin percentage for the project""" + schedule_status: NotRequired[Nullable[ScheduleStatus]] + r"""Current status of project schedule compared to plan""" + addresses: NotRequired[List[AddressTypedDict]] + r"""An array of addresses associated with the project (billing, job site, etc.)""" + team_size: NotRequired[Nullable[int]] + r"""Number of team members assigned to the project""" + custom_fields: NotRequired[List[CustomFieldTypedDict]] + row_version: NotRequired[Nullable[str]] + r"""A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.""" + + +class ProjectInput(BaseModel): + name: str + r"""Name of the project""" + + display_id: OptionalNullable[str] = UNSET + r"""User-friendly project identifier""" + + reference_id: OptionalNullable[str] = UNSET + r"""External reference identifier for the project""" + + description: OptionalNullable[str] = UNSET + r"""Detailed description of the project""" + + status: OptionalNullable[ProjectProjectStatus] = UNSET + r"""Current status of the project""" + + project_type: OptionalNullable[ProjectType] = UNSET + r"""Type or category of the project""" + + priority: OptionalNullable[Priority] = UNSET + r"""Priority level of the project""" + + completion_percentage: OptionalNullable[float] = UNSET + r"""Percentage of project completion (0-100)""" + + start_date: OptionalNullable[date] = UNSET + r"""Start date of the project""" + + end_date: OptionalNullable[date] = UNSET + r"""Expected or actual end date of the project""" + + customer: OptionalNullable[LinkedCustomerInput] = UNSET + r"""The customer this entity is linked to.""" + + department: OptionalNullable[ProjectDepartment] = UNSET + r"""Department or organizational unit associated with the project""" + + company_id: OptionalNullable[str] = UNSET + r"""The company ID the transaction belongs to""" + + owner_id: OptionalNullable[str] = UNSET + r"""ID of the user who owns/manages this project""" + + parent_project: OptionalNullable[ParentProject] = UNSET + r"""Parent project if this is a subproject""" + + currency: OptionalNullable[Currency] = UNSET + r"""Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).""" + + budget_amount: OptionalNullable[float] = UNSET + r"""Total budgeted amount for the project""" + + approved_amount: OptionalNullable[float] = UNSET + r"""Approved budget amount for the project""" + + budget_hours: OptionalNullable[float] = UNSET + r"""Total budgeted hours for the project""" + + hourly_rate: OptionalNullable[float] = UNSET + r"""Default hourly rate for project work""" + + billing_method: OptionalNullable[BillingMethod] = UNSET + r"""Method used for billing this project""" + + is_billable: OptionalNullable[bool] = True + r"""Indicates if the project is billable to the customer""" + + phase: OptionalNullable[ProjectPhase] = UNSET + r"""Current phase of the project lifecycle""" + + tax_rate: Optional[LinkedTaxRateInput] = None + + tracking_categories: OptionalNullable[List[Nullable[LinkedTrackingCategory]]] = ( + UNSET + ) + r"""A list of linked tracking categories.""" + + tags: Optional[List[str]] = None + r"""Tags associated with the project""" + + notes: OptionalNullable[str] = UNSET + r"""Additional notes about the project""" + + contract_number: OptionalNullable[str] = UNSET + r"""Contract or agreement number associated with the project""" + + profit_margin: OptionalNullable[float] = UNSET + r"""Expected profit margin percentage for the project""" + + schedule_status: OptionalNullable[ScheduleStatus] = UNSET + r"""Current status of project schedule compared to plan""" + + addresses: Optional[List[Address]] = None + r"""An array of addresses associated with the project (billing, job site, etc.)""" + + team_size: OptionalNullable[int] = UNSET + r"""Number of team members assigned to the project""" + + custom_fields: Optional[List[CustomField]] = None + + row_version: OptionalNullable[str] = UNSET + r"""A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = [ + "display_id", + "reference_id", + "description", + "status", + "project_type", + "priority", + "completion_percentage", + "start_date", + "end_date", + "customer", + "department", + "company_id", + "owner_id", + "parent_project", + "currency", + "budget_amount", + "approved_amount", + "budget_hours", + "hourly_rate", + "billing_method", + "is_billable", + "phase", + "tax_rate", + "tracking_categories", + "tags", + "notes", + "contract_number", + "profit_margin", + "schedule_status", + "addresses", + "team_size", + "custom_fields", + "row_version", + ] + nullable_fields = [ + "display_id", + "reference_id", + "description", + "status", + "project_type", + "priority", + "completion_percentage", + "start_date", + "end_date", + "customer", + "department", + "company_id", + "owner_id", + "parent_project", + "currency", + "budget_amount", + "approved_amount", + "budget_hours", + "hourly_rate", + "billing_method", + "is_billable", + "phase", + "tracking_categories", + "notes", + "contract_number", + "profit_margin", + "schedule_status", + "team_size", + "row_version", + ] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in type(self).model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m diff --git a/src/apideck_unify/models/projectsfilter.py b/src/apideck_unify/models/projectsfilter.py new file mode 100644 index 00000000..7adf4829 --- /dev/null +++ b/src/apideck_unify/models/projectsfilter.py @@ -0,0 +1,44 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from apideck_unify.types import BaseModel +from apideck_unify.utils import FieldMetadata +from datetime import datetime +from enum import Enum +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ProjectStatus(str, Enum): + r"""Status of projects to filter by""" + + ACTIVE = "active" + COMPLETED = "completed" + ON_HOLD = "on_hold" + CANCELLED = "cancelled" + DRAFT = "draft" + + +class ProjectsFilterTypedDict(TypedDict): + name: NotRequired[str] + r"""Name of project to search for""" + status: NotRequired[ProjectStatus] + r"""Status of projects to filter by""" + customer_id: NotRequired[str] + r"""Filter projects by customer ID""" + updated_since: NotRequired[datetime] + r"""Return projects modified after this date""" + + +class ProjectsFilter(BaseModel): + name: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Name of project to search for""" + + status: Annotated[Optional[ProjectStatus], FieldMetadata(query=True)] = None + r"""Status of projects to filter by""" + + customer_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter projects by customer ID""" + + updated_since: Annotated[Optional[datetime], FieldMetadata(query=True)] = None + r"""Return projects modified after this date""" diff --git a/src/apideck_unify/models/projectssort.py b/src/apideck_unify/models/projectssort.py new file mode 100644 index 00000000..7c062660 --- /dev/null +++ b/src/apideck_unify/models/projectssort.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .sortdirection import SortDirection +from apideck_unify.types import BaseModel +from apideck_unify.utils import FieldMetadata +from enum import Enum +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class ProjectsSortSortBy(str, Enum): + r"""The field to sort by""" + + NAME = "name" + STATUS = "status" + START_DATE = "start_date" + END_DATE = "end_date" + BUDGET_AMOUNT = "budget_amount" + ACTUAL_AMOUNT = "actual_amount" + CREATED_AT = "created_at" + UPDATED_AT = "updated_at" + + +class ProjectsSortTypedDict(TypedDict): + by: NotRequired[ProjectsSortSortBy] + r"""The field to sort by""" + direction: NotRequired[SortDirection] + r"""The direction in which to sort the results""" + + +class ProjectsSort(BaseModel): + by: Annotated[Optional[ProjectsSortSortBy], FieldMetadata(query=True)] = None + r"""The field to sort by""" + + direction: Annotated[Optional[SortDirection], FieldMetadata(query=True)] = ( + SortDirection.ASC + ) + r"""The direction in which to sort the results""" diff --git a/src/apideck_unify/models/ticket.py b/src/apideck_unify/models/ticket.py index a807072e..2a2d67f1 100644 --- a/src/apideck_unify/models/ticket.py +++ b/src/apideck_unify/models/ticket.py @@ -20,7 +20,7 @@ from typing_extensions import NotRequired, TypedDict -class Priority(str, Enum): +class TicketPriority(str, Enum): r"""Priority of the ticket""" LOW = "low" @@ -44,7 +44,7 @@ class TicketTypedDict(TypedDict): r"""The ticket's description. HTML version of description is mapped if supported by the third-party platform""" status: NotRequired[Nullable[str]] r"""The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through.""" - priority: NotRequired[Nullable[Priority]] + priority: NotRequired[Nullable[TicketPriority]] r"""Priority of the ticket""" assignees: NotRequired[List[AssigneeTypedDict]] updated_at: NotRequired[Nullable[datetime]] @@ -86,7 +86,7 @@ class Ticket(BaseModel): status: OptionalNullable[str] = UNSET r"""The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through.""" - priority: OptionalNullable[Priority] = UNSET + priority: OptionalNullable[TicketPriority] = UNSET r"""Priority of the ticket""" assignees: Optional[List[Assignee]] = None @@ -187,7 +187,7 @@ class TicketInputTypedDict(TypedDict): r"""The ticket's description. HTML version of description is mapped if supported by the third-party platform""" status: NotRequired[Nullable[str]] r"""The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through.""" - priority: NotRequired[Nullable[Priority]] + priority: NotRequired[Nullable[TicketPriority]] r"""Priority of the ticket""" assignees: NotRequired[List[AssigneeInputTypedDict]] due_date: NotRequired[Nullable[datetime]] @@ -213,7 +213,7 @@ class TicketInput(BaseModel): status: OptionalNullable[str] = UNSET r"""The current status of the ticket. Possible values include: open, in_progress, closed, or - in cases where there is no clear mapping - the original value passed through.""" - priority: OptionalNullable[Priority] = UNSET + priority: OptionalNullable[TicketPriority] = UNSET r"""Priority of the ticket""" assignees: Optional[List[AssigneeInput]] = None diff --git a/src/apideck_unify/models/updateprojectresponse.py b/src/apideck_unify/models/updateprojectresponse.py new file mode 100644 index 00000000..68a52681 --- /dev/null +++ b/src/apideck_unify/models/updateprojectresponse.py @@ -0,0 +1,45 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .unifiedid import UnifiedID, UnifiedIDTypedDict +from apideck_unify.types import BaseModel +from typing_extensions import TypedDict + + +class UpdateProjectResponseTypedDict(TypedDict): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + status: str + r"""HTTP Response Status""" + service: str + r"""Apideck ID of service provider""" + resource: str + r"""Unified API resource name""" + operation: str + r"""Operation performed""" + data: UnifiedIDTypedDict + r"""A object containing a unique identifier for the resource that was created, updated, or deleted.""" + + +class UpdateProjectResponse(BaseModel): + r"""Projects""" + + status_code: int + r"""HTTP Response Status Code""" + + status: str + r"""HTTP Response Status""" + + service: str + r"""Apideck ID of service provider""" + + resource: str + r"""Unified API resource name""" + + operation: str + r"""Operation performed""" + + data: UnifiedID + r"""A object containing a unique identifier for the resource that was created, updated, or deleted.""" diff --git a/src/apideck_unify/models/webhookeventtype.py b/src/apideck_unify/models/webhookeventtype.py index 39729fcd..088740ac 100644 --- a/src/apideck_unify/models/webhookeventtype.py +++ b/src/apideck_unify/models/webhookeventtype.py @@ -126,3 +126,6 @@ class WebhookEventType(str, Enum): ACCOUNTING_QUOTE_CREATED = "accounting.quote.created" ACCOUNTING_QUOTE_UPDATED = "accounting.quote.updated" ACCOUNTING_QUOTE_DELETED = "accounting.quote.deleted" + ACCOUNTING_PROJECT_CREATED = "accounting.project.created" + ACCOUNTING_PROJECT_UPDATED = "accounting.project.updated" + ACCOUNTING_PROJECT_DELETED = "accounting.project.deleted" diff --git a/src/apideck_unify/projects.py b/src/apideck_unify/projects.py new file mode 100644 index 00000000..e342730b --- /dev/null +++ b/src/apideck_unify/projects.py @@ -0,0 +1,2061 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from .basesdk import BaseSDK +from apideck_unify import models, utils +from apideck_unify._hooks import HookContext +from apideck_unify.types import Nullable, OptionalNullable, UNSET +from apideck_unify.utils import get_security_from_env +from apideck_unify.utils.unmarshal_json_response import unmarshal_json_response +from datetime import date +from jsonpath import JSONPath +from typing import Any, Dict, List, Mapping, Optional, Union + + +class Projects(BaseSDK): + def list( + self, + *, + raw: Optional[bool] = False, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + filter_: Optional[ + Union[models.ProjectsFilter, models.ProjectsFilterTypedDict] + ] = None, + sort: Optional[Union[models.ProjectsSort, models.ProjectsSortTypedDict]] = None, + pass_through: Optional[Dict[str, Any]] = None, + fields: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.AccountingProjectsAllResponse]: + r"""List projects + + List projects + + :param raw: Include raw response. Mostly used for debugging purposes + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. + :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 + :param filter_: Apply filters + :param sort: Apply sorting + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads + :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsAllRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=cursor, + limit=limit, + filter_=utils.get_pydantic_model(filter_, Optional[models.ProjectsFilter]), + sort=utils.get_pydantic_model(sort, Optional[models.ProjectsSort]), + pass_through=pass_through, + fields=fields, + ) + + req = self._build_request( + method="GET", + path="/accounting/projects", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsAllGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsAll", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + def next_func() -> Optional[models.AccountingProjectsAllResponse]: + body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) + next_cursor = JSONPath("$.meta.cursors.next").parse(body) + + if len(next_cursor) == 0: + return None + + next_cursor = next_cursor[0] + if next_cursor is None or str(next_cursor).strip() == "": + return None + + return self.list( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=next_cursor, + limit=limit, + filter_=filter_, + sort=sort, + pass_through=pass_through, + fields=fields, + retries=retries, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsAllResponse( + get_projects_response=unmarshal_json_response( + Optional[models.GetProjectsResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsAllResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + + raise models.APIError("Unexpected response received", http_res) + + async def list_async( + self, + *, + raw: Optional[bool] = False, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + filter_: Optional[ + Union[models.ProjectsFilter, models.ProjectsFilterTypedDict] + ] = None, + sort: Optional[Union[models.ProjectsSort, models.ProjectsSortTypedDict]] = None, + pass_through: Optional[Dict[str, Any]] = None, + fields: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> Optional[models.AccountingProjectsAllResponse]: + r"""List projects + + List projects + + :param raw: Include raw response. Mostly used for debugging purposes + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param cursor: Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response. + :param limit: Number of results to return. Minimum 1, Maximum 200, Default 20 + :param filter_: Apply filters + :param sort: Apply sorting + :param pass_through: Optional unmapped key/values that will be passed through to downstream as query parameters. Ie: ?pass_through[search]=leads becomes ?search=leads + :param fields: The 'fields' parameter allows API users to specify the fields they want to include in the API response. If this parameter is not present, the API will return all available fields. If this parameter is present, only the fields specified in the comma-separated string will be included in the response. Nested properties can also be requested by using a dot notation.

Example: `fields=name,email,addresses.city`

In the example above, the response will only include the fields \"name\", \"email\" and \"addresses.city\". If any other fields are available, they will be excluded. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsAllRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=cursor, + limit=limit, + filter_=utils.get_pydantic_model(filter_, Optional[models.ProjectsFilter]), + sort=utils.get_pydantic_model(sort, Optional[models.ProjectsSort]), + pass_through=pass_through, + fields=fields, + ) + + req = self._build_request_async( + method="GET", + path="/accounting/projects", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsAllGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsAll", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + def next_func() -> Optional[models.AccountingProjectsAllResponse]: + body = utils.unmarshal_json(http_res.text, Union[Dict[Any, Any], List[Any]]) + next_cursor = JSONPath("$.meta.cursors.next").parse(body) + + if len(next_cursor) == 0: + return None + + next_cursor = next_cursor[0] + if next_cursor is None or str(next_cursor).strip() == "": + return None + + return self.list( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + cursor=next_cursor, + limit=limit, + filter_=filter_, + sort=sort, + pass_through=pass_through, + fields=fields, + retries=retries, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsAllResponse( + get_projects_response=unmarshal_json_response( + Optional[models.GetProjectsResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsAllResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + next=next_func, + ) + + raise models.APIError("Unexpected response received", http_res) + + def create( + self, + *, + name: str, + raw: Optional[bool] = False, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + display_id: OptionalNullable[str] = UNSET, + reference_id: OptionalNullable[str] = UNSET, + description: OptionalNullable[str] = UNSET, + status: OptionalNullable[models.ProjectProjectStatus] = UNSET, + project_type: OptionalNullable[models.ProjectType] = UNSET, + priority: OptionalNullable[models.Priority] = UNSET, + completion_percentage: OptionalNullable[float] = UNSET, + start_date: OptionalNullable[date] = UNSET, + end_date: OptionalNullable[date] = UNSET, + customer: OptionalNullable[ + Union[models.LinkedCustomerInput, models.LinkedCustomerInputTypedDict] + ] = UNSET, + department: OptionalNullable[ + Union[models.ProjectDepartment, models.ProjectDepartmentTypedDict] + ] = UNSET, + company_id: OptionalNullable[str] = UNSET, + owner_id: OptionalNullable[str] = UNSET, + parent_project: OptionalNullable[ + Union[models.ParentProject, models.ParentProjectTypedDict] + ] = UNSET, + currency: OptionalNullable[models.Currency] = UNSET, + budget_amount: OptionalNullable[float] = UNSET, + approved_amount: OptionalNullable[float] = UNSET, + budget_hours: OptionalNullable[float] = UNSET, + hourly_rate: OptionalNullable[float] = UNSET, + billing_method: OptionalNullable[models.BillingMethod] = UNSET, + is_billable: OptionalNullable[bool] = True, + phase: OptionalNullable[models.ProjectPhase] = UNSET, + tax_rate: Optional[ + Union[models.LinkedTaxRateInput, models.LinkedTaxRateInputTypedDict] + ] = None, + tracking_categories: OptionalNullable[ + Union[ + List[Nullable[models.LinkedTrackingCategory]], + List[Nullable[models.LinkedTrackingCategoryTypedDict]], + ] + ] = UNSET, + tags: Optional[List[str]] = None, + notes: OptionalNullable[str] = UNSET, + contract_number: OptionalNullable[str] = UNSET, + profit_margin: OptionalNullable[float] = UNSET, + schedule_status: OptionalNullable[models.ScheduleStatus] = UNSET, + addresses: Optional[ + Union[List[models.Address], List[models.AddressTypedDict]] + ] = None, + team_size: OptionalNullable[int] = UNSET, + custom_fields: Optional[ + Union[List[models.CustomField], List[models.CustomFieldTypedDict]] + ] = None, + row_version: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsAddResponse: + r"""Create project + + Create project + + :param name: Name of the project + :param raw: Include raw response. Mostly used for debugging purposes + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param display_id: User-friendly project identifier + :param reference_id: External reference identifier for the project + :param description: Detailed description of the project + :param status: Current status of the project + :param project_type: Type or category of the project + :param priority: Priority level of the project + :param completion_percentage: Percentage of project completion (0-100) + :param start_date: Start date of the project + :param end_date: Expected or actual end date of the project + :param customer: The customer this entity is linked to. + :param department: Department or organizational unit associated with the project + :param company_id: The company ID the transaction belongs to + :param owner_id: ID of the user who owns/manages this project + :param parent_project: Parent project if this is a subproject + :param currency: Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). + :param budget_amount: Total budgeted amount for the project + :param approved_amount: Approved budget amount for the project + :param budget_hours: Total budgeted hours for the project + :param hourly_rate: Default hourly rate for project work + :param billing_method: Method used for billing this project + :param is_billable: Indicates if the project is billable to the customer + :param phase: Current phase of the project lifecycle + :param tax_rate: + :param tracking_categories: A list of linked tracking categories. + :param tags: Tags associated with the project + :param notes: Additional notes about the project + :param contract_number: Contract or agreement number associated with the project + :param profit_margin: Expected profit margin percentage for the project + :param schedule_status: Current status of project schedule compared to plan + :param addresses: An array of addresses associated with the project (billing, job site, etc.) + :param team_size: Number of team members assigned to the project + :param custom_fields: + :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsAddRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + project=models.ProjectInput( + name=name, + display_id=display_id, + reference_id=reference_id, + description=description, + status=status, + project_type=project_type, + priority=priority, + completion_percentage=completion_percentage, + start_date=start_date, + end_date=end_date, + customer=utils.get_pydantic_model( + customer, OptionalNullable[models.LinkedCustomerInput] + ), + department=utils.get_pydantic_model( + department, OptionalNullable[models.ProjectDepartment] + ), + company_id=company_id, + owner_id=owner_id, + parent_project=utils.get_pydantic_model( + parent_project, OptionalNullable[models.ParentProject] + ), + currency=currency, + budget_amount=budget_amount, + approved_amount=approved_amount, + budget_hours=budget_hours, + hourly_rate=hourly_rate, + billing_method=billing_method, + is_billable=is_billable, + phase=phase, + tax_rate=utils.get_pydantic_model( + tax_rate, Optional[models.LinkedTaxRateInput] + ), + tracking_categories=utils.get_pydantic_model( + tracking_categories, + OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], + ), + tags=tags, + notes=notes, + contract_number=contract_number, + profit_margin=profit_margin, + schedule_status=schedule_status, + addresses=utils.get_pydantic_model( + addresses, Optional[List[models.Address]] + ), + team_size=team_size, + custom_fields=utils.get_pydantic_model( + custom_fields, Optional[List[models.CustomField]] + ), + row_version=row_version, + ), + ) + + req = self._build_request( + method="POST", + path="/accounting/projects", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsAddGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.project, False, False, "json", models.ProjectInput + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsAdd", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "201", "application/json"): + return models.AccountingProjectsAddResponse( + create_project_response=unmarshal_json_response( + Optional[models.CreateProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsAddResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + async def create_async( + self, + *, + name: str, + raw: Optional[bool] = False, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + display_id: OptionalNullable[str] = UNSET, + reference_id: OptionalNullable[str] = UNSET, + description: OptionalNullable[str] = UNSET, + status: OptionalNullable[models.ProjectProjectStatus] = UNSET, + project_type: OptionalNullable[models.ProjectType] = UNSET, + priority: OptionalNullable[models.Priority] = UNSET, + completion_percentage: OptionalNullable[float] = UNSET, + start_date: OptionalNullable[date] = UNSET, + end_date: OptionalNullable[date] = UNSET, + customer: OptionalNullable[ + Union[models.LinkedCustomerInput, models.LinkedCustomerInputTypedDict] + ] = UNSET, + department: OptionalNullable[ + Union[models.ProjectDepartment, models.ProjectDepartmentTypedDict] + ] = UNSET, + company_id: OptionalNullable[str] = UNSET, + owner_id: OptionalNullable[str] = UNSET, + parent_project: OptionalNullable[ + Union[models.ParentProject, models.ParentProjectTypedDict] + ] = UNSET, + currency: OptionalNullable[models.Currency] = UNSET, + budget_amount: OptionalNullable[float] = UNSET, + approved_amount: OptionalNullable[float] = UNSET, + budget_hours: OptionalNullable[float] = UNSET, + hourly_rate: OptionalNullable[float] = UNSET, + billing_method: OptionalNullable[models.BillingMethod] = UNSET, + is_billable: OptionalNullable[bool] = True, + phase: OptionalNullable[models.ProjectPhase] = UNSET, + tax_rate: Optional[ + Union[models.LinkedTaxRateInput, models.LinkedTaxRateInputTypedDict] + ] = None, + tracking_categories: OptionalNullable[ + Union[ + List[Nullable[models.LinkedTrackingCategory]], + List[Nullable[models.LinkedTrackingCategoryTypedDict]], + ] + ] = UNSET, + tags: Optional[List[str]] = None, + notes: OptionalNullable[str] = UNSET, + contract_number: OptionalNullable[str] = UNSET, + profit_margin: OptionalNullable[float] = UNSET, + schedule_status: OptionalNullable[models.ScheduleStatus] = UNSET, + addresses: Optional[ + Union[List[models.Address], List[models.AddressTypedDict]] + ] = None, + team_size: OptionalNullable[int] = UNSET, + custom_fields: Optional[ + Union[List[models.CustomField], List[models.CustomFieldTypedDict]] + ] = None, + row_version: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsAddResponse: + r"""Create project + + Create project + + :param name: Name of the project + :param raw: Include raw response. Mostly used for debugging purposes + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param display_id: User-friendly project identifier + :param reference_id: External reference identifier for the project + :param description: Detailed description of the project + :param status: Current status of the project + :param project_type: Type or category of the project + :param priority: Priority level of the project + :param completion_percentage: Percentage of project completion (0-100) + :param start_date: Start date of the project + :param end_date: Expected or actual end date of the project + :param customer: The customer this entity is linked to. + :param department: Department or organizational unit associated with the project + :param company_id: The company ID the transaction belongs to + :param owner_id: ID of the user who owns/manages this project + :param parent_project: Parent project if this is a subproject + :param currency: Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). + :param budget_amount: Total budgeted amount for the project + :param approved_amount: Approved budget amount for the project + :param budget_hours: Total budgeted hours for the project + :param hourly_rate: Default hourly rate for project work + :param billing_method: Method used for billing this project + :param is_billable: Indicates if the project is billable to the customer + :param phase: Current phase of the project lifecycle + :param tax_rate: + :param tracking_categories: A list of linked tracking categories. + :param tags: Tags associated with the project + :param notes: Additional notes about the project + :param contract_number: Contract or agreement number associated with the project + :param profit_margin: Expected profit margin percentage for the project + :param schedule_status: Current status of project schedule compared to plan + :param addresses: An array of addresses associated with the project (billing, job site, etc.) + :param team_size: Number of team members assigned to the project + :param custom_fields: + :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsAddRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + project=models.ProjectInput( + name=name, + display_id=display_id, + reference_id=reference_id, + description=description, + status=status, + project_type=project_type, + priority=priority, + completion_percentage=completion_percentage, + start_date=start_date, + end_date=end_date, + customer=utils.get_pydantic_model( + customer, OptionalNullable[models.LinkedCustomerInput] + ), + department=utils.get_pydantic_model( + department, OptionalNullable[models.ProjectDepartment] + ), + company_id=company_id, + owner_id=owner_id, + parent_project=utils.get_pydantic_model( + parent_project, OptionalNullable[models.ParentProject] + ), + currency=currency, + budget_amount=budget_amount, + approved_amount=approved_amount, + budget_hours=budget_hours, + hourly_rate=hourly_rate, + billing_method=billing_method, + is_billable=is_billable, + phase=phase, + tax_rate=utils.get_pydantic_model( + tax_rate, Optional[models.LinkedTaxRateInput] + ), + tracking_categories=utils.get_pydantic_model( + tracking_categories, + OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], + ), + tags=tags, + notes=notes, + contract_number=contract_number, + profit_margin=profit_margin, + schedule_status=schedule_status, + addresses=utils.get_pydantic_model( + addresses, Optional[List[models.Address]] + ), + team_size=team_size, + custom_fields=utils.get_pydantic_model( + custom_fields, Optional[List[models.CustomField]] + ), + row_version=row_version, + ), + ) + + req = self._build_request_async( + method="POST", + path="/accounting/projects", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=False, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsAddGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.project, False, False, "json", models.ProjectInput + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsAdd", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "201", "application/json"): + return models.AccountingProjectsAddResponse( + create_project_response=unmarshal_json_response( + Optional[models.CreateProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsAddResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + def get( + self, + *, + id: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsOneResponse: + r"""Get project + + Get project + + :param id: ID of the record you are acting upon. + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsOneRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + ) + + req = self._build_request( + method="GET", + path="/accounting/projects/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsOneGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsOne", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsOneResponse( + get_project_response=unmarshal_json_response( + Optional[models.GetProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsOneResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + async def get_async( + self, + *, + id: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsOneResponse: + r"""Get project + + Get project + + :param id: ID of the record you are acting upon. + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsOneRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + ) + + req = self._build_request_async( + method="GET", + path="/accounting/projects/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsOneGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsOne", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsOneResponse( + get_project_response=unmarshal_json_response( + Optional[models.GetProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsOneResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + def update( + self, + *, + id: str, + name: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + display_id: OptionalNullable[str] = UNSET, + reference_id: OptionalNullable[str] = UNSET, + description: OptionalNullable[str] = UNSET, + status: OptionalNullable[models.ProjectProjectStatus] = UNSET, + project_type: OptionalNullable[models.ProjectType] = UNSET, + priority: OptionalNullable[models.Priority] = UNSET, + completion_percentage: OptionalNullable[float] = UNSET, + start_date: OptionalNullable[date] = UNSET, + end_date: OptionalNullable[date] = UNSET, + customer: OptionalNullable[ + Union[models.LinkedCustomerInput, models.LinkedCustomerInputTypedDict] + ] = UNSET, + department: OptionalNullable[ + Union[models.ProjectDepartment, models.ProjectDepartmentTypedDict] + ] = UNSET, + company_id: OptionalNullable[str] = UNSET, + owner_id: OptionalNullable[str] = UNSET, + parent_project: OptionalNullable[ + Union[models.ParentProject, models.ParentProjectTypedDict] + ] = UNSET, + currency: OptionalNullable[models.Currency] = UNSET, + budget_amount: OptionalNullable[float] = UNSET, + approved_amount: OptionalNullable[float] = UNSET, + budget_hours: OptionalNullable[float] = UNSET, + hourly_rate: OptionalNullable[float] = UNSET, + billing_method: OptionalNullable[models.BillingMethod] = UNSET, + is_billable: OptionalNullable[bool] = True, + phase: OptionalNullable[models.ProjectPhase] = UNSET, + tax_rate: Optional[ + Union[models.LinkedTaxRateInput, models.LinkedTaxRateInputTypedDict] + ] = None, + tracking_categories: OptionalNullable[ + Union[ + List[Nullable[models.LinkedTrackingCategory]], + List[Nullable[models.LinkedTrackingCategoryTypedDict]], + ] + ] = UNSET, + tags: Optional[List[str]] = None, + notes: OptionalNullable[str] = UNSET, + contract_number: OptionalNullable[str] = UNSET, + profit_margin: OptionalNullable[float] = UNSET, + schedule_status: OptionalNullable[models.ScheduleStatus] = UNSET, + addresses: Optional[ + Union[List[models.Address], List[models.AddressTypedDict]] + ] = None, + team_size: OptionalNullable[int] = UNSET, + custom_fields: Optional[ + Union[List[models.CustomField], List[models.CustomFieldTypedDict]] + ] = None, + row_version: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsUpdateResponse: + r"""Update project + + Update project + + :param id: ID of the record you are acting upon. + :param name: Name of the project + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param display_id: User-friendly project identifier + :param reference_id: External reference identifier for the project + :param description: Detailed description of the project + :param status: Current status of the project + :param project_type: Type or category of the project + :param priority: Priority level of the project + :param completion_percentage: Percentage of project completion (0-100) + :param start_date: Start date of the project + :param end_date: Expected or actual end date of the project + :param customer: The customer this entity is linked to. + :param department: Department or organizational unit associated with the project + :param company_id: The company ID the transaction belongs to + :param owner_id: ID of the user who owns/manages this project + :param parent_project: Parent project if this is a subproject + :param currency: Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). + :param budget_amount: Total budgeted amount for the project + :param approved_amount: Approved budget amount for the project + :param budget_hours: Total budgeted hours for the project + :param hourly_rate: Default hourly rate for project work + :param billing_method: Method used for billing this project + :param is_billable: Indicates if the project is billable to the customer + :param phase: Current phase of the project lifecycle + :param tax_rate: + :param tracking_categories: A list of linked tracking categories. + :param tags: Tags associated with the project + :param notes: Additional notes about the project + :param contract_number: Contract or agreement number associated with the project + :param profit_margin: Expected profit margin percentage for the project + :param schedule_status: Current status of project schedule compared to plan + :param addresses: An array of addresses associated with the project (billing, job site, etc.) + :param team_size: Number of team members assigned to the project + :param custom_fields: + :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsUpdateRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + project=models.ProjectInput( + name=name, + display_id=display_id, + reference_id=reference_id, + description=description, + status=status, + project_type=project_type, + priority=priority, + completion_percentage=completion_percentage, + start_date=start_date, + end_date=end_date, + customer=utils.get_pydantic_model( + customer, OptionalNullable[models.LinkedCustomerInput] + ), + department=utils.get_pydantic_model( + department, OptionalNullable[models.ProjectDepartment] + ), + company_id=company_id, + owner_id=owner_id, + parent_project=utils.get_pydantic_model( + parent_project, OptionalNullable[models.ParentProject] + ), + currency=currency, + budget_amount=budget_amount, + approved_amount=approved_amount, + budget_hours=budget_hours, + hourly_rate=hourly_rate, + billing_method=billing_method, + is_billable=is_billable, + phase=phase, + tax_rate=utils.get_pydantic_model( + tax_rate, Optional[models.LinkedTaxRateInput] + ), + tracking_categories=utils.get_pydantic_model( + tracking_categories, + OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], + ), + tags=tags, + notes=notes, + contract_number=contract_number, + profit_margin=profit_margin, + schedule_status=schedule_status, + addresses=utils.get_pydantic_model( + addresses, Optional[List[models.Address]] + ), + team_size=team_size, + custom_fields=utils.get_pydantic_model( + custom_fields, Optional[List[models.CustomField]] + ), + row_version=row_version, + ), + ) + + req = self._build_request( + method="PATCH", + path="/accounting/projects/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsUpdateGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.project, False, False, "json", models.ProjectInput + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsUpdate", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsUpdateResponse( + update_project_response=unmarshal_json_response( + Optional[models.UpdateProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsUpdateResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + async def update_async( + self, + *, + id: str, + name: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + display_id: OptionalNullable[str] = UNSET, + reference_id: OptionalNullable[str] = UNSET, + description: OptionalNullable[str] = UNSET, + status: OptionalNullable[models.ProjectProjectStatus] = UNSET, + project_type: OptionalNullable[models.ProjectType] = UNSET, + priority: OptionalNullable[models.Priority] = UNSET, + completion_percentage: OptionalNullable[float] = UNSET, + start_date: OptionalNullable[date] = UNSET, + end_date: OptionalNullable[date] = UNSET, + customer: OptionalNullable[ + Union[models.LinkedCustomerInput, models.LinkedCustomerInputTypedDict] + ] = UNSET, + department: OptionalNullable[ + Union[models.ProjectDepartment, models.ProjectDepartmentTypedDict] + ] = UNSET, + company_id: OptionalNullable[str] = UNSET, + owner_id: OptionalNullable[str] = UNSET, + parent_project: OptionalNullable[ + Union[models.ParentProject, models.ParentProjectTypedDict] + ] = UNSET, + currency: OptionalNullable[models.Currency] = UNSET, + budget_amount: OptionalNullable[float] = UNSET, + approved_amount: OptionalNullable[float] = UNSET, + budget_hours: OptionalNullable[float] = UNSET, + hourly_rate: OptionalNullable[float] = UNSET, + billing_method: OptionalNullable[models.BillingMethod] = UNSET, + is_billable: OptionalNullable[bool] = True, + phase: OptionalNullable[models.ProjectPhase] = UNSET, + tax_rate: Optional[ + Union[models.LinkedTaxRateInput, models.LinkedTaxRateInputTypedDict] + ] = None, + tracking_categories: OptionalNullable[ + Union[ + List[Nullable[models.LinkedTrackingCategory]], + List[Nullable[models.LinkedTrackingCategoryTypedDict]], + ] + ] = UNSET, + tags: Optional[List[str]] = None, + notes: OptionalNullable[str] = UNSET, + contract_number: OptionalNullable[str] = UNSET, + profit_margin: OptionalNullable[float] = UNSET, + schedule_status: OptionalNullable[models.ScheduleStatus] = UNSET, + addresses: Optional[ + Union[List[models.Address], List[models.AddressTypedDict]] + ] = None, + team_size: OptionalNullable[int] = UNSET, + custom_fields: Optional[ + Union[List[models.CustomField], List[models.CustomFieldTypedDict]] + ] = None, + row_version: OptionalNullable[str] = UNSET, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsUpdateResponse: + r"""Update project + + Update project + + :param id: ID of the record you are acting upon. + :param name: Name of the project + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param display_id: User-friendly project identifier + :param reference_id: External reference identifier for the project + :param description: Detailed description of the project + :param status: Current status of the project + :param project_type: Type or category of the project + :param priority: Priority level of the project + :param completion_percentage: Percentage of project completion (0-100) + :param start_date: Start date of the project + :param end_date: Expected or actual end date of the project + :param customer: The customer this entity is linked to. + :param department: Department or organizational unit associated with the project + :param company_id: The company ID the transaction belongs to + :param owner_id: ID of the user who owns/manages this project + :param parent_project: Parent project if this is a subproject + :param currency: Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). + :param budget_amount: Total budgeted amount for the project + :param approved_amount: Approved budget amount for the project + :param budget_hours: Total budgeted hours for the project + :param hourly_rate: Default hourly rate for project work + :param billing_method: Method used for billing this project + :param is_billable: Indicates if the project is billable to the customer + :param phase: Current phase of the project lifecycle + :param tax_rate: + :param tracking_categories: A list of linked tracking categories. + :param tags: Tags associated with the project + :param notes: Additional notes about the project + :param contract_number: Contract or agreement number associated with the project + :param profit_margin: Expected profit margin percentage for the project + :param schedule_status: Current status of project schedule compared to plan + :param addresses: An array of addresses associated with the project (billing, job site, etc.) + :param team_size: Number of team members assigned to the project + :param custom_fields: + :param row_version: A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object. + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsUpdateRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + project=models.ProjectInput( + name=name, + display_id=display_id, + reference_id=reference_id, + description=description, + status=status, + project_type=project_type, + priority=priority, + completion_percentage=completion_percentage, + start_date=start_date, + end_date=end_date, + customer=utils.get_pydantic_model( + customer, OptionalNullable[models.LinkedCustomerInput] + ), + department=utils.get_pydantic_model( + department, OptionalNullable[models.ProjectDepartment] + ), + company_id=company_id, + owner_id=owner_id, + parent_project=utils.get_pydantic_model( + parent_project, OptionalNullable[models.ParentProject] + ), + currency=currency, + budget_amount=budget_amount, + approved_amount=approved_amount, + budget_hours=budget_hours, + hourly_rate=hourly_rate, + billing_method=billing_method, + is_billable=is_billable, + phase=phase, + tax_rate=utils.get_pydantic_model( + tax_rate, Optional[models.LinkedTaxRateInput] + ), + tracking_categories=utils.get_pydantic_model( + tracking_categories, + OptionalNullable[List[Nullable[models.LinkedTrackingCategory]]], + ), + tags=tags, + notes=notes, + contract_number=contract_number, + profit_margin=profit_margin, + schedule_status=schedule_status, + addresses=utils.get_pydantic_model( + addresses, Optional[List[models.Address]] + ), + team_size=team_size, + custom_fields=utils.get_pydantic_model( + custom_fields, Optional[List[models.CustomField]] + ), + row_version=row_version, + ), + ) + + req = self._build_request_async( + method="PATCH", + path="/accounting/projects/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=True, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsUpdateGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + get_serialized_body=lambda: utils.serialize_request_body( + request.project, False, False, "json", models.ProjectInput + ), + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsUpdate", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsUpdateResponse( + update_project_response=unmarshal_json_response( + Optional[models.UpdateProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsUpdateResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + def delete( + self, + *, + id: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsDeleteResponse: + r"""Delete project + + Delete project + + :param id: ID of the record you are acting upon. + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsDeleteRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + ) + + req = self._build_request( + method="DELETE", + path="/accounting/projects/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsDeleteGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = self.do_request( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsDelete", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsDeleteResponse( + delete_project_response=unmarshal_json_response( + Optional[models.DeleteProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = utils.stream_to_text(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsDeleteResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) + + async def delete_async( + self, + *, + id: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + raw: Optional[bool] = False, + retries: OptionalNullable[utils.RetryConfig] = UNSET, + server_url: Optional[str] = None, + timeout_ms: Optional[int] = None, + http_headers: Optional[Mapping[str, str]] = None, + ) -> models.AccountingProjectsDeleteResponse: + r"""Delete project + + Delete project + + :param id: ID of the record you are acting upon. + :param consumer_id: ID of the consumer which you want to get or push data from + :param app_id: The ID of your Unify application + :param service_id: Provide the service id you want to call (e.g., pipedrive). Only needed when a consumer has activated multiple integrations for a Unified API. + :param raw: Include raw response. Mostly used for debugging purposes + :param retries: Override the default retry configuration for this method + :param server_url: Override the default server URL for this method + :param timeout_ms: Override the default request timeout configuration for this method in milliseconds + :param http_headers: Additional headers to set or replace on requests. + """ + base_url = None + url_variables = None + if timeout_ms is None: + timeout_ms = self.sdk_configuration.timeout_ms + + if server_url is not None: + base_url = server_url + else: + base_url = self._get_url(base_url, url_variables) + + request = models.AccountingProjectsDeleteRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + raw=raw, + ) + + req = self._build_request_async( + method="DELETE", + path="/accounting/projects/{id}", + base_url=base_url, + url_variables=url_variables, + request=request, + request_body_required=False, + request_has_path_params=True, + request_has_query_params=True, + user_agent_header="user-agent", + accept_header_value="application/json", + http_headers=http_headers, + _globals=models.AccountingProjectsDeleteGlobals( + consumer_id=self.sdk_configuration.globals.consumer_id, + app_id=self.sdk_configuration.globals.app_id, + ), + security=self.sdk_configuration.security, + timeout_ms=timeout_ms, + ) + + if retries == UNSET: + if self.sdk_configuration.retry_config is not UNSET: + retries = self.sdk_configuration.retry_config + else: + retries = utils.RetryConfig( + "backoff", utils.BackoffStrategy(500, 60000, 1.5, 3600000), True + ) + + retry_config = None + if isinstance(retries, utils.RetryConfig): + retry_config = (retries, ["408", "500", "502", "503", "504"]) + + http_res = await self.do_request_async( + hook_ctx=HookContext( + config=self.sdk_configuration, + base_url=base_url or "", + operation_id="accounting.projectsDelete", + oauth2_scopes=[], + security_source=get_security_from_env( + self.sdk_configuration.security, models.Security + ), + ), + request=req, + error_status_codes=["400", "401", "402", "404", "422", "4XX", "5XX"], + retry_config=retry_config, + ) + + response_data: Any = None + if utils.match_response(http_res, "200", "application/json"): + return models.AccountingProjectsDeleteResponse( + delete_project_response=unmarshal_json_response( + Optional[models.DeleteProjectResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + if utils.match_response(http_res, "400", "application/json"): + response_data = unmarshal_json_response( + models.BadRequestResponseData, http_res + ) + raise models.BadRequestResponse(response_data, http_res) + if utils.match_response(http_res, "401", "application/json"): + response_data = unmarshal_json_response( + models.UnauthorizedResponseData, http_res + ) + raise models.UnauthorizedResponse(response_data, http_res) + if utils.match_response(http_res, "402", "application/json"): + response_data = unmarshal_json_response( + models.PaymentRequiredResponseData, http_res + ) + raise models.PaymentRequiredResponse(response_data, http_res) + if utils.match_response(http_res, "404", "application/json"): + response_data = unmarshal_json_response( + models.NotFoundResponseData, http_res + ) + raise models.NotFoundResponse(response_data, http_res) + if utils.match_response(http_res, "422", "application/json"): + response_data = unmarshal_json_response( + models.UnprocessableResponseData, http_res + ) + raise models.UnprocessableResponse(response_data, http_res) + if utils.match_response(http_res, "4XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "5XX", "*"): + http_res_text = await utils.stream_to_text_async(http_res) + raise models.APIError("API error occurred", http_res, http_res_text) + if utils.match_response(http_res, "default", "application/json"): + return models.AccountingProjectsDeleteResponse( + unexpected_error_response=unmarshal_json_response( + Optional[models.UnexpectedErrorResponse], http_res + ), + http_meta=models.HTTPMetadata(request=req, response=http_res), + ) + + raise models.APIError("Unexpected response received", http_res) diff --git a/src/apideck_unify/sdk.py b/src/apideck_unify/sdk.py index e82a89f3..b407faef 100644 --- a/src/apideck_unify/sdk.py +++ b/src/apideck_unify/sdk.py @@ -88,7 +88,7 @@ def __init__( """ client_supplied = True if client is None: - client = httpx.Client() + client = httpx.Client(follow_redirects=True) client_supplied = False assert issubclass( @@ -97,7 +97,7 @@ def __init__( async_client_supplied = True if async_client is None: - async_client = httpx.AsyncClient() + async_client = httpx.AsyncClient(follow_redirects=True) async_client_supplied = False if debug_logger is None: diff --git a/src/apideck_unify/utils/annotations.py b/src/apideck_unify/utils/annotations.py index 387874ed..12e0aa4f 100644 --- a/src/apideck_unify/utils/annotations.py +++ b/src/apideck_unify/utils/annotations.py @@ -3,6 +3,7 @@ from enum import Enum from typing import Any, Optional + def get_discriminator(model: Any, fieldname: str, key: str) -> str: """ Recursively search for the discriminator attribute in a model. @@ -25,31 +26,54 @@ def get_field_discriminator(field: Any) -> Optional[str]: if isinstance(field, dict): if key in field: - return f'{field[key]}' + return f"{field[key]}" if hasattr(field, fieldname): attr = getattr(field, fieldname) if isinstance(attr, Enum): - return f'{attr.value}' - return f'{attr}' + return f"{attr.value}" + return f"{attr}" if hasattr(field, upper_fieldname): attr = getattr(field, upper_fieldname) if isinstance(attr, Enum): - return f'{attr.value}' - return f'{attr}' + return f"{attr.value}" + return f"{attr}" return None + def search_nested_discriminator(obj: Any) -> Optional[str]: + """Recursively search for discriminator in nested structures.""" + # First try direct field lookup + discriminator = get_field_discriminator(obj) + if discriminator is not None: + return discriminator + + # If it's a dict, search in nested values + if isinstance(obj, dict): + for value in obj.values(): + if isinstance(value, list): + # Search in list items + for item in value: + nested_discriminator = search_nested_discriminator(item) + if nested_discriminator is not None: + return nested_discriminator + elif isinstance(value, dict): + # Search in nested dict + nested_discriminator = search_nested_discriminator(value) + if nested_discriminator is not None: + return nested_discriminator + + return None if isinstance(model, list): for field in model: - discriminator = get_field_discriminator(field) + discriminator = search_nested_discriminator(field) if discriminator is not None: return discriminator - discriminator = get_field_discriminator(model) + discriminator = search_nested_discriminator(model) if discriminator is not None: return discriminator - raise ValueError(f'Could not find discriminator field {fieldname} in {model}') + raise ValueError(f"Could not find discriminator field {fieldname} in {model}") From 24cdb98e79f3dcd2e479df34043b142017731cd1 Mon Sep 17 00:00:00 2001 From: "speakeasy-github[bot]" <128539517+speakeasy-github[bot]@users.noreply.github.com> Date: Wed, 1 Oct 2025 07:52:19 +0000 Subject: [PATCH 2/2] empty commit to trigger [run-tests] workflow