diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 23dd40f4..400056d9 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: 0b751af49a20956c0cb7e4baa53246b1 - docVersion: 10.24.40 + docChecksum: b4586cba77228efcd83588a9e10d018b + docVersion: 10.24.43 speakeasyVersion: 1.656.1 generationVersion: 2.753.1 - releaseVersion: 0.31.19 - configChecksum: 8b7e87669f4d31bafde68f64508cf937 + releaseVersion: 0.31.20 + configChecksum: 6f6bc8011bad8f1580833ca1d35fe647 repoURL: https://github.com/apideck-libraries/sdk-python.git installationURL: https://github.com/apideck-libraries/sdk-python.git published: true @@ -282,6 +282,12 @@ generatedFiles: - docs/models/accountingexpensesupdateglobals.md - docs/models/accountingexpensesupdaterequest.md - docs/models/accountingexpensesupdateresponse.md + - docs/models/accountinggeneralledgertransactionsallglobals.md + - docs/models/accountinggeneralledgertransactionsallrequest.md + - docs/models/accountinggeneralledgertransactionsallresponse.md + - docs/models/accountinggeneralledgertransactionsoneglobals.md + - docs/models/accountinggeneralledgertransactionsonerequest.md + - docs/models/accountinggeneralledgertransactionsoneresponse.md - docs/models/accountinginvoiceitemsaddglobals.md - docs/models/accountinginvoiceitemsaddrequest.md - docs/models/accountinginvoiceitemsaddresponse.md @@ -1267,6 +1273,13 @@ generatedFiles: - docs/models/formfieldtype.md - docs/models/fulfillmentstatus.md - docs/models/gender.md + - docs/models/generalledgertransaction.md + - docs/models/generalledgertransactionlineitem.md + - docs/models/generalledgertransactionlineitemtype.md + - docs/models/generalledgertransactionsfilter.md + - docs/models/generalledgertransactionsourcetype.md + - docs/models/generalledgertransactionssort.md + - docs/models/generalledgertransactionssortby.md - docs/models/getaccountingdepartmentresponse.md - docs/models/getaccountingdepartmentsresponse.md - docs/models/getaccountingemployeeresponse.md @@ -1355,6 +1368,8 @@ generatedFiles: - docs/models/getfileresponse.md - docs/models/getfilesresponse.md - docs/models/getfolderresponse.md + - docs/models/getgeneralledgertransactionresponse.md + - docs/models/getgeneralledgertransactionsresponse.md - docs/models/gethriscompaniesresponse.md - docs/models/gethriscompanyresponse.md - docs/models/getinvoiceitemresponse.md @@ -1574,6 +1589,7 @@ generatedFiles: - docs/models/jobstatus.md - docs/models/jobtype.md - docs/models/journalentriesfilter.md + - docs/models/journalentriesfilterscope.md - docs/models/journalentriesfilterstatus.md - docs/models/journalentriessort.md - docs/models/journalentriessortby.md @@ -1754,6 +1770,7 @@ generatedFiles: - docs/models/quotelineitem.md - docs/models/quotelineiteminput.md - docs/models/quotelineitemtype.md + - docs/models/quotesfilter.md - docs/models/quotestatus.md - docs/models/rebilling.md - docs/models/rebillstatus.md @@ -1809,6 +1826,7 @@ generatedFiles: - docs/models/sociallinks.md - docs/models/sortby.md - docs/models/sortdirection.md + - docs/models/sourcetype.md - docs/models/stage.md - docs/models/stages.md - docs/models/statementstatus.md @@ -2110,6 +2128,7 @@ generatedFiles: - docs/sdks/expenses/README.md - docs/sdks/files/README.md - docs/sdks/folders/README.md + - docs/sdks/generalledgertransactions/README.md - docs/sdks/invoiceitems/README.md - docs/sdks/invoices/README.md - docs/sdks/jobs/README.md @@ -2220,6 +2239,7 @@ generatedFiles: - src/apideck_unify/files.py - src/apideck_unify/filestorage.py - src/apideck_unify/folders.py + - src/apideck_unify/generalledgertransactions.py - src/apideck_unify/hris.py - src/apideck_unify/httpclient.py - src/apideck_unify/invoiceitems.py @@ -2305,6 +2325,8 @@ generatedFiles: - src/apideck_unify/models/accounting_expensesdeleteop.py - src/apideck_unify/models/accounting_expensesoneop.py - src/apideck_unify/models/accounting_expensesupdateop.py + - src/apideck_unify/models/accounting_generalledgertransactionsallop.py + - src/apideck_unify/models/accounting_generalledgertransactionsoneop.py - src/apideck_unify/models/accounting_invoiceitemsaddop.py - src/apideck_unify/models/accounting_invoiceitemsallop.py - src/apideck_unify/models/accounting_invoiceitemsdeleteop.py @@ -2765,6 +2787,10 @@ generatedFiles: - src/apideck_unify/models/formfieldoption.py - src/apideck_unify/models/formfieldoptiongroup.py - src/apideck_unify/models/gender.py + - src/apideck_unify/models/generalledgertransaction.py + - src/apideck_unify/models/generalledgertransactionlineitem.py + - src/apideck_unify/models/generalledgertransactionsfilter.py + - src/apideck_unify/models/generalledgertransactionssort.py - src/apideck_unify/models/getaccountingdepartmentresponse.py - src/apideck_unify/models/getaccountingdepartmentsresponse.py - src/apideck_unify/models/getaccountingemployeeresponse.py @@ -2853,6 +2879,8 @@ generatedFiles: - src/apideck_unify/models/getfileresponse.py - src/apideck_unify/models/getfilesresponse.py - src/apideck_unify/models/getfolderresponse.py + - src/apideck_unify/models/getgeneralledgertransactionresponse.py + - src/apideck_unify/models/getgeneralledgertransactionsresponse.py - src/apideck_unify/models/gethriscompaniesresponse.py - src/apideck_unify/models/gethriscompanyresponse.py - src/apideck_unify/models/getinvoiceitemresponse.py @@ -3067,6 +3095,7 @@ generatedFiles: - src/apideck_unify/models/purchaseorderssort.py - src/apideck_unify/models/quote.py - src/apideck_unify/models/quotelineitem.py + - src/apideck_unify/models/quotesfilter.py - src/apideck_unify/models/rebilling.py - src/apideck_unify/models/refund.py - src/apideck_unify/models/refund_input.py @@ -16888,7 +16917,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" responses: "200": - application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "options": [], "option_type": "group"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} + application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "options": [], "option_type": "group"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "last_downstream_error_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} "401": @@ -16939,7 +16968,7 @@ examples: application/json: {"enabled": true, "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "configuration": [{"resource": "leads", "defaults": [{"id": "ProductInterest", "options": [{"label": "General Channel", "option_type": "simple"}], "value": "GC5000 series"}]}], "custom_mappings": [{"value": "$.root.training.first_aid"}], "consent_state": "granted", "latest_consent": {"granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}} responses: "200": - application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "option_type": "simple"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} + application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "option_type": "simple"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "last_downstream_error_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} "401": @@ -17033,7 +17062,7 @@ examples: application/json: {"credentials": {"refresh_token": "", "access_token": ""}, "settings": {"instance_url": "https://eu28.salesforce.com"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}} responses: "200": - application/json: {"status_code": 201, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "option_type": "simple"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} + application/json: {"status_code": 201, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "option_type": "simple"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "last_downstream_error_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} "401": @@ -17080,7 +17109,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" responses: "200": - application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "options": [], "option_type": "group"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} + application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "options": [], "option_type": "group"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "last_downstream_error_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} "401": @@ -17227,7 +17256,7 @@ examples: x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" responses: "200": - application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "options": [], "option_type": "group"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} + application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "options": [], "option_type": "group"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "last_downstream_error_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} "401": @@ -17280,7 +17309,7 @@ examples: application/json: {"enabled": true, "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "configuration": [{"resource": "leads", "defaults": [{"id": "ProductInterest", "options": [{"label": "General Channel", "options": [{"label": "General Channel", "value": "general", "option_type": "simple"}], "option_type": "group"}], "value": "GC5000 series"}]}], "custom_mappings": [{"value": "$.root.training.first_aid"}], "consent_state": "granted", "latest_consent": {"granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}} responses: "200": - application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "option_type": "simple"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} + application/json: {"status_code": 200, "status": "OK", "data": {"id": "crm+salesforce", "service_id": "salesforce", "name": "Salesforce", "tag_line": "CRM software solutions and enterprise cloud computing from Salesforce, the leader in customer relationship management (CRM) and PaaS. Free 30 day trial.", "unified_api": "crm", "state": "authorized", "integration_state": "configured", "auth_type": "oauth2", "oauth_grant_type": "authorization_code", "enabled": true, "website": "https://www.salesforce.com", "icon": "https://res.cloudinary.com/apideck/image/upload/v1529456047/catalog/salesforce/icon128x128.png", "logo": "https://c1.sfdcstatic.com/content/dam/web/en_us/www/images/home/logo-salesforce-m.svg", "authorize_url": "https://unify.apideck.com/vault/authorize/salesforce/?state=", "revoke_url": "https://unify.apideck.com/vault/revoke/salesforce/?state=", "settings": {"instance_url": "https://eu28.salesforce.com", "api_key": "12345xxxxxx"}, "metadata": {"account": {"name": "My Company", "id": "c01458a5-7276-41ce-bc19-639906b0450a"}, "plan": "enterprise"}, "form_fields": [{"id": "instance_url", "label": "Instance url", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": false}, {"id": "api_key", "label": "API Key", "placeholder": "", "type": "text", "required": true, "custom_field": false, "allow_custom_values": false, "disabled": false, "sensitive": true}], "configuration": [{"resource": "leads", "defaults": [{"target": "custom_fields", "id": "ProductInterest", "options": [{"label": "General Channel", "option_type": "simple"}], "value": "GC5000 series"}]}], "configurable_resources": ["opportunities", "companies", "contacts", "leads"], "resource_schema_support": ["leads"], "resource_settings_support": ["leads"], "settings_required_for_authorization": ["client_id", "client_secret"], "subscriptions": [{"downstream_id": "5f5f5f5f5f5f5f5f5f5f5f5f", "unify_event_types": ["crm.contact.created"], "downstream_event_types": ["contacts.CREATED"], "execute_url": "https://unify.apideck.com/webhook/w/{lookupIdToken}/{serviceId}?e={downstreamEventType}", "created_at": "2020-10-01T12:00:00.000Z"}], "has_guide": true, "custom_mappings": [{"id": "hris+employees+first_aid_training", "label": "First Aid Training", "description": "First Aid Training completed after 2019-01-01", "value": "$.root.training.first_aid", "key": "first_aid_training", "required": false, "custom_field": true, "consumer_id": "test_user_id", "example": "Some value"}], "consent_state": "granted", "consents": [{"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}], "latest_consent": {"id": "con_1234567890", "created_at": "2025-04-15T14:30:00Z", "granted": true, "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "application_data_scopes": {"enabled": true, "updated_at": "2025-04-15T14:30:00Z", "resources": {"hris.employees": {"id": {"read": true, "write": false}, "first_name": {"read": true, "write": true}, "last_name": {"read": true, "write": true}, "email": {"read": true, "write": true}, "addresses[].street": {"read": true, "write": false}, "addresses[].city": {"read": true, "write": false}, "employment.job_title": {"read": true, "write": true}, "custom_fields[].employee_number": {"read": true, "write": false}}, "hris.departments": {"id": {"read": true, "write": false}, "name": {"read": true, "write": true}, "code": {"read": true, "write": false}}}}, "health": "ok", "credentials_expire_at": 1730172800000, "last_refresh_failed_at": 1730000000000, "last_downstream_error_at": 1730000000000, "created_at": 1615563533390, "updated_at": 1616662325753}} "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} "401": @@ -18399,6 +18428,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"} header: x-apideck-consumer-id: "test-consumer" x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" @@ -19659,9 +19689,91 @@ 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.generalLedgerTransactionsAll: + speakeasy-default-accounting-general-ledger-transactions-all: + parameters: + query: + raw: false + limit: 20 + filter: {"source_type": "invoice", "updated_since": "2024-09-30T07:43:32.000Z"} + sort: {"by": "posted_at", "direction": "desc"} + 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" + x-apideck-company-id: "12345" + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "general-ledger-transactions", "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} + "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.generalLedgerTransactionsOne: + speakeasy-default-accounting-general-ledger-transactions-one: + parameters: + path: + id: "" + query: + raw: false + fields: "id,updated_at" + header: + x-apideck-consumer-id: "test-consumer" + x-apideck-app-id: "dSBdXd2H6Mqwfg0atXHXYcysLJE9qyn1VwBtXHX" + x-apideck-service-id: "salesforce" + x-apideck-company-id: "12345" + responses: + "200": + application/json: {"status_code": 200, "status": "OK", "service": "xero", "resource": "general-ledger-transactions", "operation": "one", "data": {"id": "12345", "source_type": "invoice", "source_id": "12345", "posted_at": "2020-09-30T07:43:32.000Z", "reference": "INV-2024-001", "number": "JNL-001", "currency": "USD", "currency_rate": 0.69, "memo": "Year-end adjustment for inventory revaluation", "line_items": [{"id": "12345", "description": "Sales revenue from Q3 batch", "net_amount": 27500, "type": "debit", "tax_amount": 0, "tax_rate": {"id": "123456", "code": "N-T", "name": "GST on Purchases", "rate": 10}, "tracking_categories": [{"id": "123456", "code": "100", "name": "New York", "parent_id": "123456", "parent_name": "New York"}], "ledger_account": {"id": "123456", "name": "Bank account", "nominal_code": "N091", "code": "453", "parent_id": "123456", "display_id": "123456"}, "line_number": 1}], "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", "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", "downstream_errors": [{"message": "Account code '100' has been archived or deleted", "detail": "Each line item must reference a valid account", "code": "VALIDATION_ERROR"}]} + "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:\n* `apideck.crm.notes.list()`: `request.filter` **Added**\n* `apideck.crm.users.list()`: \n * `request.filter` **Added**\n * `response.data.[].name` **Added**\n* `apideck.crm.users.create()`: `request.name` **Added**\n* `apideck.crm.users.get()`: `response.data.name` **Added**\n* `apideck.crm.users.update()`: `request.name` **Added**\n" +releaseNotes: | + ## Python SDK Changes Detected: + * `apideck.accounting.general_ledger_transactions.list()`: **Added** + * `apideck.accounting.general_ledger_transactions.get()`: **Added** + * `apideck.accounting.bills.list()`: `request.filter` **Changed** + * `apideck.accounting.invoices.list()`: `request.filter` **Changed** + * `apideck.accounting.ledger_accounts.list()`: `request.filter` **Changed** + * `apideck.accounting.invoice_items.list()`: `request.filter` **Changed** + * `apideck.accounting.credit_notes.list()`: `request.filter` **Changed** + * `apideck.accounting.customers.list()`: `request.filter` **Changed** + * `apideck.accounting.suppliers.list()`: `request.filter` **Changed** + * `apideck.accounting.payments.list()`: `request.filter` **Changed** + * `apideck.accounting.journal_entries.list()`: `request.filter` **Changed** + * `apideck.accounting.purchase_orders.list()`: `request.filter` **Changed** + * `apideck.accounting.bill_payments.list()`: `request.filter` **Changed** + * `apideck.accounting.quotes.list()`: `request.filter` **Added** + * `apideck.accounting.projects.list()`: `request.filter` **Changed** + * `apideck.accounting.expense_reports.list()`: `request.filter` **Changed** + * `apideck.vault.connections.list()`: `response.data.[].last_downstream_error_at` **Added** + * `apideck.vault.connections.get()`: `response.data.last_downstream_error_at` **Added** + * `apideck.vault.connections.update()`: `response.data.last_downstream_error_at` **Added** + * `apideck.vault.connections.imports()`: `response.data.last_downstream_error_at` **Added** + * `apideck.vault.connections.token()`: `response.data.last_downstream_error_at` **Added** + * `apideck.vault.connection_settings.list()`: `response.data.last_downstream_error_at` **Added** + * `apideck.vault.connection_settings.update()`: `response.data.last_downstream_error_at` **Added** trackedFiles: .devcontainer/README.md: last_write_checksum: sha1:07adb0c0c051a9be4d479ea06461f3a9b3bbeb2f @@ -20133,6 +20245,18 @@ trackedFiles: last_write_checksum: sha1:649afc75e803cce6376bbed159716fe8895b06f1 docs/models/accountingexpensesupdateresponse.md: last_write_checksum: sha1:a0abf9ee705650d2635889c9e4290e4e62224020 + docs/models/accountinggeneralledgertransactionsallglobals.md: + last_write_checksum: sha1:38519a695a79d26796b99ff10fbd41f421085eb1 + docs/models/accountinggeneralledgertransactionsallrequest.md: + last_write_checksum: sha1:8772e92463f4ac8b8929ac44762b0d2d9ee84fc0 + docs/models/accountinggeneralledgertransactionsallresponse.md: + last_write_checksum: sha1:2174048bb8496990be42a0305ab574e2b0722f4f + docs/models/accountinggeneralledgertransactionsoneglobals.md: + last_write_checksum: sha1:e3304e64f211bb5e10547c3119fd63655bac85e0 + docs/models/accountinggeneralledgertransactionsonerequest.md: + last_write_checksum: sha1:0e78eea4c69dfca5a47ad05fc789c4d178fc6774 + docs/models/accountinggeneralledgertransactionsoneresponse.md: + last_write_checksum: sha1:02cab03b73369a9338217cf585a87822c8976b03 docs/models/accountinginvoiceitemsaddglobals.md: last_write_checksum: sha1:f8592854bba1844b0ead8ed5969c3cad022c1e19 docs/models/accountinginvoiceitemsaddrequest.md: @@ -20398,7 +20522,7 @@ trackedFiles: docs/models/accountingquotesallglobals.md: last_write_checksum: sha1:3dc0a08da96f7926e90a33a515d7389347c30220 docs/models/accountingquotesallrequest.md: - last_write_checksum: sha1:feec1e795416178d6fbf3468c7418f4731e83e2b + last_write_checksum: sha1:f1d0f2f9f31e4fb3b8e05dcfd5618857e27c5851 docs/models/accountingquotesallresponse.md: last_write_checksum: sha1:a7c9586c9cc2b2977614139a7f209f5beeab4ef5 docs/models/accountingquotesdeleteglobals.md: @@ -20830,7 +20954,7 @@ trackedFiles: docs/models/billpaymenttype.md: last_write_checksum: sha1:f13abce9e8c13c55e827b79f5d569b5423c101f5 docs/models/billsfilter.md: - last_write_checksum: sha1:3436207c64eb79ed2bcd15ba8ba7d615fa2fed96 + last_write_checksum: sha1:99e43ef0215557e2b046878f11c1e3569e247f60 docs/models/billsfilterstatus.md: last_write_checksum: sha1:f106a07ba83fc3ca7599e71354b27c0fefaa7309 docs/models/billssort.md: @@ -20900,13 +21024,13 @@ trackedFiles: docs/models/configuration.md: last_write_checksum: sha1:d7316959670bb33007c8e75596a6b67e3e860b55 docs/models/connection.md: - last_write_checksum: sha1:c5da6a92731a4a0dcbec102e263dc92f5f2bdc54 + last_write_checksum: sha1:a1b907eb47674aaaaad8e861e070f8b9a388756d docs/models/connectionconfiguration.md: last_write_checksum: sha1:b8373ebad4674b14991c53b0b805d1d82739022f docs/models/connectiondefaults.md: last_write_checksum: sha1:ffafdb7580a2a9f1fc663fad634a8ee852bb8770 docs/models/connectionhealth.md: - last_write_checksum: sha1:6c75ceb6707fc0f40dd639476448a274b865d703 + last_write_checksum: sha1:aca35cf662bd5b1d85e58c1531458882fad42cc6 docs/models/connectionimportdata.md: last_write_checksum: sha1:0b06e09351ee734a771f4816621486ce38d65f56 docs/models/connectioninput.md: @@ -21160,7 +21284,7 @@ trackedFiles: docs/models/creditnoteinput.md: last_write_checksum: sha1:5cd185371ea93e9f5d5de02ffc2e5894e0178e09 docs/models/creditnotesfilter.md: - last_write_checksum: sha1:71cac54aa2294e88ec9d621d73aedcacf664b7bb + last_write_checksum: sha1:61dada164b221a0592e2e0a13a63e83b7604f47f docs/models/creditnotessort.md: last_write_checksum: sha1:fd155892f6ca3800b5e3b8f6ba93ccee75ba2255 docs/models/creditnotessortby.md: @@ -21480,7 +21604,7 @@ trackedFiles: docs/models/customerinput.md: last_write_checksum: sha1:173200099c92a00103cd196857a1245fe11c60e9 docs/models/customersfilter.md: - last_write_checksum: sha1:f493d56c83782449d62cd747eb85e32b387f2020 + last_write_checksum: sha1:b384cc609d09dd6c4fd360243dda59914bdcdcbb docs/models/customersfilterstatus.md: last_write_checksum: sha1:51104ca6ea38000fa961da1382d30d453e238940 docs/models/customerssort.md: @@ -21854,7 +21978,7 @@ trackedFiles: docs/models/expensereportlineiteminput.md: last_write_checksum: sha1:68abc0273747a483282ba884645248aea8a76cd0 docs/models/expensereportsfilter.md: - last_write_checksum: sha1:533be8b993ddfd16144e9aaf1159c7568f40e745 + last_write_checksum: sha1:2467326c979c62f76e4dbd7e1ccc823de8f30eac docs/models/expensereportsfilterstatus.md: last_write_checksum: sha1:8f2339fcb79d520c87ca3406153b2144542b9f2f docs/models/expensereportstatus.md: @@ -22103,6 +22227,20 @@ trackedFiles: last_write_checksum: sha1:2d75cb4474b6c2343e4281383c19576a98eb3586 docs/models/gender.md: last_write_checksum: sha1:3c95ab15d15027e740e4c2feef121f6330266de6 + docs/models/generalledgertransaction.md: + last_write_checksum: sha1:96741147e9ddbe207f306773b1a1c3dd1fb79002 + docs/models/generalledgertransactionlineitem.md: + last_write_checksum: sha1:20d54b1701e36f66f40c6352dcfcacd5811afdbd + docs/models/generalledgertransactionlineitemtype.md: + last_write_checksum: sha1:a86b1e8ca6aba7ddad5bee31ec36b8ed7071be3a + docs/models/generalledgertransactionsfilter.md: + last_write_checksum: sha1:34771ef56027c3701400aad862cbe8e983442fbc + docs/models/generalledgertransactionsourcetype.md: + last_write_checksum: sha1:f82ee546b8c3f752042b0a2bbe6e2fdbf5c30b19 + docs/models/generalledgertransactionssort.md: + last_write_checksum: sha1:45bc6b8f55364f5bd51033cbcd7f6e3818efe2f2 + docs/models/generalledgertransactionssortby.md: + last_write_checksum: sha1:7eee207c072c5dd529b07452d66cc93789f3ed15 docs/models/getaccountingdepartmentresponse.md: last_write_checksum: sha1:d9869be1a8ab2046d52d13eea2ea153f9e5f9aa1 docs/models/getaccountingdepartmentsresponse.md: @@ -22279,6 +22417,10 @@ trackedFiles: last_write_checksum: sha1:b1fcde70e8d4eac16675a9c1b65478f6b5b43a26 docs/models/getfolderresponse.md: last_write_checksum: sha1:9086812860b8388193aca5493de972854b0e3a83 + docs/models/getgeneralledgertransactionresponse.md: + last_write_checksum: sha1:b33ebb6c16f3539acef4011dd992349745a6b9b5 + docs/models/getgeneralledgertransactionsresponse.md: + last_write_checksum: sha1:df1538f189cbc1786ed4e66b703c00f0870095fc docs/models/gethriscompaniesresponse.md: last_write_checksum: sha1:d7c7a8d91c9249964b5a9e5a6616eeaa68c73d75 docs/models/gethriscompanyresponse.md: @@ -22398,7 +22540,7 @@ trackedFiles: docs/models/getwebhooksresponse.md: last_write_checksum: sha1:a495ba205e48edc2ea5609c71348cead73fca625 docs/models/health.md: - last_write_checksum: sha1:c396b9969efd06365e58881d180d8e545decb933 + last_write_checksum: sha1:2d0eccfa53bebb13ac169c08f392c76e1012630b docs/models/hriscompaniesaddglobals.md: last_write_checksum: sha1:689667f84b5a3b85a7d09270aab30d7f243f43ea docs/models/hriscompaniesaddrequest.md: @@ -22584,7 +22726,7 @@ trackedFiles: docs/models/invoiceitemsalesdetails.md: last_write_checksum: sha1:e86574bd1508f782013ad3e72c31f87971524cf1 docs/models/invoiceitemsfilter.md: - last_write_checksum: sha1:7c0aefca2a8b00117842860327829391fd865427 + last_write_checksum: sha1:13e75aa8a676c70ad03d9df8f5ed27aecf9a44b8 docs/models/invoiceitemssort.md: last_write_checksum: sha1:69616d3404cad41715adbbeec8fa9bf292faae30 docs/models/invoiceitemssortby.md: @@ -22602,7 +22744,7 @@ trackedFiles: docs/models/invoiceresponse.md: last_write_checksum: sha1:bc0577dbf4ceec23ec16db3034fd6199ef550dc7 docs/models/invoicesfilter.md: - last_write_checksum: sha1:367404f32d1018079f0339e3c83cd277f9f8f6b1 + last_write_checksum: sha1:684abb5ac6c9fb31e4cd331216b7f7b321f46660 docs/models/invoicessort.md: last_write_checksum: sha1:1eba528d38a368e93a9d28100a5d7c566bad30a1 docs/models/invoicessortby.md: @@ -22716,7 +22858,9 @@ trackedFiles: docs/models/jobtype.md: last_write_checksum: sha1:e6ebaadba669092d88c14d3127d44a218002e927 docs/models/journalentriesfilter.md: - last_write_checksum: sha1:142b451ee4315bb32a360e0cdfe9935b99d7aa2e + last_write_checksum: sha1:212e3b844e731cdb009cd314ae37695074179fa2 + docs/models/journalentriesfilterscope.md: + last_write_checksum: sha1:df5230ed4aadb3058cabc89269c06fd6a5b24014 docs/models/journalentriesfilterstatus.md: last_write_checksum: sha1:7d06dbfa7f479fd73b375e18fd1ca8fa2133b1ff docs/models/journalentriessort.md: @@ -22754,7 +22898,7 @@ trackedFiles: docs/models/ledgeraccountinput.md: last_write_checksum: sha1:4ac3c9d202db5f43f07936ebcc53c16f2cbde2ba docs/models/ledgeraccountsfilter.md: - last_write_checksum: sha1:aa41ec441db68d4235157bf37b17c9ee47a4d22b + last_write_checksum: sha1:25127f7b5acabde9b88273016bacdfa9a01ba22d docs/models/ledgeraccountsfilterstatus.md: last_write_checksum: sha1:a14b96feb7ea68ab27a33069477d678f2068badb docs/models/ledgeraccountssort.md: @@ -22932,7 +23076,7 @@ trackedFiles: docs/models/paymentrequiredresponse.md: last_write_checksum: sha1:45bb76a00672508387db28b9dce96d3661491594 docs/models/paymentsfilter.md: - last_write_checksum: sha1:44a022e442059c6750eecf94ea2376e2ee12374f + last_write_checksum: sha1:a7a8f7a03eb136bdaf12972575672377922e946a docs/models/paymentsfilterpaymentstatus.md: last_write_checksum: sha1:0003ab41802651f55fc9e7456f6f4d94e364b1a7 docs/models/paymentsfiltertype.md: @@ -23000,7 +23144,7 @@ trackedFiles: docs/models/projectprojectstatus.md: last_write_checksum: sha1:4a72cf619b2e554e5164d508cc6ec7906c9e3a32 docs/models/projectsfilter.md: - last_write_checksum: sha1:9ba860608648d646ca428c3ec32130cd56ec7bfb + last_write_checksum: sha1:4bd44ead48d937ef62f3ab294eeff295fc05d28a docs/models/projectssort.md: last_write_checksum: sha1:ce499db64992f0bd86dafbe1b7927d957398f89a docs/models/projectssortsortby.md: @@ -23060,7 +23204,7 @@ trackedFiles: docs/models/purchaseorderinput.md: last_write_checksum: sha1:2d2fc413fe8df46a1bb377c918b5b901a7142407 docs/models/purchaseordersfilter.md: - last_write_checksum: sha1:fc530b97a1741136edeb4fa6554a735ae0b1692e + last_write_checksum: sha1:167e3885fa2eb17b87ed9a2a8bd6c78fe08c3ebb docs/models/purchaseorderssort.md: last_write_checksum: sha1:40955661d0606c8c5b8dffc73fa10c5822d38ea3 docs/models/purchaseorderssortby.md: @@ -23077,6 +23221,8 @@ trackedFiles: last_write_checksum: sha1:a543acba9c52a4e16feb2581fff9cf04c6b24aed docs/models/quotelineitemtype.md: last_write_checksum: sha1:df59dbf0dd185da8a9aabd570399ebdb49dca86b + docs/models/quotesfilter.md: + last_write_checksum: sha1:c4897eb6ad552e74852c8bf72e9ab25bab0c10d2 docs/models/quotestatus.md: last_write_checksum: sha1:f00b3209a9c7ebccedd03f94739a739ceb6fdc81 docs/models/rebilling.md: @@ -23187,6 +23333,8 @@ trackedFiles: last_write_checksum: sha1:a1067d89003e4adda3e2c1f467a1d771020ee472 docs/models/sortdirection.md: last_write_checksum: sha1:53cc6d6adc98c85b2880671af1849b2234e07135 + docs/models/sourcetype.md: + last_write_checksum: sha1:a185f8161b55b088ca98cb972e86e9cb09681572 docs/models/stage.md: last_write_checksum: sha1:7d473faebd54bf8372b4015caf38490029ffc210 docs/models/stages.md: @@ -23216,7 +23364,7 @@ trackedFiles: docs/models/supplierinput.md: last_write_checksum: sha1:b8a5fb2144332342142bea917bbd30e552517552 docs/models/suppliersfilter.md: - last_write_checksum: sha1:53ab8c13d14c5d30d9c1f4318a96c97bb5f51a9d + last_write_checksum: sha1:07287305682aea8b1ae48fb786bb882567c3585a docs/models/supplierssort.md: last_write_checksum: sha1:c7297fbfe8a2b172a4dd3c2bd3f90b95950bdd3f docs/models/supplierssortby.md: @@ -23628,7 +23776,7 @@ trackedFiles: docs/models/webhookeventlogsfilterservice.md: last_write_checksum: sha1:91879316d2b412d23cf082cca77d946dda736357 docs/models/webhookeventtype.md: - last_write_checksum: sha1:8a56f9a602a729f8594a7461923fd009e22910d1 + last_write_checksum: sha1:92a500eb3b8bf4c8c885446090daaf87958dbcc9 docs/models/webhooksubscription.md: last_write_checksum: sha1:a698dbef407f125cd3e724b8a0920760f88182cb docs/models/webhooksupport.md: @@ -23789,6 +23937,8 @@ trackedFiles: last_write_checksum: sha1:6fafca167285487e1d60275037ff6cb4ac3978f3 docs/sdks/folders/README.md: last_write_checksum: sha1:2997e8070c3ac42b86e6a3b8e611ab6a468c54ab + docs/sdks/generalledgertransactions/README.md: + last_write_checksum: sha1:a6f1e311d62ca308340a41b8e124abd30e6477c0 docs/sdks/invoiceitems/README.md: last_write_checksum: sha1:d2426572c3480a9b6d0befefb7256a11051b7d76 docs/sdks/invoices/README.md: @@ -23830,7 +23980,7 @@ trackedFiles: docs/sdks/purchaseorders/README.md: last_write_checksum: sha1:fb84ad40ffac3213e8249afbb310b4c4d5b4dfed docs/sdks/quotes/README.md: - last_write_checksum: sha1:2179d175eb9e35bb1281a005b9047ae6424f641e + last_write_checksum: sha1:800c2973ae672f661ded08df85fb324484cb9b0a docs/sdks/refunds/README.md: last_write_checksum: sha1:f02f4f6ba8629d448e1708c0a82e505f526c7079 docs/sdks/sessions/README.md: @@ -23870,7 +24020,7 @@ trackedFiles: scripts/publish.sh: last_write_checksum: sha1:b31bafc19c15ab5ea925fdf8d5d4adce2b115a63 src/apideck_unify/__init__.py: - last_write_checksum: sha1:36306d1d404b6aeb912d27f1d9c52f098ff7bf9b + last_write_checksum: sha1:eec86b555287a1f966479167defba81fe37be83f src/apideck_unify/_hooks/__init__.py: last_write_checksum: sha1:e3111289afd28ad557c21d9e2f918caabfb7037d src/apideck_unify/_hooks/sdkhooks.py: @@ -23878,25 +24028,25 @@ trackedFiles: src/apideck_unify/_hooks/types.py: last_write_checksum: sha1:4b923d3d84d979af6169a9db6b81bfc373079a25 src/apideck_unify/_version.py: - last_write_checksum: sha1:be6ae553b3103cd4961604d2a39332c7a0038e23 + last_write_checksum: sha1:0729623603545401a6da7f4919bd6e8cbb8d80b5 src/apideck_unify/accounting.py: - last_write_checksum: sha1:afb8958c0092d6bbc935597b72e8a96d2b82b4aa + last_write_checksum: sha1:63ea555e29266c0cbe993e2bddf21ffecd9b02b9 src/apideck_unify/activities.py: - last_write_checksum: sha1:b5f87574cb7834aaeaa00d231d4437dbecade8ef + last_write_checksum: sha1:4f95960557847587b5b7953c12d400105b0659f6 src/apideck_unify/agedcreditors_sdk.py: - last_write_checksum: sha1:38953203ce19205b65319658ee891fa2ebf63f97 + last_write_checksum: sha1:0a752c0c5ceda6352dfbe6528fd0b2f8a89eeadb src/apideck_unify/ageddebtors_sdk.py: - last_write_checksum: sha1:b64ea0f0f42a72c6255bb8fc8f3d6553d09e2846 + last_write_checksum: sha1:6d8203b91939a723354fe44406d8753a064c2928 src/apideck_unify/apideck_companies.py: - last_write_checksum: sha1:604891f4649de6b9dcd5d16750b6d3b25a7a7bbf + last_write_checksum: sha1:d423fbe1666f70860f87a5b7c307d7e1a82a59c8 src/apideck_unify/apideck_customers.py: - last_write_checksum: sha1:0614b08e78f64414d2f96463ff04d417ca08ff58 + last_write_checksum: sha1:7da17c0207af9da318668d09ad79e539a351c833 src/apideck_unify/apideck_departments.py: - last_write_checksum: sha1:19e41fbd66c3cd1854968bff75e28d13abc1cb6b + last_write_checksum: sha1:457a04dec86082a9ed1ed1472eaa8c6188c6eb3c src/apideck_unify/apideck_employees.py: - last_write_checksum: sha1:c4f35ec2caba6bc2a887e863053b24710bb15ae3 + last_write_checksum: sha1:6d75fa6d2feb59e8f89e19b51be012efe6c31992 src/apideck_unify/apideck_hris_companies.py: - last_write_checksum: sha1:33525b6f5c41b20f33a6497d6749f810826b0b12 + last_write_checksum: sha1:cccc867973acf329bd2d749c5a716179417f1d21 src/apideck_unify/apiresourcecoverage_sdk.py: last_write_checksum: sha1:19c0d90196f4d4f6a1a73f3af055d40986fc6b9f src/apideck_unify/apiresources.py: @@ -23904,39 +24054,39 @@ trackedFiles: src/apideck_unify/apis.py: last_write_checksum: sha1:c5e1e3a2228cd77ab87593355842374efbd2617d src/apideck_unify/applicants.py: - last_write_checksum: sha1:d7877b481e381a5ec2da764474233384bd7727f3 + last_write_checksum: sha1:227afe08d8e0ed5537bcbc0115dd33e6e35732e3 src/apideck_unify/applications.py: - last_write_checksum: sha1:061fe8ae6b56cf50f2e633e851e53d7eacac57fc + last_write_checksum: sha1:d5bc1131f592ebcc13e0b3ca237555f6960b972b src/apideck_unify/ats.py: last_write_checksum: sha1:0d5c5cedbfeb231840eb69958e0240f2fbb630f8 src/apideck_unify/attachments.py: last_write_checksum: sha1:74f16eb5a3b7a5c6f6982918bdc312d4ff221e7a src/apideck_unify/balancesheet_sdk.py: - last_write_checksum: sha1:adf1cc84105c5f2d7eb8057ab3293d7327b2d73a + last_write_checksum: sha1:e7a82b470a800602cd0a14a916e0814875d1587f src/apideck_unify/bankaccounts.py: - last_write_checksum: sha1:448618654628a9ace5cdbb1745bc7db135bdbc19 + last_write_checksum: sha1:c98af75eca1171375ac930acc4d3b8d18c0bbe81 src/apideck_unify/bankfeedaccounts.py: - last_write_checksum: sha1:38259fb36016d4e58dddc5e114444c124a2fcb32 + last_write_checksum: sha1:7d472865921e62f6cb4818a902692d8cb5dc8ec7 src/apideck_unify/bankfeedstatements.py: - last_write_checksum: sha1:51f40f939cd39999e7ab319f2ef0b8171a677b61 + last_write_checksum: sha1:c06e8bc014771bcfd4825806a8006fc35a2e7838 src/apideck_unify/basesdk.py: last_write_checksum: sha1:02f62bd40dfedb9697666050be333be287dd5a5b src/apideck_unify/billpayments.py: - last_write_checksum: sha1:43a6a58f8324cfff0b36b310a1c4f13a85e0c217 + last_write_checksum: sha1:5e91bb6e9964ac8481cc5100bb667e45ee479a2b src/apideck_unify/bills.py: - last_write_checksum: sha1:32954f0d06c568fa81ad1cd3f656be8d0226e891 + last_write_checksum: sha1:b65200199e7599a2e5782fd4c803624e96f8ba5e src/apideck_unify/categories.py: last_write_checksum: sha1:edac9587e5f795f65d1cb7741616b174cdba9695 src/apideck_unify/collections.py: - last_write_checksum: sha1:46b9fb81de836bb82e25dfb9c9ec2a7504a56c15 + last_write_checksum: sha1:5466f2ab674071c137ee017df0495ea724f2486e src/apideck_unify/collectiontags.py: - last_write_checksum: sha1:95299132dc9f72097c5a4e6fb63839ea28c2248f + last_write_checksum: sha1:93917b03c5dba10d20066c42917cbf981374e67a src/apideck_unify/collectionticketcomments.py: - last_write_checksum: sha1:31877bde20a4e8f4b2a1779aba87e006fe694f06 + last_write_checksum: sha1:2b455756d12fd0ef24c77d71f5ba1bbdad0f5270 src/apideck_unify/collectiontickets.py: - last_write_checksum: sha1:c56002fb39ae9be61c3c7be8ad7b1ef6a311a536 + last_write_checksum: sha1:795c3a404e230eaa017bb2eee9110c1d1d475b27 src/apideck_unify/collectionusers.py: - last_write_checksum: sha1:69963d919c40fe79f9c2e0beb70fdff1d5bf972b + last_write_checksum: sha1:c35ad0700ea90e8472098b43b7bbaea44abecee6 src/apideck_unify/companies.py: last_write_checksum: sha1:1a6fe8f5abf4083a60203aea326c5f990268e927 src/apideck_unify/companyinfo_sdk.py: @@ -23948,9 +24098,9 @@ trackedFiles: src/apideck_unify/connectioncustommappings.py: last_write_checksum: sha1:db6e5bfe9810d17534e88e8225593e2ecb7b69ef src/apideck_unify/connections.py: - last_write_checksum: sha1:0f258d6cd02a40bdef1a047b510d616479b2790e + last_write_checksum: sha1:79bcc4662ebaf216dc0c0576a90c239e74ca3264 src/apideck_unify/connectionsettings.py: - last_write_checksum: sha1:e9d1c4840f64b30904e9421d08c1ce96ff374899 + last_write_checksum: sha1:b5cf19d1a1f988c4d31afe62a80f077ebc1c57f4 src/apideck_unify/connector_sdk.py: last_write_checksum: sha1:2612a2326d4070d9551e7865993fee5a42931c89 src/apideck_unify/connectordocs.py: @@ -23964,77 +24114,79 @@ trackedFiles: src/apideck_unify/consumers.py: last_write_checksum: sha1:f0109518542457c9510782b0c271baa767d21735 src/apideck_unify/contacts.py: - last_write_checksum: sha1:c327130102b95dfd7b759e8f1c90b26b10a1e206 + last_write_checksum: sha1:dbe7cd26d01b7facd000940eb397d51a609c6685 src/apideck_unify/createcallback.py: last_write_checksum: sha1:614dddeb026a1bbc6ea2739a6e3720d3e5b7ddc5 src/apideck_unify/creditnotes.py: - last_write_checksum: sha1:bb579d096ac82a6e70312533b7a2978d06ef8bad + last_write_checksum: sha1:1bb028e358763a3ca91cc43ec06bcaddf28feeeb src/apideck_unify/crm.py: last_write_checksum: sha1:8bbf1c9e4f092b110c8f9b2cbaf5d4af099cd6a1 src/apideck_unify/customers.py: - last_write_checksum: sha1:e276582e6b1cfb05ea12b1881dc75b3500142664 + last_write_checksum: sha1:9509859e2f34134426889040fe25967ddc245048 src/apideck_unify/customfields.py: last_write_checksum: sha1:6af82cb3c3c1fc24fb4755e4f40fbfaceee89372 src/apideck_unify/custommappings.py: last_write_checksum: sha1:abb0be88368477c52b571379ba02a1af4ac2a3d9 src/apideck_unify/customobjects.py: - last_write_checksum: sha1:f0b6cb940c1654a5ce466ccc1a20ef72abc79877 + last_write_checksum: sha1:6c1fb68aaf7c309779fe93938878e80a0f9b1323 src/apideck_unify/customobjectschemas.py: - last_write_checksum: sha1:977bc1bcdfbb7fcccb7912adaf6706c993e03e2a + last_write_checksum: sha1:c5a6e4ad3c24cddd7e91434fef48f979b175cba0 src/apideck_unify/departments.py: - last_write_checksum: sha1:d2b58994ebc3ae5bb95fbaf6022b0c99bc051558 + last_write_checksum: sha1:2cd6157c89f43c8e1e2cf1790b59e1d15167083d src/apideck_unify/drivegroups.py: - last_write_checksum: sha1:7c53707fa24d5fb69db68dcf3effc773062ed1e4 + last_write_checksum: sha1:97e7214da96832b5fb9d5c53aea87a07c9c62bfa src/apideck_unify/drives.py: - last_write_checksum: sha1:6e61ac777a893ce703b439658a15cd2c7227fc77 + last_write_checksum: sha1:236da840b0b30a278e80e7d59147cad777bd8955 src/apideck_unify/ecommerce.py: last_write_checksum: sha1:d78cdad9d7181e3f4be809985221dab72f4c2eba src/apideck_unify/employeepayrolls.py: - last_write_checksum: sha1:b8de7dc79a642f00cd9b18c225819ac640e2bf35 + last_write_checksum: sha1:737d91ed72e3eda32a6547b4c15cac40ad146706 src/apideck_unify/employees.py: - last_write_checksum: sha1:862c97d8f673e1922bca461d50515a4a6410185c + last_write_checksum: sha1:9072625dcf82c88e8bfff499a16a478f718ad1a8 src/apideck_unify/employeeschedules_sdk.py: - last_write_checksum: sha1:65b280ff70cf040b49c6b2d00b8117d7123a9708 + last_write_checksum: sha1:fac57007e72b13bf68101d17f582cf8e6e1ef2b1 src/apideck_unify/eventlogs.py: last_write_checksum: sha1:e4fd50d9b4507f379760219da15c1592a45686f4 src/apideck_unify/expensecategories.py: - last_write_checksum: sha1:a752aa1d76a89ce49c292fcc559b0df38d751e4c + last_write_checksum: sha1:0a03c0bc7b3886749bdafd5a241a8130a88e8ff5 src/apideck_unify/expensereports.py: - last_write_checksum: sha1:ed966127b077a237877715b86bff8e2f328335f4 + last_write_checksum: sha1:3be6a3ce59df076360dcd21de101540e238e7a19 src/apideck_unify/expenses.py: - last_write_checksum: sha1:01da294f2e153e0a005b6723bd9c60bb3c7a1160 + last_write_checksum: sha1:b04244acb1a2c729923f299e0ffa106d302fd7f2 src/apideck_unify/files.py: - last_write_checksum: sha1:e138da63eec56021e6026b89e487aa5e65b3a456 + last_write_checksum: sha1:d8b0a528bb9f26eb68d2facd03c0cb5adc6c63fc src/apideck_unify/filestorage.py: last_write_checksum: sha1:cf935b847c21f965790ff3c0c664c0223aa0d78c src/apideck_unify/folders.py: - last_write_checksum: sha1:e43449d48fb4728f3972587855660d10f9d49403 + last_write_checksum: sha1:033f1a5f9c54d074e2824ebd7927406a724a695c + src/apideck_unify/generalledgertransactions.py: + last_write_checksum: sha1:fdf8fef9788e8e264940d7762c118c93f5a93b33 src/apideck_unify/hris.py: last_write_checksum: sha1:912ec8837c4f787eb3151a5184689536b586cc44 src/apideck_unify/httpclient.py: last_write_checksum: sha1:5e55338d6ee9f01ab648cad4380201a8a3da7dd7 src/apideck_unify/invoiceitems.py: - last_write_checksum: sha1:163a3a13b63d2ab04368f20d70513fc519f569ed + last_write_checksum: sha1:d13ad7cc1a01fba9e15f53a0adcba548dbc4540b src/apideck_unify/invoices.py: - last_write_checksum: sha1:9a2c0a4a7d76fbb2a810a871218ad99f5c5bca4f + last_write_checksum: sha1:12db1cd91896f142f94ac26a18791f3f06013863 src/apideck_unify/issuetracking.py: last_write_checksum: sha1:a18420473c9ae884dcdc562042a52205924643c5 src/apideck_unify/jobs.py: - last_write_checksum: sha1:c4b0890d5a1876b649dde1af2cd4386495c41f41 + last_write_checksum: sha1:43bd01df02fa0fffde0f12cf2b917e06308a207d src/apideck_unify/journalentries.py: - last_write_checksum: sha1:aeb08b264fb0c3c3bfe8259405855576efa4ecd5 + last_write_checksum: sha1:e7d00919012bcbc261bd101d7ed4400a1a8256c2 src/apideck_unify/leads.py: - last_write_checksum: sha1:8420f045a6c74c7cbd3013cc9e3e9aba16e79512 + last_write_checksum: sha1:734d846e136b53c80a8bb6e424e54a8a863c23e3 src/apideck_unify/ledgeraccounts.py: - last_write_checksum: sha1:84feadb99ac4eb0c388912ff338a43263faa7b0c + last_write_checksum: sha1:738c7a65a915e2082d98b5821f4bbab6e813b4e2 src/apideck_unify/locations.py: - last_write_checksum: sha1:c5da10bac88f31aa1f1e47f3f3cd65d4e4cd18d0 + last_write_checksum: sha1:4bef9beff5aa7dd90f03399fa65c6f84782bc4d1 src/apideck_unify/logs.py: last_write_checksum: sha1:070e37b5c12ad69e1645a93358457b9216757081 src/apideck_unify/messages.py: - last_write_checksum: sha1:158b4c1fb137ee3ac806cc6a59c8d906b01233d6 + last_write_checksum: sha1:1a89d6376a2a9e0f9700e086c3037e2cdd2e1c70 src/apideck_unify/models/__init__.py: - last_write_checksum: sha1:3b454e577c6f1b192756fc68fc872071e75659a9 + last_write_checksum: sha1:a5c166004dc39b6f883f3e074ea1617a2fcd5f93 src/apideck_unify/models/accounting_agedcreditorsoneop.py: last_write_checksum: sha1:7346d1ab1c21db21995aae34c5ba01549c2786c2 src/apideck_unify/models/accounting_ageddebtorsoneop.py: @@ -24179,6 +24331,10 @@ trackedFiles: last_write_checksum: sha1:b4796ef89490adb1677449ca1a68d2e308d5a2bb src/apideck_unify/models/accounting_expensesupdateop.py: last_write_checksum: sha1:f5c6839e4b7a981dc189d96ced74070e72585ea4 + src/apideck_unify/models/accounting_generalledgertransactionsallop.py: + last_write_checksum: sha1:4b64132d172734df96eb48bfd05c068ae3d0a941 + src/apideck_unify/models/accounting_generalledgertransactionsoneop.py: + last_write_checksum: sha1:463a36c21a458fde7a04eee9a69c58f2ea22a92f src/apideck_unify/models/accounting_invoiceitemsaddop.py: last_write_checksum: sha1:92daebb513cdcb6fde1ff09b91f5ac39c3789cdf src/apideck_unify/models/accounting_invoiceitemsallop.py: @@ -24264,7 +24420,7 @@ trackedFiles: src/apideck_unify/models/accounting_quotesaddop.py: last_write_checksum: sha1:41f64d9665c852f7de0f51c52c1273539d4142a1 src/apideck_unify/models/accounting_quotesallop.py: - last_write_checksum: sha1:afcb4857d89b2874598a4beefc3e7f2b3a7be634 + last_write_checksum: sha1:07461c65dbdfe267f2aeb6f2e863bd93fcf35e56 src/apideck_unify/models/accounting_quotesdeleteop.py: last_write_checksum: sha1:67139ec4241c37c5c5a6c224a296bed56a8134be src/apideck_unify/models/accounting_quotesoneop.py: @@ -24454,7 +24610,7 @@ trackedFiles: src/apideck_unify/models/billpayment.py: last_write_checksum: sha1:c9c6131aa1dd24719072679781c1671451bb634a src/apideck_unify/models/billsfilter.py: - last_write_checksum: sha1:067203ed1b437a9e4ac0684d716bac1341827d4e + last_write_checksum: sha1:b40078b5bfe623f84df1597d54890eb98d7d5f10 src/apideck_unify/models/billssort.py: last_write_checksum: sha1:57d5ec03ae0bce79ca6aa09ac74139098fa67ccd src/apideck_unify/models/categoriesfilter.py: @@ -24488,9 +24644,9 @@ trackedFiles: src/apideck_unify/models/compensation.py: last_write_checksum: sha1:e7ca2fd1d1315919bf40046de212790ec14de531 src/apideck_unify/models/connection.py: - last_write_checksum: sha1:2dc21c9751675bc942ca24588542701416195ef4 + last_write_checksum: sha1:52fe4d05e2309532cad44335db076a24e12781e7 src/apideck_unify/models/connectionhealth.py: - last_write_checksum: sha1:8e83303c32bfe100c32f2f4a593f0e532f2376e4 + last_write_checksum: sha1:33626f53cabfa62de333f5646fd5b2e68a2a9c06 src/apideck_unify/models/connectionimportdata.py: last_write_checksum: sha1:78b328cd244958ce60632ba080e4fc515b53864f src/apideck_unify/models/connectionstate.py: @@ -24676,7 +24832,7 @@ trackedFiles: src/apideck_unify/models/creditnote.py: last_write_checksum: sha1:ba366de9071b72708dce6e538c2f0f4508a83eea src/apideck_unify/models/creditnotesfilter.py: - last_write_checksum: sha1:f8539e2e861ed0ca65bf7a0fa6fdb83e6851ba3f + last_write_checksum: sha1:820e73f5e564f64fdee7325c4304398b752207e8 src/apideck_unify/models/creditnotessort.py: last_write_checksum: sha1:8dfe580975c11a8e44f8e2df6416781f831d0ae6 src/apideck_unify/models/creditordebit.py: @@ -24786,7 +24942,7 @@ trackedFiles: src/apideck_unify/models/customer.py: last_write_checksum: sha1:86eda684ddc0d53bd5cd2353560e12914d13de90 src/apideck_unify/models/customersfilter.py: - last_write_checksum: sha1:cf2221ef26285a9f15b64bc53567d29a46184660 + last_write_checksum: sha1:a23757bf9a2a26947f535b47a7f25eb24ac2b709 src/apideck_unify/models/customerssort.py: last_write_checksum: sha1:1ae868c9919cd921fe7a4c953cede4a382bd804e src/apideck_unify/models/customfield.py: @@ -25014,7 +25170,7 @@ trackedFiles: src/apideck_unify/models/expensereportlineitem_input.py: last_write_checksum: sha1:ab6dafe210c494b0109f8bce4b575dbce997ac28 src/apideck_unify/models/expensereportsfilter.py: - last_write_checksum: sha1:be3a472bfbc5bf79986fcd6cea40dff7c27cd4a8 + last_write_checksum: sha1:55b8df14f074ddbd0cb60461cfeeb87d3f74ef04 src/apideck_unify/models/expensesfilter.py: last_write_checksum: sha1:1bc3d71038dfb83737b75c7095d5acb97e49b347 src/apideck_unify/models/filesfilter.py: @@ -25099,6 +25255,14 @@ trackedFiles: last_write_checksum: sha1:0ed95da662d8e4e9286619ff09f949b0e5d15b77 src/apideck_unify/models/gender.py: last_write_checksum: sha1:32217f3aab2ebc045ba215883a02b6ee4d796a75 + src/apideck_unify/models/generalledgertransaction.py: + last_write_checksum: sha1:428165ff97ca64f06240e0b98e6f1934cf9abb3b + src/apideck_unify/models/generalledgertransactionlineitem.py: + last_write_checksum: sha1:bd6d37b0df38e879fb99c70e479e08d33b5283e9 + src/apideck_unify/models/generalledgertransactionsfilter.py: + last_write_checksum: sha1:2099d9ad1014319d31681a3d0bcafbf31aa94f30 + src/apideck_unify/models/generalledgertransactionssort.py: + last_write_checksum: sha1:e7f7ba0b44e1fa30bac2434bdca62ddb5f9fa11a src/apideck_unify/models/getaccountingdepartmentresponse.py: last_write_checksum: sha1:42ec5ecb751ba5ec4f11969e1af89caa3b842caa src/apideck_unify/models/getaccountingdepartmentsresponse.py: @@ -25275,6 +25439,10 @@ trackedFiles: last_write_checksum: sha1:a2cb75c3d4a06a6fe99536f0142efc9a6aadb464 src/apideck_unify/models/getfolderresponse.py: last_write_checksum: sha1:7b5340f5039ab8f7ccc849269f96e9ed3f733356 + src/apideck_unify/models/getgeneralledgertransactionresponse.py: + last_write_checksum: sha1:bcf3a1f5bf19b4cf49a44e2598a6af2162fb813a + src/apideck_unify/models/getgeneralledgertransactionsresponse.py: + last_write_checksum: sha1:5baf0fd7e19c9ab912d9d6063804d78033510699 src/apideck_unify/models/gethriscompaniesresponse.py: last_write_checksum: sha1:3f9cae45b34ecb40d3d5f1c63a51fb614fcf5348 src/apideck_unify/models/gethriscompanyresponse.py: @@ -25460,7 +25628,7 @@ trackedFiles: src/apideck_unify/models/invoiceitemfilter.py: last_write_checksum: sha1:bf9fe557898e15320cd93dcc5f64f9b5d1586fc7 src/apideck_unify/models/invoiceitemsfilter.py: - last_write_checksum: sha1:12dbbd45537a445ad1d71bb21f2a74fdd507e74f + last_write_checksum: sha1:48d3820a29954f23ee25aa56ab60f7a602256450 src/apideck_unify/models/invoiceitemssort.py: last_write_checksum: sha1:c82ca03f6566821fa66c901052a93654feb62da2 src/apideck_unify/models/invoicelineitem.py: @@ -25468,7 +25636,7 @@ trackedFiles: src/apideck_unify/models/invoiceresponse.py: last_write_checksum: sha1:f8f75f00763047726a6e2798859f10a9c8c29850 src/apideck_unify/models/invoicesfilter.py: - last_write_checksum: sha1:f999347f77ff69f63fdf1b997d3b25999d9676f0 + last_write_checksum: sha1:ecf047712bcd955d772e9528d6a1dd64cf304698 src/apideck_unify/models/invoicessort.py: last_write_checksum: sha1:36801ee2f678352f726e270ceb3465ef0fe5390c src/apideck_unify/models/issuesfilter.py: @@ -25508,7 +25676,7 @@ trackedFiles: src/apideck_unify/models/jobstatus.py: last_write_checksum: sha1:832a677ab0a2c3adee9378579d34429372aab42b src/apideck_unify/models/journalentriesfilter.py: - last_write_checksum: sha1:77d361a96dc80e34f24249d421a6e438031830de + last_write_checksum: sha1:bd6243c77626a5cf5c17bf3f275d200c59fe215f src/apideck_unify/models/journalentriessort.py: last_write_checksum: sha1:3c089f317739a631b48f3de2486e6b3275af38b9 src/apideck_unify/models/journalentry.py: @@ -25526,7 +25694,7 @@ trackedFiles: src/apideck_unify/models/ledgeraccount.py: last_write_checksum: sha1:955a153c9bc9bb0401d41ff11a7eef61981df5cf src/apideck_unify/models/ledgeraccountsfilter.py: - last_write_checksum: sha1:dd7c1cc04bc8ccfad7f2dd3be9d15515befa6854 + last_write_checksum: sha1:67fcff7c847c857ffb89f2a22ceff24c359742d1 src/apideck_unify/models/ledgeraccountssort.py: last_write_checksum: sha1:50e3c719cae78fd57ea86ef3ebe9be76c7a1e01d src/apideck_unify/models/lineitemtype.py: @@ -25642,7 +25810,7 @@ trackedFiles: src/apideck_unify/models/paymentrequiredresponse.py: last_write_checksum: sha1:e31a1e7837134fcdab40d81d32da12d59ab651ba src/apideck_unify/models/paymentsfilter.py: - last_write_checksum: sha1:dd2e5d3b8ec586b6d33a4152a2b83bd14ae460f4 + last_write_checksum: sha1:bcf0bfcb2a106f09f63e4dd9a5a75c75b1a90f45 src/apideck_unify/models/paymentssort.py: last_write_checksum: sha1:d58183eb6ba2aec67bb57c0705b425aef1e0b464 src/apideck_unify/models/paymentstatus.py: @@ -25678,7 +25846,7 @@ trackedFiles: src/apideck_unify/models/project.py: last_write_checksum: sha1:bad3ab7022a703730169e1487a79be62901249d9 src/apideck_unify/models/projectsfilter.py: - last_write_checksum: sha1:8e33e32a2075f20925c36b2dba3fb2042ec793f1 + last_write_checksum: sha1:abffbdec8c649196612556d48d00f5fbb44d32ab src/apideck_unify/models/projectssort.py: last_write_checksum: sha1:9d0d1dd7a8480ffe52d267112db83cb0423fc3aa src/apideck_unify/models/proxy_deleteproxyop.py: @@ -25696,13 +25864,15 @@ trackedFiles: src/apideck_unify/models/purchaseorder.py: last_write_checksum: sha1:9db492fdb96faee51447d63714d1181de9f95714 src/apideck_unify/models/purchaseordersfilter.py: - last_write_checksum: sha1:075c3fe499a97927d46a1016591d00a17857dafe + last_write_checksum: sha1:ba8c6e9b57ca3941e006d1f81e9efcfe55b53c72 src/apideck_unify/models/purchaseorderssort.py: last_write_checksum: sha1:461e0d319a88c4c278fcfa48dac5838d7d0a1ba2 src/apideck_unify/models/quote.py: last_write_checksum: sha1:baeb5f804ee69bd27ded573a06ec564b67d3a115 src/apideck_unify/models/quotelineitem.py: last_write_checksum: sha1:ec6e349592938366215654e8f7ac369ea28dfc73 + src/apideck_unify/models/quotesfilter.py: + last_write_checksum: sha1:a7479f988fdb9a996fe75f961339dcd9f27a078a src/apideck_unify/models/rebilling.py: last_write_checksum: sha1:335956b996339dc4b07c60468e34408b9f9fff3f src/apideck_unify/models/refund.py: @@ -25762,7 +25932,7 @@ trackedFiles: src/apideck_unify/models/supplier.py: last_write_checksum: sha1:b4a5f88a9dd5105aefaa41389dc186b0bcfac698 src/apideck_unify/models/suppliersfilter.py: - last_write_checksum: sha1:e185c33cb6d0e66b3a3590a7bf5120ed5f4f8487 + last_write_checksum: sha1:909637addff06d9667234206e718437db66fe1bb src/apideck_unify/models/supplierssort.py: last_write_checksum: sha1:92974810c0c84cabe73f959684ff059fc5a9c99d src/apideck_unify/models/supportedproperty.py: @@ -25998,7 +26168,7 @@ trackedFiles: src/apideck_unify/models/webhookeventlogsfilter.py: last_write_checksum: sha1:a570f7ec34d2196d91b32b1f9c59bca2099f39fa src/apideck_unify/models/webhookeventtype.py: - last_write_checksum: sha1:d308d4912da877a784b6ff1036d22c8e1975b354 + last_write_checksum: sha1:c29a962957b6ae6b3749d3eefa8d7d3c90d91c8d src/apideck_unify/models/webhooksubscription.py: last_write_checksum: sha1:12537b4b59e1cdb5798ddf08ad98dfb50f809a83 src/apideck_unify/models/webhooksupport.py: @@ -26006,33 +26176,33 @@ trackedFiles: src/apideck_unify/models/website.py: last_write_checksum: sha1:deb21698b9dec32eca6c3c22114c0c678a3c7ef8 src/apideck_unify/notes.py: - last_write_checksum: sha1:02868bd9687ec4dd8d3c79bce114209ecce31a61 + last_write_checksum: sha1:8e7957797ddd63c66c44f9880812b04a356cc82b src/apideck_unify/opportunities.py: - last_write_checksum: sha1:401b8873c3d3cd9477e16a02b73cf55a1f0709cb + last_write_checksum: sha1:85efd4998079dac40d230c703254183a31355c33 src/apideck_unify/orders.py: - last_write_checksum: sha1:1d32ce2f9e8935954d13725491f0f823fb14f7d2 + last_write_checksum: sha1:d0b4b62d63d1107b0fd79797d69b90915524eeb7 src/apideck_unify/payments.py: - last_write_checksum: sha1:5053b2474d641729ec53436784ff98a868eadcd8 + last_write_checksum: sha1:a84164e40d848378e10d6f80e30e7637c02cbbfc src/apideck_unify/payrolls.py: - last_write_checksum: sha1:af569d909269b22911b5f968b8c86cc171d93049 + last_write_checksum: sha1:d434883ca5a5b52e87227d116a9e2c450ee94271 src/apideck_unify/pipelines.py: - last_write_checksum: sha1:1079756f380c8b449f95df0dc5c786b8602d73a0 + last_write_checksum: sha1:e737f1fca6a99f5f29df2e234e1ab2e7c3315e46 src/apideck_unify/products.py: - last_write_checksum: sha1:49dad006c0798fd433add4b1d4a7d3c942bbc57d + last_write_checksum: sha1:ebbbc6980faf6d692345c446d0f7baaf30459699 src/apideck_unify/profitandloss_sdk.py: - last_write_checksum: sha1:8b10c69c4ca3fc9bf1a432e188474c54fc74662b + last_write_checksum: sha1:d41d8aaff95f1c70e42d2221d9cbba2729cc7ddd src/apideck_unify/projects.py: - last_write_checksum: sha1:ba4267f389491e385d6b81de386b6b7bbc16d299 + last_write_checksum: sha1:666c54981990c1cc26609f65993479dc7ff95343 src/apideck_unify/proxy.py: last_write_checksum: sha1:0ef5bf649fd851e02c97032dca3c140d976b9154 src/apideck_unify/purchaseorders.py: - last_write_checksum: sha1:96da6a54b51454dc3399e6dae5ddb7d41e9a1881 + last_write_checksum: sha1:df3664c0ab4c0a32d15cb4403b6baa2c866521dd src/apideck_unify/py.typed: last_write_checksum: sha1:8efc425ffe830805ffcc0f3055871bdcdc542c60 src/apideck_unify/quotes.py: - last_write_checksum: sha1:47a4e94da44b6606279c4479c84b08fceca538e6 + last_write_checksum: sha1:d9087d7686c0b4ca2f2675db0b7c44dba261e588 src/apideck_unify/refunds.py: - last_write_checksum: sha1:c51716769333075b09e46c1df729980b1dfa4552 + last_write_checksum: sha1:19b6b7d811f84057a72bfb10a6c5446485b502cf src/apideck_unify/sdk.py: last_write_checksum: sha1:c36fd87d8a9d1b51c46deeb198cc84a9761aedfb src/apideck_unify/sdkconfiguration.py: @@ -26040,21 +26210,21 @@ trackedFiles: src/apideck_unify/sessions.py: last_write_checksum: sha1:47a388be85e3a3623e11665b5e241fa6dbe32781 src/apideck_unify/sharedlinks.py: - last_write_checksum: sha1:32ebc5d9621a199fbd2f3a0e746b879dc187f235 + last_write_checksum: sha1:59e18a6f5fbe90d7bc3853e0e6f29595500876f1 src/apideck_unify/sms.py: last_write_checksum: sha1:444ede696d4742704204a55660fd82ef98a1820a src/apideck_unify/stores.py: last_write_checksum: sha1:a4fe27bd06c6bbf7fce0c039f46fda5beb008914 src/apideck_unify/subsidiaries.py: - last_write_checksum: sha1:4eb4a9fa47e41bc7bf36fceddca36e4097454faa + last_write_checksum: sha1:7d15f9488219c2151827cccb4b9ddfb5e90f6547 src/apideck_unify/suppliers.py: - last_write_checksum: sha1:9c89efe62f8bacdd3e8a099c80f2eae34ad21157 + last_write_checksum: sha1:be528a70ffa8a577b90d092966257465e47c0a2c src/apideck_unify/taxrates.py: - last_write_checksum: sha1:e1c91952994afe2d0184f946b609c765727a2864 + last_write_checksum: sha1:20b92ae0351644f3fa4ad7d236720672805be382 src/apideck_unify/timeoffrequests.py: - last_write_checksum: sha1:405fdadfca97b8371da3bc3808b51a3e2df5f05f + last_write_checksum: sha1:8d85b81625d57750129bff1bff84ad220d6dcb9b src/apideck_unify/trackingcategories.py: - last_write_checksum: sha1:ad072b9a593e640663693950e9a1e534c0b11165 + last_write_checksum: sha1:ea7dcc23cf797a8513b67f1fa913e9e86eb5d5af src/apideck_unify/types/__init__.py: last_write_checksum: sha1:f9ad14217f832e74f594285960125add50324be9 src/apideck_unify/types/base64fileinput.py: @@ -26062,9 +26232,9 @@ trackedFiles: src/apideck_unify/types/basemodel.py: last_write_checksum: sha1:10d84aedeb9d35edfdadf2c3020caa1d24d8b584 src/apideck_unify/uploadsessions.py: - last_write_checksum: sha1:da54654d7ec7decd3c74b6ecc5d1b301e9d95b0e + last_write_checksum: sha1:ef0548d96f42ed1ca1a4362d01d46375dd638f9d src/apideck_unify/users.py: - last_write_checksum: sha1:802803bee29fac0be6fcc2423d2a1d7d62aa54cd + last_write_checksum: sha1:7ce86a15a071bf18047d862af7425ae3a8b7b880 src/apideck_unify/utils/__init__.py: last_write_checksum: sha1:0f93d821f9cb3e061ea125d881bb6f61166738dd src/apideck_unify/utils/annotations.py: @@ -26076,7 +26246,7 @@ trackedFiles: src/apideck_unify/utils/enums.py: last_write_checksum: sha1:bc8c3c1285ae09ba8a094ee5c3d9c7f41fa1284d src/apideck_unify/utils/eventstreaming.py: - last_write_checksum: sha1:620d78a8b4e3b854e08d136e02e40a01a786bd70 + last_write_checksum: sha1:7d1dc68f8b48486ab646653aa05cc38752e1f912 src/apideck_unify/utils/forms.py: last_write_checksum: sha1:15fa7e9ab1611e062a9984cf06cb20969713d295 src/apideck_unify/utils/headers.py: @@ -26094,7 +26264,7 @@ trackedFiles: src/apideck_unify/utils/security.py: last_write_checksum: sha1:8fa29426fabb7f0a04e5adf11966681ab88900f8 src/apideck_unify/utils/serializers.py: - last_write_checksum: sha1:61009f2e4ef6613a1a5af813fe020373dae5a492 + last_write_checksum: sha1:7485f1425b0661fd84836186570df90207eec6af src/apideck_unify/utils/unmarshal_json_response.py: last_write_checksum: sha1:01ae4a19a6e7d0163c14944e54bc80096dbfe341 src/apideck_unify/utils/url.py: @@ -26108,4 +26278,4 @@ trackedFiles: src/apideck_unify/webhook_sdk.py: last_write_checksum: sha1:56997393a069250fc63b046ad043604263dca61c src/apideck_unify/webhooks.py: - last_write_checksum: sha1:35e4887bef54b78ddf81317075aed19988396794 + last_write_checksum: sha1:95994211c7fadc1ba4a395ccb0905a4164c87366 diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index 83b23895..28f4359b 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -32,7 +32,7 @@ generation: persistentEdits: {} versioningStrategy: automatic python: - version: 0.31.19 + version: 0.31.20 additionalDependencies: dev: {} main: {} @@ -51,6 +51,9 @@ python: enableCustomCodeRegions: false enumFormat: enum envVarPrefix: APIDECK + eventStreamClassNames: + async: EventStreamAsync + sync: EventStream fixFlags: responseRequiredSep2024: true flattenGlobalSecurity: true @@ -68,6 +71,7 @@ python: webhooks: "" inferUnionDiscriminators: true inputModelSuffix: input + inputTypedDictSuffix: TypedDict legacyPyright: true license: "" maxMethodParams: 999 diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 6b976403..55dc2bbd 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -2,20 +2,20 @@ speakeasyVersion: 1.656.1 sources: Apideck: sourceNamespace: apideck - sourceRevisionDigest: sha256:6dba88913734e0f668fc4a3f5d5e08056a1c2a262c63671cf33987880d732fc6 - sourceBlobDigest: sha256:20cec00e0883a655242b06dd7ae001907270ad4cfc5c2d4986a9256e99522206 + sourceRevisionDigest: sha256:e7c2c70ab45bb54d5ff0c59de327218abb76e4295cfbcf4b5650a7c2e4e86e84 + sourceBlobDigest: sha256:911ac830029b5ce8d00b601bf4e98144a8138cd5b8394a280ed5ccd9773a307b tags: - latest - - speakeasy-sdk-regen-1780664707 - - 10.24.40 + - speakeasy-sdk-regen-1780908444 + - 10.24.43 targets: apideck: source: Apideck sourceNamespace: apideck - sourceRevisionDigest: sha256:6dba88913734e0f668fc4a3f5d5e08056a1c2a262c63671cf33987880d732fc6 - sourceBlobDigest: sha256:20cec00e0883a655242b06dd7ae001907270ad4cfc5c2d4986a9256e99522206 + sourceRevisionDigest: sha256:e7c2c70ab45bb54d5ff0c59de327218abb76e4295cfbcf4b5650a7c2e4e86e84 + sourceBlobDigest: sha256:911ac830029b5ce8d00b601bf4e98144a8138cd5b8394a280ed5ccd9773a307b codeSamplesNamespace: apideck-python-code-samples - codeSamplesRevisionDigest: sha256:b4c5ae4325307a7a8c2133cf42481eaeff43d8100c1ed0deb49e0e052628cc55 + codeSamplesRevisionDigest: sha256:96bca3ed8134f7c314cfb11554d0520de981d3552251f114d279b9516890876e workflow: workflowVersion: 1.0.0 speakeasyVersion: latest diff --git a/README.md b/README.md index fafea398..9e57fd05 100644 --- a/README.md +++ b/README.md @@ -363,6 +363,11 @@ with Apideck( * [update](docs/sdks/expenses/README.md#update) - Update Expense * [delete](docs/sdks/expenses/README.md#delete) - Delete Expense +#### [accounting.general_ledger_transactions](docs/sdks/generalledgertransactions/README.md) + +* [list](docs/sdks/generalledgertransactions/README.md#list) - List General Ledger Transactions +* [get](docs/sdks/generalledgertransactions/README.md#get) - Get General Ledger Transaction + #### [accounting.invoice_items](docs/sdks/invoiceitems/README.md) * [list](docs/sdks/invoiceitems/README.md#list) - List Invoice Items @@ -1067,7 +1072,7 @@ with Apideck( **Inherit from [`ApideckError`](./src/apideck_unify/models/apideckerror.py)**: -* [`Unauthorized`](./src/apideck_unify/models/unauthorized.py): Unauthorized. Status code `401`. Applicable to 6 of 335 methods.* +* [`Unauthorized`](./src/apideck_unify/models/unauthorized.py): Unauthorized. Status code `401`. Applicable to 6 of 337 methods.* * [`ResponseValidationError`](./src/apideck_unify/models/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute. diff --git a/RELEASES.md b/RELEASES.md index 18757158..cc54f720 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1258,4 +1258,14 @@ Based on: ### Generated - [python v0.31.19] . ### Releases -- [PyPI v0.31.19] https://pypi.org/project/apideck-unify/0.31.19 - . \ No newline at end of file +- [PyPI v0.31.19] https://pypi.org/project/apideck-unify/0.31.19 - . + +## 2026-06-12 12:01:54 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.656.1 (2.753.1) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v0.31.20] . +### Releases +- [PyPI v0.31.20] https://pypi.org/project/apideck-unify/0.31.20 - . \ No newline at end of file diff --git a/docs/models/accountinggeneralledgertransactionsallglobals.md b/docs/models/accountinggeneralledgertransactionsallglobals.md new file mode 100644 index 00000000..750babd3 --- /dev/null +++ b/docs/models/accountinggeneralledgertransactionsallglobals.md @@ -0,0 +1,9 @@ +# AccountingGeneralLedgerTransactionsAllGlobals + + +## 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/accountinggeneralledgertransactionsallrequest.md b/docs/models/accountinggeneralledgertransactionsallrequest.md new file mode 100644 index 00000000..69ca9701 --- /dev/null +++ b/docs/models/accountinggeneralledgertransactionsallrequest.md @@ -0,0 +1,18 @@ +# AccountingGeneralLedgerTransactionsAllRequest + + +## 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 | +| `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | +| `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.GeneralLedgerTransactionsFilter]](../models/generalledgertransactionsfilter.md) | :heavy_minus_sign: | Apply filters | {
"source_type": "invoice",
"updated_since": "2024-09-30T07:43:32.000Z"
} | +| `sort` | [Optional[models.GeneralLedgerTransactionsSort]](../models/generalledgertransactionssort.md) | :heavy_minus_sign: | Apply sorting | {
"by": "posted_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/accountinggeneralledgertransactionsallresponse.md b/docs/models/accountinggeneralledgertransactionsallresponse.md new file mode 100644 index 00000000..7def17b7 --- /dev/null +++ b/docs/models/accountinggeneralledgertransactionsallresponse.md @@ -0,0 +1,10 @@ +# AccountingGeneralLedgerTransactionsAllResponse + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `get_general_ledger_transactions_response` | [Optional[models.GetGeneralLedgerTransactionsResponse]](../models/getgeneralledgertransactionsresponse.md) | :heavy_minus_sign: | GeneralLedgerTransactions | +| `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/accountinggeneralledgertransactionsoneglobals.md b/docs/models/accountinggeneralledgertransactionsoneglobals.md new file mode 100644 index 00000000..0d5b7760 --- /dev/null +++ b/docs/models/accountinggeneralledgertransactionsoneglobals.md @@ -0,0 +1,9 @@ +# AccountingGeneralLedgerTransactionsOneGlobals + + +## 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/accountinggeneralledgertransactionsonerequest.md b/docs/models/accountinggeneralledgertransactionsonerequest.md new file mode 100644 index 00000000..04f87dc4 --- /dev/null +++ b/docs/models/accountinggeneralledgertransactionsonerequest.md @@ -0,0 +1,14 @@ +# AccountingGeneralLedgerTransactionsOneRequest + + +## 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 | +| `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | +| `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 | \ No newline at end of file diff --git a/docs/models/accountinggeneralledgertransactionsoneresponse.md b/docs/models/accountinggeneralledgertransactionsoneresponse.md new file mode 100644 index 00000000..1087d889 --- /dev/null +++ b/docs/models/accountinggeneralledgertransactionsoneresponse.md @@ -0,0 +1,10 @@ +# AccountingGeneralLedgerTransactionsOneResponse + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- | +| `http_meta` | [models.HTTPMetadata](../models/httpmetadata.md) | :heavy_check_mark: | N/A | +| `get_general_ledger_transaction_response` | [Optional[models.GetGeneralLedgerTransactionResponse]](../models/getgeneralledgertransactionresponse.md) | :heavy_minus_sign: | GeneralLedgerTransaction | +| `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/accountingquotesallrequest.md b/docs/models/accountingquotesallrequest.md index 22f08b49..eef065b2 100644 --- a/docs/models/accountingquotesallrequest.md +++ b/docs/models/accountingquotesallrequest.md @@ -11,4 +11,5 @@ | `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 | | `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | | `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 | | \ No newline at end of file +| `limit` | *Optional[int]* | :heavy_minus_sign: | Number of results to return. Minimum 1, Maximum 200, Default 20 | | +| `filter_` | [Optional[models.QuotesFilter]](../models/quotesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546"
} | \ No newline at end of file diff --git a/docs/models/billsfilter.md b/docs/models/billsfilter.md index d57f2c51..9ca5a2cb 100644 --- a/docs/models/billsfilter.md +++ b/docs/models/billsfilter.md @@ -3,8 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `id_since` | *Optional[str]* | :heavy_minus_sign: | Return records with a row ID greater than or equal to the given value | 1 | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `status` | [Optional[models.BillsFilterStatus]](../models/billsfilterstatus.md) | :heavy_minus_sign: | Filter by bill status | paid | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id_since` | *Optional[str]* | :heavy_minus_sign: | Return records with a row ID greater than or equal to the given value | 1 | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `status` | [Optional[models.BillsFilterStatus]](../models/billsfilterstatus.md) | :heavy_minus_sign: | Filter by bill status | paid | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/connection.md b/docs/models/connection.md index ed74cb22..b295b483 100644 --- a/docs/models/connection.md +++ b/docs/models/connection.md @@ -41,5 +41,6 @@ | `health` | [Optional[models.Health]](../models/health.md) | :heavy_minus_sign: | Operational health status of the connection | ok | | `credentials_expire_at` | *Optional[float]* | :heavy_minus_sign: | Unix timestamp in milliseconds when credentials will be deleted if token refresh continues to fail. A value of 0 indicates no active retention window (connection is healthy or not using OAuth token refresh). | 1730172800000 | | `last_refresh_failed_at` | *Optional[float]* | :heavy_minus_sign: | Unix timestamp in milliseconds of the last failed token refresh attempt. A value of 0 indicates no recent failures. This field is used internally to enforce cooldown periods between retry attempts. | 1730000000000 | +| `last_downstream_error_at` | *Optional[float]* | :heavy_minus_sign: | Unix timestamp in milliseconds of the last downstream unreachable error (502/504 network class). A value of 0 indicates no active error. Connection remains callable while this is set; health surfaces as 'degraded'. | 1730000000000 | | `created_at` | *Optional[float]* | :heavy_minus_sign: | N/A | 1615563533390 | | `updated_at` | *OptionalNullable[float]* | :heavy_minus_sign: | N/A | 1616662325753 | \ No newline at end of file diff --git a/docs/models/connectionhealth.md b/docs/models/connectionhealth.md index 9337448a..143befa2 100644 --- a/docs/models/connectionhealth.md +++ b/docs/models/connectionhealth.md @@ -13,4 +13,5 @@ The operational health status of the connection | `PENDING_CONFIRMATION` | pending_confirmation | | `NEEDS_CONSENT` | needs_consent | | `REVOKED` | revoked | -| `MISSING_SETTINGS` | missing_settings | \ No newline at end of file +| `MISSING_SETTINGS` | missing_settings | +| `DEGRADED` | degraded | \ No newline at end of file diff --git a/docs/models/creditnotesfilter.md b/docs/models/creditnotesfilter.md index d5eda4a9..e6bd381e 100644 --- a/docs/models/creditnotesfilter.md +++ b/docs/models/creditnotesfilter.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `id_since` | *Optional[str]* | :heavy_minus_sign: | Return records with a row ID greater than or equal to the given value | 1 | -| `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: | Credit note number to search for | OIT00546 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id_since` | *Optional[str]* | :heavy_minus_sign: | Return records with a row ID greater than or equal to the given value | 1 | +| `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: | Credit note number to search for | OIT00546 | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/customersfilter.md b/docs/models/customersfilter.md index 7e6010c9..aa814164 100644 --- a/docs/models/customersfilter.md +++ b/docs/models/customersfilter.md @@ -3,13 +3,14 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | -| `company_name` | *Optional[str]* | :heavy_minus_sign: | Company Name of customer to search for | SpaceX | -| `display_name` | *Optional[str]* | :heavy_minus_sign: | Display Name of customer to search for | Techno King | -| `first_name` | *Optional[str]* | :heavy_minus_sign: | First name of customer to search for | Elon | -| `last_name` | *Optional[str]* | :heavy_minus_sign: | Last name of customer to search for | Musk | -| `email` | *Optional[str]* | :heavy_minus_sign: | Email of customer to search for | elon@spacex.com | -| `status` | [OptionalNullable[models.CustomersFilterStatus]](../models/customersfilterstatus.md) | :heavy_minus_sign: | Status of customer to filter on | active | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | Supplier ID of customer to search for | 123 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `company_name` | *Optional[str]* | :heavy_minus_sign: | Company Name of customer to search for | SpaceX | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | Display Name of customer to search for | Techno King | +| `first_name` | *Optional[str]* | :heavy_minus_sign: | First name of customer to search for | Elon | +| `last_name` | *Optional[str]* | :heavy_minus_sign: | Last name of customer to search for | Musk | +| `email` | *Optional[str]* | :heavy_minus_sign: | Email of customer to search for | elon@spacex.com | +| `status` | [OptionalNullable[models.CustomersFilterStatus]](../models/customersfilterstatus.md) | :heavy_minus_sign: | Status of customer to filter on | active | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | Supplier ID of customer to search for | 123 | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the customer's primary subsidiary belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/expensereportsfilter.md b/docs/models/expensereportsfilter.md index 2ff446c0..774912cb 100644 --- a/docs/models/expensereportsfilter.md +++ b/docs/models/expensereportsfilter.md @@ -3,8 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `status` | [Optional[models.ExpenseReportsFilterStatus]](../models/expensereportsfilterstatus.md) | :heavy_minus_sign: | N/A | | -| `employee_id` | *Optional[str]* | :heavy_minus_sign: | Filter by employee ID | 12345 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `status` | [Optional[models.ExpenseReportsFilterStatus]](../models/expensereportsfilterstatus.md) | :heavy_minus_sign: | N/A | | +| `employee_id` | *Optional[str]* | :heavy_minus_sign: | Filter by employee ID | 12345 | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/generalledgertransaction.md b/docs/models/generalledgertransaction.md new file mode 100644 index 00000000..70d9d3fd --- /dev/null +++ b/docs/models/generalledgertransaction.md @@ -0,0 +1,24 @@ +# GeneralLedgerTransaction + + +## Fields + +| Field | Type | Required | Description | Example | +| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for an object. | 12345 | +| `source_type` | [Nullable[models.GeneralLedgerTransactionSourceType]](../models/generalledgertransactionsourcetype.md) | :heavy_check_mark: | The originating transaction type that produced this posting in the general ledger. Discriminates whether the entry came from an invoice, a bill, a payment, a manual journal, etc. This is the key field that distinguishes general-ledger-transactions from journal-entries (which only covers manually-captured entries). May be `null` when the upstream connector did not return an origin discriminator (e.g. Xero's single-record endpoint strips `SourceType` for every record; certain historical records also omit it). To recover a populated value, query the list endpoint. | invoice | +| `source_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Identifier of the originating document in the vendor system. For example, when source_type is 'invoice', this is the id of the invoice that produced this posting. Use this id together with source_type to fetch the source document via its dedicated unified resource. | 12345 | +| `posted_at` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | The date on which the transaction was posted to the general ledger. This is the accounting date — it is what determines the period the transaction belongs to and can be earlier than the creation date for backdated postings. | 2020-09-30T07:43:32.000Z | +| `reference` | *OptionalNullable[str]* | :heavy_minus_sign: | Optional reference identifier for the transaction. | INV-2024-001 | +| `number` | *OptionalNullable[str]* | :heavy_minus_sign: | Sequential number auto-assigned by the vendor system to the transaction (e.g. Xero JournalNumber). Unique per company. | JNL-001 | +| `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 | +| `currency_rate` | *OptionalNullable[float]* | :heavy_minus_sign: | Currency Exchange Rate at the time entity was recorded/generated. | 0.69 | +| `memo` | *OptionalNullable[str]* | :heavy_minus_sign: | Free-text description at the header level. Typically populated when the transaction originates from a manual journal — for system-generated postings (invoice, payment, etc.) the source document carries the descriptive text. | Year-end adjustment for inventory revaluation | +| `line_items` | List[[models.GeneralLedgerTransactionLineItem](../models/generalledgertransactionlineitem.md)] | :heavy_check_mark: | Lines of the transaction. Each line affects one ledger account with either a debit or a credit. The signed sum of net_amount across all lines must equal zero (double-entry invariant). | | +| `custom_fields` | List[[models.CustomField](../models/customfield.md)] | :heavy_minus_sign: | N/A | | +| `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 | +| `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 | +| `custom_mappings` | Dict[str, *Any*] | :heavy_minus_sign: | When custom mappings are configured on the resource, the result is included here. | | +| `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/generalledgertransactionlineitem.md b/docs/models/generalledgertransactionlineitem.md new file mode 100644 index 00000000..a3137056 --- /dev/null +++ b/docs/models/generalledgertransactionlineitem.md @@ -0,0 +1,16 @@ +# GeneralLedgerTransactionLineItem + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | A unique identifier for an object. | 12345 | +| `description` | *OptionalNullable[str]* | :heavy_minus_sign: | Free-text description of the line. | Sales revenue from Q3 batch | +| `net_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | The amount posted to the ledger account, tax-exclusive. Debit entries are positive, credit entries are negative. In general-ledger views the tax component lives in its own dedicated line against a tax payable/receivable account, so net_amount is the canonical figure for reporting. | 27500 | +| `type` | [Nullable[models.GeneralLedgerTransactionLineItemType]](../models/generalledgertransactionlineitemtype.md) | :heavy_check_mark: | Side of the entry. Redundant with the sign of net_amount but exposed as an explicit flag for filtering convenience. | debit | +| `tax_amount` | *OptionalNullable[float]* | :heavy_minus_sign: | Tax embedded in the line. In GL views this is typically 0 or null because tax has its own dedicated line against a tax payable/receivable account. Exposed for completeness and for tax-inclusive setups. | 0 | +| `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. | | +| `ledger_account` | [Nullable[models.LinkedLedgerAccount]](../models/linkedledgeraccount.md) | :heavy_check_mark: | N/A | | +| `line_number` | *OptionalNullable[int]* | :heavy_minus_sign: | Line number of the resource | 1 | \ No newline at end of file diff --git a/docs/models/generalledgertransactionlineitemtype.md b/docs/models/generalledgertransactionlineitemtype.md new file mode 100644 index 00000000..c48ad061 --- /dev/null +++ b/docs/models/generalledgertransactionlineitemtype.md @@ -0,0 +1,11 @@ +# GeneralLedgerTransactionLineItemType + +Side of the entry. Redundant with the sign of net_amount but exposed as an explicit flag for filtering convenience. + + +## Values + +| Name | Value | +| -------- | -------- | +| `DEBIT` | debit | +| `CREDIT` | credit | \ No newline at end of file diff --git a/docs/models/generalledgertransactionsfilter.md b/docs/models/generalledgertransactionsfilter.md new file mode 100644 index 00000000..eed4fa52 --- /dev/null +++ b/docs/models/generalledgertransactionsfilter.md @@ -0,0 +1,10 @@ +# GeneralLedgerTransactionsFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `source_type` | [Optional[models.SourceType]](../models/sourcetype.md) | :heavy_minus_sign: | Filter by the originating transaction type. | | +| `source_id` | *Optional[str]* | :heavy_minus_sign: | Return only transactions originated from the given source document id. | 12345 | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | Return transactions updated on or after this timestamp. | 2024-09-30T07:43:32.000Z | \ No newline at end of file diff --git a/docs/models/generalledgertransactionsourcetype.md b/docs/models/generalledgertransactionsourcetype.md new file mode 100644 index 00000000..1c6c315c --- /dev/null +++ b/docs/models/generalledgertransactionsourcetype.md @@ -0,0 +1,18 @@ +# GeneralLedgerTransactionSourceType + +The originating transaction type that produced this posting in the general ledger. Discriminates whether the entry came from an invoice, a bill, a payment, a manual journal, etc. This is the key field that distinguishes general-ledger-transactions from journal-entries (which only covers manually-captured entries). May be `null` when the upstream connector did not return an origin discriminator (e.g. Xero's single-record endpoint strips `SourceType` for every record; certain historical records also omit it). To recover a populated value, query the list endpoint. + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `OTHER` | other | +| `INVOICE` | invoice | +| `BILL` | bill | +| `CREDIT_NOTE` | credit_note | +| `PAYMENT` | payment | +| `REFUND` | refund | +| `EXPENSE` | expense | +| `JOURNAL_ENTRY` | journal_entry | +| `PAYROLL` | payroll | \ No newline at end of file diff --git a/docs/models/generalledgertransactionssort.md b/docs/models/generalledgertransactionssort.md new file mode 100644 index 00000000..2a7afbdf --- /dev/null +++ b/docs/models/generalledgertransactionssort.md @@ -0,0 +1,9 @@ +# GeneralLedgerTransactionsSort + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | +| `by` | [Optional[models.GeneralLedgerTransactionsSortBy]](../models/generalledgertransactionssortby.md) | :heavy_minus_sign: | The field on which to sort the General Ledger Transactions. | posted_at | +| `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/generalledgertransactionssortby.md b/docs/models/generalledgertransactionssortby.md new file mode 100644 index 00000000..35c3e2d6 --- /dev/null +++ b/docs/models/generalledgertransactionssortby.md @@ -0,0 +1,12 @@ +# GeneralLedgerTransactionsSortBy + +The field on which to sort the General Ledger Transactions. + + +## Values + +| Name | Value | +| ------------ | ------------ | +| `POSTED_AT` | posted_at | +| `UPDATED_AT` | updated_at | +| `CREATED_AT` | created_at | \ No newline at end of file diff --git a/docs/models/getgeneralledgertransactionresponse.md b/docs/models/getgeneralledgertransactionresponse.md new file mode 100644 index 00000000..40124157 --- /dev/null +++ b/docs/models/getgeneralledgertransactionresponse.md @@ -0,0 +1,16 @@ +# GetGeneralLedgerTransactionResponse + +GeneralLedgerTransaction + + +## 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 | xero | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | general-ledger-transactions | +| `operation` | *str* | :heavy_check_mark: | Operation performed | one | +| `data` | [models.GeneralLedgerTransaction](../models/generalledgertransaction.md) | :heavy_check_mark: | N/A | | +| `raw` | Dict[str, *Any*] | :heavy_minus_sign: | Raw response from the integration when raw=true query param is provided | | \ No newline at end of file diff --git a/docs/models/getgeneralledgertransactionsresponse.md b/docs/models/getgeneralledgertransactionsresponse.md new file mode 100644 index 00000000..05e8852a --- /dev/null +++ b/docs/models/getgeneralledgertransactionsresponse.md @@ -0,0 +1,18 @@ +# GetGeneralLedgerTransactionsResponse + +GeneralLedgerTransactions + + +## 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 | xero | +| `resource` | *str* | :heavy_check_mark: | Unified API resource name | general-ledger-transactions | +| `operation` | *str* | :heavy_check_mark: | Operation performed | all | +| `data` | List[[models.GeneralLedgerTransaction](../models/generalledgertransaction.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 | | +| `raw` | Dict[str, *Any*] | :heavy_minus_sign: | Raw response from the integration when raw=true query param is provided | | \ No newline at end of file diff --git a/docs/models/health.md b/docs/models/health.md index 10155bd6..7f3fd081 100644 --- a/docs/models/health.md +++ b/docs/models/health.md @@ -13,4 +13,5 @@ Operational health status of the connection | `PENDING_CONFIRMATION` | pending_confirmation | | `NEEDS_AUTH` | needs_auth | | `PENDING_REFRESH` | pending_refresh | -| `OK` | ok | \ No newline at end of file +| `OK` | ok | +| `DEGRADED` | degraded | \ No newline at end of file diff --git a/docs/models/invoiceitemsfilter.md b/docs/models/invoiceitemsfilter.md index 95d066c5..c887ec0c 100644 --- a/docs/models/invoiceitemsfilter.md +++ b/docs/models/invoiceitemsfilter.md @@ -3,10 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `ids` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of invoice item IDs to filter by (e.g. `12345,67890`). | 12345,67890 | -| `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 | -| `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 +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `ids` | *Optional[str]* | :heavy_minus_sign: | Comma-separated list of invoice item IDs to filter by (e.g. `12345,67890`). | 12345,67890 | +| `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 | +| `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 | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/invoicesfilter.md b/docs/models/invoicesfilter.md index 6ff66ac9..85e6af69 100644 --- a/docs/models/invoicesfilter.md +++ b/docs/models/invoicesfilter.md @@ -3,10 +3,11 @@ ## Fields -| Field | Type | Required | Description | Example | -| --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | --------------------------------------------------------------------- | -| `id_since` | *Optional[str]* | :heavy_minus_sign: | Return records with a row ID greater than or equal to the given value | 1 | -| `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 | -| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | Supplier ID to filter invoices by | 123 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `id_since` | *Optional[str]* | :heavy_minus_sign: | Return records with a row ID greater than or equal to the given value | 1 | +| `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 | +| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | Supplier ID to filter invoices by | 123 | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/journalentriesfilter.md b/docs/models/journalentriesfilter.md index 347278ac..a60c447f 100644 --- a/docs/models/journalentriesfilter.md +++ b/docs/models/journalentriesfilter.md @@ -3,7 +3,9 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `status` | [Optional[models.JournalEntriesFilterStatus]](../models/journalentriesfilterstatus.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `status` | [Optional[models.JournalEntriesFilterStatus]](../models/journalentriesfilterstatus.md) | :heavy_minus_sign: | N/A | | +| `scope` | [Optional[models.JournalEntriesFilterScope]](../models/journalentriesfilterscope.md) | :heavy_minus_sign: | Connector-specific scope hint that controls which downstream source backs the read. On Xero, `manual` reads from `ManualJournals` (free in every tier), while `system` reads from `Journals` (the full general ledger view including manual journal postings, paid post 2026-03-02). Omitting the filter is equivalent to `system` and preserves the legacy default. Only honored on connectors where the distinction is exposed; ignored elsewhere. | | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/journalentriesfilterscope.md b/docs/models/journalentriesfilterscope.md new file mode 100644 index 00000000..ca6369db --- /dev/null +++ b/docs/models/journalentriesfilterscope.md @@ -0,0 +1,11 @@ +# JournalEntriesFilterScope + +Connector-specific scope hint that controls which downstream source backs the read. On Xero, `manual` reads from `ManualJournals` (free in every tier), while `system` reads from `Journals` (the full general ledger view including manual journal postings, paid post 2026-03-02). Omitting the filter is equivalent to `system` and preserves the legacy default. Only honored on connectors where the distinction is exposed; ignored elsewhere. + + +## Values + +| Name | Value | +| -------- | -------- | +| `MANUAL` | manual | +| `SYSTEM` | system | \ No newline at end of file diff --git a/docs/models/ledgeraccountsfilter.md b/docs/models/ledgeraccountsfilter.md index 6e843825..5933915e 100644 --- a/docs/models/ledgeraccountsfilter.md +++ b/docs/models/ledgeraccountsfilter.md @@ -3,9 +3,10 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -| `name` | *Optional[str]* | :heavy_minus_sign: | Filter by ledger account name | Sales | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `classification` | [Optional[models.Classification]](../models/classification.md) | :heavy_minus_sign: | Filter by account classification. | asset | -| `status` | [Optional[models.LedgerAccountsFilterStatus]](../models/ledgeraccountsfilterstatus.md) | :heavy_minus_sign: | Filter by account status. | active | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `name` | *Optional[str]* | :heavy_minus_sign: | Filter by ledger account name | Sales | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `classification` | [Optional[models.Classification]](../models/classification.md) | :heavy_minus_sign: | Filter by account classification. | asset | +| `status` | [Optional[models.LedgerAccountsFilterStatus]](../models/ledgeraccountsfilterstatus.md) | :heavy_minus_sign: | Filter by account status. | active | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/paymentsfilter.md b/docs/models/paymentsfilter.md index 196e7c98..302dbd70 100644 --- a/docs/models/paymentsfilter.md +++ b/docs/models/paymentsfilter.md @@ -3,12 +3,13 @@ ## Fields -| Field | Type | Required | Description | Example | -| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `invoice_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 123 | -| `bill_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 123 | -| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 123 | -| `customer_id` | *Optional[str]* | :heavy_minus_sign: | Filter by customer id | 123abc | -| `type` | [Optional[models.PaymentsFilterType]](../models/paymentsfiltertype.md) | :heavy_minus_sign: | N/A | accounts_receivable | -| `status` | [Optional[models.PaymentsFilterPaymentStatus]](../models/paymentsfilterpaymentstatus.md) | :heavy_minus_sign: | Filter by payment status | authorised | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `invoice_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 123 | +| `bill_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 123 | +| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 123 | +| `customer_id` | *Optional[str]* | :heavy_minus_sign: | Filter by customer id | 123abc | +| `type` | [Optional[models.PaymentsFilterType]](../models/paymentsfiltertype.md) | :heavy_minus_sign: | N/A | accounts_receivable | +| `status` | [Optional[models.PaymentsFilterPaymentStatus]](../models/paymentsfilterpaymentstatus.md) | :heavy_minus_sign: | Filter by payment status | authorised | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/projectsfilter.md b/docs/models/projectsfilter.md index 8f45ab5e..aa340b74 100644 --- a/docs/models/projectsfilter.md +++ b/docs/models/projectsfilter.md @@ -3,9 +3,10 @@ ## 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 +| 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 | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/purchaseordersfilter.md b/docs/models/purchaseordersfilter.md index 96087df3..4ef55c07 100644 --- a/docs/models/purchaseordersfilter.md +++ b/docs/models/purchaseordersfilter.md @@ -3,7 +3,8 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | -| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 1234 | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `supplier_id` | *Optional[str]* | :heavy_minus_sign: | N/A | 1234 | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/quotesfilter.md b/docs/models/quotesfilter.md new file mode 100644 index 00000000..c71fe89b --- /dev/null +++ b/docs/models/quotesfilter.md @@ -0,0 +1,10 @@ +# QuotesFilter + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `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: | Quote number to search for | OIT00546 | \ No newline at end of file diff --git a/docs/models/sourcetype.md b/docs/models/sourcetype.md new file mode 100644 index 00000000..9d2c3d65 --- /dev/null +++ b/docs/models/sourcetype.md @@ -0,0 +1,18 @@ +# SourceType + +Filter by the originating transaction type. + + +## Values + +| Name | Value | +| --------------- | --------------- | +| `OTHER` | other | +| `INVOICE` | invoice | +| `BILL` | bill | +| `CREDIT_NOTE` | credit_note | +| `PAYMENT` | payment | +| `REFUND` | refund | +| `EXPENSE` | expense | +| `JOURNAL_ENTRY` | journal_entry | +| `PAYROLL` | payroll | \ No newline at end of file diff --git a/docs/models/suppliersfilter.md b/docs/models/suppliersfilter.md index 8bd58929..b6c1d437 100644 --- a/docs/models/suppliersfilter.md +++ b/docs/models/suppliersfilter.md @@ -3,11 +3,12 @@ ## Fields -| Field | Type | Required | Description | Example | -| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `company_name` | *Optional[str]* | :heavy_minus_sign: | Company Name of supplier to search for | SpaceX | -| `display_name` | *Optional[str]* | :heavy_minus_sign: | Display Name of supplier to search for | Techno King | -| `first_name` | *Optional[str]* | :heavy_minus_sign: | First name of supplier to search for | Elon | -| `last_name` | *Optional[str]* | :heavy_minus_sign: | Last name of supplier to search for | Musk | -| `email` | *Optional[str]* | :heavy_minus_sign: | Email of supplier to search for | elon@spacex.com | -| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | \ No newline at end of file +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `company_name` | *Optional[str]* | :heavy_minus_sign: | Company Name of supplier to search for | SpaceX | +| `display_name` | *Optional[str]* | :heavy_minus_sign: | Display Name of supplier to search for | Techno King | +| `first_name` | *Optional[str]* | :heavy_minus_sign: | First name of supplier to search for | Elon | +| `last_name` | *Optional[str]* | :heavy_minus_sign: | Last name of supplier to search for | Musk | +| `email` | *Optional[str]* | :heavy_minus_sign: | Email of supplier to search for | elon@spacex.com | +| `updated_since` | [date](https://docs.python.org/3/library/datetime.html#date-objects) | :heavy_minus_sign: | N/A | 2020-09-30T07:43:32.000Z | +| `subsidiary_id` | *Optional[str]* | :heavy_minus_sign: | Filter by the subsidiary (legal entity) the supplier's primary subsidiary belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere. | 12345 | \ No newline at end of file diff --git a/docs/models/webhookeventtype.md b/docs/models/webhookeventtype.md index dde79328..03f2fda6 100644 --- a/docs/models/webhookeventtype.md +++ b/docs/models/webhookeventtype.md @@ -36,6 +36,8 @@ | `VAULT_CONNECTION_TOKEN_REFRESH_FAILED` | vault.connection.token_refresh.failed | | `VAULT_CONNECTION_TOKEN_REFRESH_PENDING` | vault.connection.token_refresh.pending | | `VAULT_CONNECTION_TOKEN_REFRESH_RECOVERED` | vault.connection.token_refresh.recovered | +| `VAULT_CONNECTION_DOWNSTREAM_DEGRADED` | vault.connection.downstream.degraded | +| `VAULT_CONNECTION_DOWNSTREAM_RECOVERED` | vault.connection.downstream.recovered | | `ATS_JOB_CREATED` | ats.job.created | | `ATS_JOB_UPDATED` | ats.job.updated | | `ATS_JOB_DELETED` | ats.job.deleted | diff --git a/docs/sdks/generalledgertransactions/README.md b/docs/sdks/generalledgertransactions/README.md new file mode 100644 index 00000000..f4a0ed72 --- /dev/null +++ b/docs/sdks/generalledgertransactions/README.md @@ -0,0 +1,133 @@ +# GeneralLedgerTransactions +(*accounting.general_ledger_transactions*) + +## Overview + +### Available Operations + +* [list](#list) - List General Ledger Transactions +* [get](#get) - Get General Ledger Transaction + +## list + +List General Ledger Transactions + +### 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.general_ledger_transactions.list(raw=False, service_id="salesforce", company_id="12345", limit=20, filter_={ + "source_type": apideck_unify.SourceType.INVOICE, + "updated_since": parse_datetime("2024-09-30T07:43:32.000Z"), + }, sort={ + "by": apideck_unify.GeneralLedgerTransactionsSortBy.POSTED_AT, + "direction": apideck_unify.SortDirection.DESC, + }, 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 | +| `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | +| `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.GeneralLedgerTransactionsFilter]](../../models/generalledgertransactionsfilter.md) | :heavy_minus_sign: | Apply filters | {
"source_type": "invoice",
"updated_since": "2024-09-30T07:43:32.000Z"
} | +| `sort` | [Optional[models.GeneralLedgerTransactionsSort]](../../models/generalledgertransactionssort.md) | :heavy_minus_sign: | Apply sorting | {
"by": "posted_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 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AccountingGeneralLedgerTransactionsAllResponse](../../models/accountinggeneralledgertransactionsallresponse.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 General Ledger Transaction + +### 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.general_ledger_transactions.get(id="", service_id="salesforce", company_id="12345", raw=False, fields="id,updated_at") + + assert res.get_general_ledger_transaction_response is not None + + # Handle response + print(res.get_general_ledger_transaction_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 | +| `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | +| `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 | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | | + +### Response + +**[models.AccountingGeneralLedgerTransactionsOneResponse](../../models/accountinggeneralledgertransactionsoneresponse.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/quotes/README.md b/docs/sdks/quotes/README.md index 727ab7bd..5d5538f4 100644 --- a/docs/sdks/quotes/README.md +++ b/docs/sdks/quotes/README.md @@ -20,6 +20,7 @@ List Quotes ```python from apideck_unify import Apideck +from apideck_unify.utils import parse_datetime import os @@ -29,7 +30,11 @@ with Apideck( api_key=os.getenv("APIDECK_API_KEY", ""), ) as apideck: - res = apideck.accounting.quotes.list(raw=False, service_id="salesforce", company_id="12345", limit=20) + res = apideck.accounting.quotes.list(raw=False, service_id="salesforce", company_id="12345", limit=20, filter_={ + "updated_since": parse_datetime("2020-09-30T07:43:32.000Z"), + "created_since": parse_datetime("2020-09-30T07:43:32.000Z"), + "number": "OIT00546", + }) while res is not None: # Handle items @@ -49,6 +54,7 @@ with Apideck( | `company_id` | *Optional[str]* | :heavy_minus_sign: | The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. | 12345 | | `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.QuotesFilter]](../../models/quotesfilter.md) | :heavy_minus_sign: | Apply filters | {
"updated_since": "2020-09-30T07:43:32.000Z",
"created_since": "2020-09-30T07:43:32.000Z",
"number": "OIT00546"
} | | `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/pyproject.toml b/pyproject.toml index 5f08d696..869bc6d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "apideck-unify" -version = "0.31.19" +version = "0.31.20" 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 86304418..ca639ec1 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.31.19" -__openapi_doc_version__: str = "10.24.40" +__version__: str = "0.31.20" +__openapi_doc_version__: str = "10.24.43" __gen_version__: str = "2.753.1" -__user_agent__: str = "speakeasy-sdk/python 0.31.19 2.753.1 10.24.40 apideck-unify" +__user_agent__: str = "speakeasy-sdk/python 0.31.20 2.753.1 10.24.43 apideck-unify" try: if __package__ is not None: diff --git a/src/apideck_unify/accounting.py b/src/apideck_unify/accounting.py index 7664966e..985058f8 100644 --- a/src/apideck_unify/accounting.py +++ b/src/apideck_unify/accounting.py @@ -21,6 +21,7 @@ from apideck_unify.expensecategories import ExpenseCategories from apideck_unify.expensereports import ExpenseReports from apideck_unify.expenses import Expenses +from apideck_unify.generalledgertransactions import GeneralLedgerTransactions from apideck_unify.invoiceitems import InvoiceItems from apideck_unify.invoices import Invoices from apideck_unify.journalentries import JournalEntries @@ -55,6 +56,7 @@ class Accounting(BaseSDK): balance_sheet: BalanceSheetSDK profit_and_loss: ProfitAndLossSDK journal_entries: JournalEntries + general_ledger_transactions: GeneralLedgerTransactions purchase_orders: PurchaseOrders subsidiaries: Subsidiaries locations: Locations @@ -112,6 +114,9 @@ def _init_sdks(self): self.journal_entries = JournalEntries( self.sdk_configuration, parent_ref=self.parent_ref ) + self.general_ledger_transactions = GeneralLedgerTransactions( + self.sdk_configuration, parent_ref=self.parent_ref + ) self.purchase_orders = PurchaseOrders( self.sdk_configuration, parent_ref=self.parent_ref ) diff --git a/src/apideck_unify/generalledgertransactions.py b/src/apideck_unify/generalledgertransactions.py new file mode 100644 index 00000000..b723d90b --- /dev/null +++ b/src/apideck_unify/generalledgertransactions.py @@ -0,0 +1,712 @@ +"""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 OptionalNullable, UNSET +from apideck_unify.utils import get_security_from_env +from apideck_unify.utils.unmarshal_json_response import unmarshal_json_response +from jsonpath import JSONPath +from typing import Any, Dict, List, Mapping, Optional, Union + + +class GeneralLedgerTransactions(BaseSDK): + def list( + self, + *, + raw: Optional[bool] = False, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + company_id: Optional[str] = None, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + filter_: Optional[ + Union[ + models.GeneralLedgerTransactionsFilter, + models.GeneralLedgerTransactionsFilterTypedDict, + ] + ] = None, + sort: Optional[ + Union[ + models.GeneralLedgerTransactionsSort, + models.GeneralLedgerTransactionsSortTypedDict, + ] + ] = 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.AccountingGeneralLedgerTransactionsAllResponse]: + r"""List General Ledger Transactions + + List General Ledger Transactions + + :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 company_id: The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. + :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.AccountingGeneralLedgerTransactionsAllRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + company_id=company_id, + cursor=cursor, + limit=limit, + filter_=utils.get_pydantic_model( + filter_, Optional[models.GeneralLedgerTransactionsFilter] + ), + sort=utils.get_pydantic_model( + sort, Optional[models.GeneralLedgerTransactionsSort] + ), + pass_through=pass_through, + fields=fields, + ) + + req = self._build_request( + method="GET", + path="/accounting/general-ledger-transactions", + 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.AccountingGeneralLedgerTransactionsAllGlobals( + 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, 900000), 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.generalLedgerTransactionsAll", + oauth2_scopes=None, + 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.AccountingGeneralLedgerTransactionsAllResponse] + ): + 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, + company_id=company_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.AccountingGeneralLedgerTransactionsAllResponse( + get_general_ledger_transactions_response=unmarshal_json_response( + Optional[models.GetGeneralLedgerTransactionsResponse], 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.AccountingGeneralLedgerTransactionsAllResponse( + 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, + company_id: Optional[str] = None, + cursor: OptionalNullable[str] = UNSET, + limit: Optional[int] = 20, + filter_: Optional[ + Union[ + models.GeneralLedgerTransactionsFilter, + models.GeneralLedgerTransactionsFilterTypedDict, + ] + ] = None, + sort: Optional[ + Union[ + models.GeneralLedgerTransactionsSort, + models.GeneralLedgerTransactionsSortTypedDict, + ] + ] = 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.AccountingGeneralLedgerTransactionsAllResponse]: + r"""List General Ledger Transactions + + List General Ledger Transactions + + :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 company_id: The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. + :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.AccountingGeneralLedgerTransactionsAllRequest( + raw=raw, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + company_id=company_id, + cursor=cursor, + limit=limit, + filter_=utils.get_pydantic_model( + filter_, Optional[models.GeneralLedgerTransactionsFilter] + ), + sort=utils.get_pydantic_model( + sort, Optional[models.GeneralLedgerTransactionsSort] + ), + pass_through=pass_through, + fields=fields, + ) + + req = self._build_request_async( + method="GET", + path="/accounting/general-ledger-transactions", + 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.AccountingGeneralLedgerTransactionsAllGlobals( + 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, 900000), 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.generalLedgerTransactionsAll", + oauth2_scopes=None, + 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.AccountingGeneralLedgerTransactionsAllResponse] + ): + 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, + company_id=company_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.AccountingGeneralLedgerTransactionsAllResponse( + get_general_ledger_transactions_response=unmarshal_json_response( + Optional[models.GetGeneralLedgerTransactionsResponse], 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.AccountingGeneralLedgerTransactionsAllResponse( + 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 get( + self, + *, + id: str, + consumer_id: Optional[str] = None, + app_id: Optional[str] = None, + service_id: Optional[str] = None, + company_id: Optional[str] = None, + raw: Optional[bool] = False, + 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, + ) -> models.AccountingGeneralLedgerTransactionsOneResponse: + r"""Get General Ledger Transaction + + Get General Ledger Transaction + + :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 company_id: The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. + :param raw: Include raw response. Mostly used for debugging purposes + :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.AccountingGeneralLedgerTransactionsOneRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + company_id=company_id, + raw=raw, + fields=fields, + ) + + req = self._build_request( + method="GET", + path="/accounting/general-ledger-transactions/{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.AccountingGeneralLedgerTransactionsOneGlobals( + 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, 900000), 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.generalLedgerTransactionsOne", + oauth2_scopes=None, + 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.AccountingGeneralLedgerTransactionsOneResponse( + get_general_ledger_transaction_response=unmarshal_json_response( + Optional[models.GetGeneralLedgerTransactionResponse], 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.AccountingGeneralLedgerTransactionsOneResponse( + 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, + company_id: Optional[str] = None, + raw: Optional[bool] = False, + 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, + ) -> models.AccountingGeneralLedgerTransactionsOneResponse: + r"""Get General Ledger Transaction + + Get General Ledger Transaction + + :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 company_id: The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. + :param raw: Include raw response. Mostly used for debugging purposes + :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.AccountingGeneralLedgerTransactionsOneRequest( + id=id, + consumer_id=consumer_id, + app_id=app_id, + service_id=service_id, + company_id=company_id, + raw=raw, + fields=fields, + ) + + req = self._build_request_async( + method="GET", + path="/accounting/general-ledger-transactions/{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.AccountingGeneralLedgerTransactionsOneGlobals( + 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, 900000), 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.generalLedgerTransactionsOne", + oauth2_scopes=None, + 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.AccountingGeneralLedgerTransactionsOneResponse( + get_general_ledger_transaction_response=unmarshal_json_response( + Optional[models.GetGeneralLedgerTransactionResponse], 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.AccountingGeneralLedgerTransactionsOneResponse( + 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/models/__init__.py b/src/apideck_unify/models/__init__.py index 38631f28..b9c191a3 100644 --- a/src/apideck_unify/models/__init__.py +++ b/src/apideck_unify/models/__init__.py @@ -584,6 +584,22 @@ AccountingExpensesUpdateResponse, AccountingExpensesUpdateResponseTypedDict, ) + from .accounting_generalledgertransactionsallop import ( + AccountingGeneralLedgerTransactionsAllGlobals, + AccountingGeneralLedgerTransactionsAllGlobalsTypedDict, + AccountingGeneralLedgerTransactionsAllRequest, + AccountingGeneralLedgerTransactionsAllRequestTypedDict, + AccountingGeneralLedgerTransactionsAllResponse, + AccountingGeneralLedgerTransactionsAllResponseTypedDict, + ) + from .accounting_generalledgertransactionsoneop import ( + AccountingGeneralLedgerTransactionsOneGlobals, + AccountingGeneralLedgerTransactionsOneGlobalsTypedDict, + AccountingGeneralLedgerTransactionsOneRequest, + AccountingGeneralLedgerTransactionsOneRequestTypedDict, + AccountingGeneralLedgerTransactionsOneResponse, + AccountingGeneralLedgerTransactionsOneResponseTypedDict, + ) from .accounting_invoiceitemsaddop import ( AccountingInvoiceItemsAddGlobals, AccountingInvoiceItemsAddGlobalsTypedDict, @@ -3084,6 +3100,26 @@ FormFieldOptionGroupTypedDict, ) from .gender import Gender + from .generalledgertransaction import ( + GeneralLedgerTransaction, + GeneralLedgerTransactionSourceType, + GeneralLedgerTransactionTypedDict, + ) + from .generalledgertransactionlineitem import ( + GeneralLedgerTransactionLineItem, + GeneralLedgerTransactionLineItemType, + GeneralLedgerTransactionLineItemTypedDict, + ) + from .generalledgertransactionsfilter import ( + GeneralLedgerTransactionsFilter, + GeneralLedgerTransactionsFilterTypedDict, + SourceType, + ) + from .generalledgertransactionssort import ( + GeneralLedgerTransactionsSort, + GeneralLedgerTransactionsSortBy, + GeneralLedgerTransactionsSortTypedDict, + ) from .getaccountingdepartmentresponse import ( GetAccountingDepartmentResponse, GetAccountingDepartmentResponseTypedDict, @@ -3375,6 +3411,14 @@ from .getfileresponse import GetFileResponse, GetFileResponseTypedDict from .getfilesresponse import GetFilesResponse, GetFilesResponseTypedDict from .getfolderresponse import GetFolderResponse, GetFolderResponseTypedDict + from .getgeneralledgertransactionresponse import ( + GetGeneralLedgerTransactionResponse, + GetGeneralLedgerTransactionResponseTypedDict, + ) + from .getgeneralledgertransactionsresponse import ( + GetGeneralLedgerTransactionsResponse, + GetGeneralLedgerTransactionsResponseTypedDict, + ) from .gethriscompaniesresponse import ( GetHrisCompaniesResponse, GetHrisCompaniesResponseTypedDict, @@ -3913,6 +3957,7 @@ from .jobstatus import JobStatus from .journalentriesfilter import ( JournalEntriesFilter, + JournalEntriesFilterScope, JournalEntriesFilterStatus, JournalEntriesFilterTypedDict, ) @@ -4267,6 +4312,7 @@ QuoteLineItemType, QuoteLineItemTypedDict, ) + from .quotesfilter import QuotesFilter, QuotesFilterTypedDict from .rebilling import RebillStatus, Rebilling, RebillingTypedDict from .refund import Refund, RefundTypedDict from .refund_input import RefundInput, RefundInputTypedDict @@ -5446,6 +5492,18 @@ "AccountingExpensesUpdateRequestTypedDict", "AccountingExpensesUpdateResponse", "AccountingExpensesUpdateResponseTypedDict", + "AccountingGeneralLedgerTransactionsAllGlobals", + "AccountingGeneralLedgerTransactionsAllGlobalsTypedDict", + "AccountingGeneralLedgerTransactionsAllRequest", + "AccountingGeneralLedgerTransactionsAllRequestTypedDict", + "AccountingGeneralLedgerTransactionsAllResponse", + "AccountingGeneralLedgerTransactionsAllResponseTypedDict", + "AccountingGeneralLedgerTransactionsOneGlobals", + "AccountingGeneralLedgerTransactionsOneGlobalsTypedDict", + "AccountingGeneralLedgerTransactionsOneRequest", + "AccountingGeneralLedgerTransactionsOneRequestTypedDict", + "AccountingGeneralLedgerTransactionsOneResponse", + "AccountingGeneralLedgerTransactionsOneResponseTypedDict", "AccountingInvoiceItemsAddGlobals", "AccountingInvoiceItemsAddGlobalsTypedDict", "AccountingInvoiceItemsAddRequest", @@ -7314,6 +7372,17 @@ "Format", "FulfillmentStatus", "Gender", + "GeneralLedgerTransaction", + "GeneralLedgerTransactionLineItem", + "GeneralLedgerTransactionLineItemType", + "GeneralLedgerTransactionLineItemTypedDict", + "GeneralLedgerTransactionSourceType", + "GeneralLedgerTransactionTypedDict", + "GeneralLedgerTransactionsFilter", + "GeneralLedgerTransactionsFilterTypedDict", + "GeneralLedgerTransactionsSort", + "GeneralLedgerTransactionsSortBy", + "GeneralLedgerTransactionsSortTypedDict", "GetAPIResourceCoverageResponse", "GetAPIResourceCoverageResponseTypedDict", "GetAPIResourceResponse", @@ -7490,6 +7559,10 @@ "GetFilesResponseTypedDict", "GetFolderResponse", "GetFolderResponseTypedDict", + "GetGeneralLedgerTransactionResponse", + "GetGeneralLedgerTransactionResponseTypedDict", + "GetGeneralLedgerTransactionsResponse", + "GetGeneralLedgerTransactionsResponseTypedDict", "GetHrisCompaniesResponse", "GetHrisCompaniesResponseTypedDict", "GetHrisCompanyResponse", @@ -7911,6 +7984,7 @@ "JobType", "JobTypedDict", "JournalEntriesFilter", + "JournalEntriesFilterScope", "JournalEntriesFilterStatus", "JournalEntriesFilterTypedDict", "JournalEntriesSort", @@ -8227,6 +8301,8 @@ "QuoteLineItemTypedDict", "QuoteStatus", "QuoteTypedDict", + "QuotesFilter", + "QuotesFilterTypedDict", "RebillStatus", "Rebilling", "RebillingTypedDict", @@ -8325,6 +8401,7 @@ "SocialLinksTypedDict", "SortBy", "SortDirection", + "SourceType", "Stage", "StageTypedDict", "Stages", @@ -9215,6 +9292,18 @@ "AccountingExpensesUpdateRequestTypedDict": ".accounting_expensesupdateop", "AccountingExpensesUpdateResponse": ".accounting_expensesupdateop", "AccountingExpensesUpdateResponseTypedDict": ".accounting_expensesupdateop", + "AccountingGeneralLedgerTransactionsAllGlobals": ".accounting_generalledgertransactionsallop", + "AccountingGeneralLedgerTransactionsAllGlobalsTypedDict": ".accounting_generalledgertransactionsallop", + "AccountingGeneralLedgerTransactionsAllRequest": ".accounting_generalledgertransactionsallop", + "AccountingGeneralLedgerTransactionsAllRequestTypedDict": ".accounting_generalledgertransactionsallop", + "AccountingGeneralLedgerTransactionsAllResponse": ".accounting_generalledgertransactionsallop", + "AccountingGeneralLedgerTransactionsAllResponseTypedDict": ".accounting_generalledgertransactionsallop", + "AccountingGeneralLedgerTransactionsOneGlobals": ".accounting_generalledgertransactionsoneop", + "AccountingGeneralLedgerTransactionsOneGlobalsTypedDict": ".accounting_generalledgertransactionsoneop", + "AccountingGeneralLedgerTransactionsOneRequest": ".accounting_generalledgertransactionsoneop", + "AccountingGeneralLedgerTransactionsOneRequestTypedDict": ".accounting_generalledgertransactionsoneop", + "AccountingGeneralLedgerTransactionsOneResponse": ".accounting_generalledgertransactionsoneop", + "AccountingGeneralLedgerTransactionsOneResponseTypedDict": ".accounting_generalledgertransactionsoneop", "AccountingInvoiceItemsAddGlobals": ".accounting_invoiceitemsaddop", "AccountingInvoiceItemsAddGlobalsTypedDict": ".accounting_invoiceitemsaddop", "AccountingInvoiceItemsAddRequest": ".accounting_invoiceitemsaddop", @@ -11116,6 +11205,18 @@ "FormFieldOptionGroupOptionType": ".formfieldoptiongroup", "FormFieldOptionGroupTypedDict": ".formfieldoptiongroup", "Gender": ".gender", + "GeneralLedgerTransaction": ".generalledgertransaction", + "GeneralLedgerTransactionSourceType": ".generalledgertransaction", + "GeneralLedgerTransactionTypedDict": ".generalledgertransaction", + "GeneralLedgerTransactionLineItem": ".generalledgertransactionlineitem", + "GeneralLedgerTransactionLineItemType": ".generalledgertransactionlineitem", + "GeneralLedgerTransactionLineItemTypedDict": ".generalledgertransactionlineitem", + "GeneralLedgerTransactionsFilter": ".generalledgertransactionsfilter", + "GeneralLedgerTransactionsFilterTypedDict": ".generalledgertransactionsfilter", + "SourceType": ".generalledgertransactionsfilter", + "GeneralLedgerTransactionsSort": ".generalledgertransactionssort", + "GeneralLedgerTransactionsSortBy": ".generalledgertransactionssort", + "GeneralLedgerTransactionsSortTypedDict": ".generalledgertransactionssort", "GetAccountingDepartmentResponse": ".getaccountingdepartmentresponse", "GetAccountingDepartmentResponseTypedDict": ".getaccountingdepartmentresponse", "GetAccountingDepartmentsResponse": ".getaccountingdepartmentsresponse", @@ -11294,6 +11395,10 @@ "GetFilesResponseTypedDict": ".getfilesresponse", "GetFolderResponse": ".getfolderresponse", "GetFolderResponseTypedDict": ".getfolderresponse", + "GetGeneralLedgerTransactionResponse": ".getgeneralledgertransactionresponse", + "GetGeneralLedgerTransactionResponseTypedDict": ".getgeneralledgertransactionresponse", + "GetGeneralLedgerTransactionsResponse": ".getgeneralledgertransactionsresponse", + "GetGeneralLedgerTransactionsResponseTypedDict": ".getgeneralledgertransactionsresponse", "GetHrisCompaniesResponse": ".gethriscompaniesresponse", "GetHrisCompaniesResponseTypedDict": ".gethriscompaniesresponse", "GetHrisCompanyResponse": ".gethriscompanyresponse", @@ -11725,6 +11830,7 @@ "Visibility": ".job", "JobStatus": ".jobstatus", "JournalEntriesFilter": ".journalentriesfilter", + "JournalEntriesFilterScope": ".journalentriesfilter", "JournalEntriesFilterStatus": ".journalentriesfilter", "JournalEntriesFilterTypedDict": ".journalentriesfilter", "JournalEntriesSort": ".journalentriessort", @@ -12046,6 +12152,8 @@ "QuoteLineItemInputTypedDict": ".quotelineitem", "QuoteLineItemType": ".quotelineitem", "QuoteLineItemTypedDict": ".quotelineitem", + "QuotesFilter": ".quotesfilter", + "QuotesFilterTypedDict": ".quotesfilter", "RebillStatus": ".rebilling", "Rebilling": ".rebilling", "RebillingTypedDict": ".rebilling", diff --git a/src/apideck_unify/models/accounting_generalledgertransactionsallop.py b/src/apideck_unify/models/accounting_generalledgertransactionsallop.py new file mode 100644 index 00000000..a95ea645 --- /dev/null +++ b/src/apideck_unify/models/accounting_generalledgertransactionsallop.py @@ -0,0 +1,219 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .generalledgertransactionsfilter import ( + GeneralLedgerTransactionsFilter, + GeneralLedgerTransactionsFilterTypedDict, +) +from .generalledgertransactionssort import ( + GeneralLedgerTransactionsSort, + GeneralLedgerTransactionsSortTypedDict, +) +from .getgeneralledgertransactionsresponse import ( + GetGeneralLedgerTransactionsResponse, + GetGeneralLedgerTransactionsResponseTypedDict, +) +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +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 AccountingGeneralLedgerTransactionsAllGlobalsTypedDict(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 AccountingGeneralLedgerTransactionsAllGlobals(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 AccountingGeneralLedgerTransactionsAllRequestTypedDict(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.""" + company_id: NotRequired[str] + r"""The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings.""" + 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[GeneralLedgerTransactionsFilterTypedDict] + r"""Apply filters""" + sort: NotRequired[GeneralLedgerTransactionsSortTypedDict] + 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 AccountingGeneralLedgerTransactionsAllRequest(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.""" + + company_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-company-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings.""" + + 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[GeneralLedgerTransactionsFilter], + pydantic.Field(alias="filter"), + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Apply filters""" + + sort: Annotated[ + Optional[GeneralLedgerTransactionsSort], + 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", + "companyId", + "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 AccountingGeneralLedgerTransactionsAllResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + get_general_ledger_transactions_response: NotRequired[ + GetGeneralLedgerTransactionsResponseTypedDict + ] + r"""GeneralLedgerTransactions""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class AccountingGeneralLedgerTransactionsAllResponse(BaseModel): + next: Callable[[], Optional[AccountingGeneralLedgerTransactionsAllResponse]] + + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + get_general_ledger_transactions_response: Optional[ + GetGeneralLedgerTransactionsResponse + ] = None + r"""GeneralLedgerTransactions""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/accounting_generalledgertransactionsoneop.py b/src/apideck_unify/models/accounting_generalledgertransactionsoneop.py new file mode 100644 index 00000000..fb860b8b --- /dev/null +++ b/src/apideck_unify/models/accounting_generalledgertransactionsoneop.py @@ -0,0 +1,175 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .getgeneralledgertransactionresponse import ( + GetGeneralLedgerTransactionResponse, + GetGeneralLedgerTransactionResponseTypedDict, +) +from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .unexpectederrorresponse import ( + UnexpectedErrorResponse, + UnexpectedErrorResponseTypedDict, +) +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from apideck_unify.utils import ( + FieldMetadata, + HeaderMetadata, + PathParamMetadata, + QueryParamMetadata, +) +import pydantic +from pydantic import model_serializer +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class AccountingGeneralLedgerTransactionsOneGlobalsTypedDict(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 AccountingGeneralLedgerTransactionsOneGlobals(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 AccountingGeneralLedgerTransactionsOneRequestTypedDict(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.""" + company_id: NotRequired[str] + r"""The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings.""" + raw: NotRequired[bool] + r"""Include raw response. Mostly used for debugging purposes""" + 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 AccountingGeneralLedgerTransactionsOneRequest(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.""" + + company_id: Annotated[ + Optional[str], + pydantic.Field(alias="x-apideck-company-id"), + FieldMetadata(header=HeaderMetadata(style="simple", explode=False)), + ] = None + r"""The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings.""" + + raw: Annotated[ + Optional[bool], + FieldMetadata(query=QueryParamMetadata(style="form", explode=True)), + ] = False + r"""Include raw response. Mostly used for debugging purposes""" + + 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 = [ + "consumerId", + "appId", + "serviceId", + "companyId", + "raw", + "fields", + ] + nullable_fields = ["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 AccountingGeneralLedgerTransactionsOneResponseTypedDict(TypedDict): + http_meta: HTTPMetadataTypedDict + get_general_ledger_transaction_response: NotRequired[ + GetGeneralLedgerTransactionResponseTypedDict + ] + r"""GeneralLedgerTransaction""" + unexpected_error_response: NotRequired[UnexpectedErrorResponseTypedDict] + r"""Unexpected error""" + + +class AccountingGeneralLedgerTransactionsOneResponse(BaseModel): + http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None + + get_general_ledger_transaction_response: Optional[ + GetGeneralLedgerTransactionResponse + ] = None + r"""GeneralLedgerTransaction""" + + unexpected_error_response: Optional[UnexpectedErrorResponse] = None + r"""Unexpected error""" diff --git a/src/apideck_unify/models/accounting_quotesallop.py b/src/apideck_unify/models/accounting_quotesallop.py index 56125ae9..c2ef1e11 100644 --- a/src/apideck_unify/models/accounting_quotesallop.py +++ b/src/apideck_unify/models/accounting_quotesallop.py @@ -3,6 +3,7 @@ from __future__ import annotations from .getquotesresponse import GetQuotesResponse, GetQuotesResponseTypedDict from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict +from .quotesfilter import QuotesFilter, QuotesFilterTypedDict from .unexpectederrorresponse import ( UnexpectedErrorResponse, UnexpectedErrorResponseTypedDict, @@ -59,6 +60,8 @@ class AccountingQuotesAllRequestTypedDict(TypedDict): 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[QuotesFilterTypedDict] + r"""Apply filters""" class AccountingQuotesAllRequest(BaseModel): @@ -108,6 +111,13 @@ class AccountingQuotesAllRequest(BaseModel): ] = 20 r"""Number of results to return. Minimum 1, Maximum 200, Default 20""" + filter_: Annotated[ + Optional[QuotesFilter], + pydantic.Field(alias="filter"), + FieldMetadata(query=QueryParamMetadata(style="deepObject", explode=True)), + ] = None + r"""Apply filters""" + @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ @@ -118,6 +128,7 @@ def serialize_model(self, handler): "companyId", "cursor", "limit", + "filter", ] nullable_fields = ["cursor"] null_default_fields = [] diff --git a/src/apideck_unify/models/billsfilter.py b/src/apideck_unify/models/billsfilter.py index e6a6b00f..df360c1b 100644 --- a/src/apideck_unify/models/billsfilter.py +++ b/src/apideck_unify/models/billsfilter.py @@ -26,6 +26,8 @@ class BillsFilterTypedDict(TypedDict): updated_since: NotRequired[datetime] status: NotRequired[BillsFilterStatus] r"""Filter by bill status""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class BillsFilter(BaseModel): @@ -42,6 +44,9 @@ class BillsFilter(BaseModel): ] = None r"""Filter by bill status""" + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("status") def serialize_status(self, value): if isinstance(value, str): diff --git a/src/apideck_unify/models/connection.py b/src/apideck_unify/models/connection.py index 6598b7ca..61881bd1 100644 --- a/src/apideck_unify/models/connection.py +++ b/src/apideck_unify/models/connection.py @@ -109,6 +109,7 @@ class Health(str, Enum, metaclass=utils.OpenEnumMeta): NEEDS_AUTH = "needs_auth" PENDING_REFRESH = "pending_refresh" OK = "ok" + DEGRADED = "degraded" class ConnectionTypedDict(TypedDict): @@ -174,6 +175,8 @@ class ConnectionTypedDict(TypedDict): r"""Unix timestamp in milliseconds when credentials will be deleted if token refresh continues to fail. A value of 0 indicates no active retention window (connection is healthy or not using OAuth token refresh).""" last_refresh_failed_at: NotRequired[float] r"""Unix timestamp in milliseconds of the last failed token refresh attempt. A value of 0 indicates no recent failures. This field is used internally to enforce cooldown periods between retry attempts.""" + last_downstream_error_at: NotRequired[float] + r"""Unix timestamp in milliseconds of the last downstream unreachable error (502/504 network class). A value of 0 indicates no active error. Connection remains callable while this is set; health surfaces as 'degraded'.""" created_at: NotRequired[float] updated_at: NotRequired[Nullable[float]] @@ -291,6 +294,9 @@ class Connection(BaseModel): last_refresh_failed_at: Optional[float] = None r"""Unix timestamp in milliseconds of the last failed token refresh attempt. A value of 0 indicates no recent failures. This field is used internally to enforce cooldown periods between retry attempts.""" + last_downstream_error_at: Optional[float] = None + r"""Unix timestamp in milliseconds of the last downstream unreachable error (502/504 network class). A value of 0 indicates no active error. Connection remains callable while this is set; health surfaces as 'degraded'.""" + created_at: Optional[float] = None updated_at: OptionalNullable[float] = UNSET @@ -397,6 +403,7 @@ def serialize_model(self, handler): "health", "credentials_expire_at", "last_refresh_failed_at", + "last_downstream_error_at", "created_at", "updated_at", ] diff --git a/src/apideck_unify/models/connectionhealth.py b/src/apideck_unify/models/connectionhealth.py index 6672655b..f9d3e2d0 100644 --- a/src/apideck_unify/models/connectionhealth.py +++ b/src/apideck_unify/models/connectionhealth.py @@ -15,3 +15,4 @@ class ConnectionHealth(str, Enum, metaclass=utils.OpenEnumMeta): NEEDS_CONSENT = "needs_consent" REVOKED = "revoked" MISSING_SETTINGS = "missing_settings" + DEGRADED = "degraded" diff --git a/src/apideck_unify/models/creditnotesfilter.py b/src/apideck_unify/models/creditnotesfilter.py index d1dcaf8e..766d9ce1 100644 --- a/src/apideck_unify/models/creditnotesfilter.py +++ b/src/apideck_unify/models/creditnotesfilter.py @@ -15,6 +15,8 @@ class CreditNotesFilterTypedDict(TypedDict): created_since: NotRequired[datetime] number: NotRequired[str] r"""Credit note number to search for""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class CreditNotesFilter(BaseModel): @@ -27,3 +29,6 @@ class CreditNotesFilter(BaseModel): number: Annotated[Optional[str], FieldMetadata(query=True)] = None r"""Credit note number to search for""" + + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" diff --git a/src/apideck_unify/models/customersfilter.py b/src/apideck_unify/models/customersfilter.py index e87ecfef..6134def6 100644 --- a/src/apideck_unify/models/customersfilter.py +++ b/src/apideck_unify/models/customersfilter.py @@ -43,6 +43,8 @@ class CustomersFilterTypedDict(TypedDict): updated_since: NotRequired[datetime] supplier_id: NotRequired[str] r"""Supplier ID of customer to search for""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the customer's primary subsidiary belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class CustomersFilter(BaseModel): @@ -75,6 +77,9 @@ class CustomersFilter(BaseModel): supplier_id: Annotated[Optional[str], FieldMetadata(query=True)] = None r"""Supplier ID of customer to search for""" + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the customer's primary subsidiary belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("status") def serialize_status(self, value): if isinstance(value, str): @@ -95,6 +100,7 @@ def serialize_model(self, handler): "status", "updated_since", "supplier_id", + "subsidiary_id", ] nullable_fields = ["status"] null_default_fields = [] diff --git a/src/apideck_unify/models/expensereportsfilter.py b/src/apideck_unify/models/expensereportsfilter.py index 580aa071..9c285e1a 100644 --- a/src/apideck_unify/models/expensereportsfilter.py +++ b/src/apideck_unify/models/expensereportsfilter.py @@ -27,6 +27,8 @@ class ExpenseReportsFilterTypedDict(TypedDict): status: NotRequired[ExpenseReportsFilterStatus] employee_id: NotRequired[str] r"""Filter by employee ID""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class ExpenseReportsFilter(BaseModel): @@ -43,6 +45,9 @@ class ExpenseReportsFilter(BaseModel): employee_id: Annotated[Optional[str], FieldMetadata(query=True)] = None r"""Filter by employee ID""" + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("status") def serialize_status(self, value): if isinstance(value, str): diff --git a/src/apideck_unify/models/generalledgertransaction.py b/src/apideck_unify/models/generalledgertransaction.py new file mode 100644 index 00000000..1122b125 --- /dev/null +++ b/src/apideck_unify/models/generalledgertransaction.py @@ -0,0 +1,209 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .currency import Currency +from .customfield import CustomField, CustomFieldTypedDict +from .generalledgertransactionlineitem import ( + GeneralLedgerTransactionLineItem, + GeneralLedgerTransactionLineItemTypedDict, +) +from .passthroughbody import PassThroughBody, PassThroughBodyTypedDict +from apideck_unify import models, utils +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from apideck_unify.utils import validate_open_enum +from datetime import datetime +from enum import Enum +from pydantic import field_serializer, model_serializer +from pydantic.functional_validators import PlainValidator +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GeneralLedgerTransactionSourceType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The originating transaction type that produced this posting in the general ledger. Discriminates whether the entry came from an invoice, a bill, a payment, a manual journal, etc. This is the key field that distinguishes general-ledger-transactions from journal-entries (which only covers manually-captured entries). May be `null` when the upstream connector did not return an origin discriminator (e.g. Xero's single-record endpoint strips `SourceType` for every record; certain historical records also omit it). To recover a populated value, query the list endpoint.""" + + OTHER = "other" + INVOICE = "invoice" + BILL = "bill" + CREDIT_NOTE = "credit_note" + PAYMENT = "payment" + REFUND = "refund" + EXPENSE = "expense" + JOURNAL_ENTRY = "journal_entry" + PAYROLL = "payroll" + + +class GeneralLedgerTransactionTypedDict(TypedDict): + source_type: Nullable[GeneralLedgerTransactionSourceType] + r"""The originating transaction type that produced this posting in the general ledger. Discriminates whether the entry came from an invoice, a bill, a payment, a manual journal, etc. This is the key field that distinguishes general-ledger-transactions from journal-entries (which only covers manually-captured entries). May be `null` when the upstream connector did not return an origin discriminator (e.g. Xero's single-record endpoint strips `SourceType` for every record; certain historical records also omit it). To recover a populated value, query the list endpoint.""" + line_items: List[GeneralLedgerTransactionLineItemTypedDict] + r"""Lines of the transaction. Each line affects one ledger account with either a debit or a credit. The signed sum of net_amount across all lines must equal zero (double-entry invariant).""" + id: NotRequired[str] + r"""A unique identifier for an object.""" + source_id: NotRequired[Nullable[str]] + r"""Identifier of the originating document in the vendor system. For example, when source_type is 'invoice', this is the id of the invoice that produced this posting. Use this id together with source_type to fetch the source document via its dedicated unified resource.""" + posted_at: NotRequired[datetime] + r"""The date on which the transaction was posted to the general ledger. This is the accounting date — it is what determines the period the transaction belongs to and can be earlier than the creation date for backdated postings.""" + reference: NotRequired[Nullable[str]] + r"""Optional reference identifier for the transaction.""" + number: NotRequired[Nullable[str]] + r"""Sequential number auto-assigned by the vendor system to the transaction (e.g. Xero JournalNumber). Unique per company.""" + 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).""" + currency_rate: NotRequired[Nullable[float]] + r"""Currency Exchange Rate at the time entity was recorded/generated.""" + memo: NotRequired[Nullable[str]] + r"""Free-text description at the header level. Typically populated when the transaction originates from a manual journal — for system-generated postings (invoice, payment, etc.) the source document carries the descriptive text.""" + custom_fields: NotRequired[List[CustomFieldTypedDict]] + 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.""" + updated_at: NotRequired[Nullable[datetime]] + r"""The date and time when the object was last updated.""" + created_at: NotRequired[Nullable[datetime]] + r"""The date and time when the object was created.""" + custom_mappings: NotRequired[Nullable[Dict[str, Any]]] + r"""When custom mappings are configured on the resource, the result is included here.""" + pass_through: NotRequired[List[PassThroughBodyTypedDict]] + r"""The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.""" + + +class GeneralLedgerTransaction(BaseModel): + source_type: Annotated[ + Nullable[GeneralLedgerTransactionSourceType], + PlainValidator(validate_open_enum(False)), + ] + r"""The originating transaction type that produced this posting in the general ledger. Discriminates whether the entry came from an invoice, a bill, a payment, a manual journal, etc. This is the key field that distinguishes general-ledger-transactions from journal-entries (which only covers manually-captured entries). May be `null` when the upstream connector did not return an origin discriminator (e.g. Xero's single-record endpoint strips `SourceType` for every record; certain historical records also omit it). To recover a populated value, query the list endpoint.""" + + line_items: List[GeneralLedgerTransactionLineItem] + r"""Lines of the transaction. Each line affects one ledger account with either a debit or a credit. The signed sum of net_amount across all lines must equal zero (double-entry invariant).""" + + id: Optional[str] = None + r"""A unique identifier for an object.""" + + source_id: OptionalNullable[str] = UNSET + r"""Identifier of the originating document in the vendor system. For example, when source_type is 'invoice', this is the id of the invoice that produced this posting. Use this id together with source_type to fetch the source document via its dedicated unified resource.""" + + posted_at: Optional[datetime] = None + r"""The date on which the transaction was posted to the general ledger. This is the accounting date — it is what determines the period the transaction belongs to and can be earlier than the creation date for backdated postings.""" + + reference: OptionalNullable[str] = UNSET + r"""Optional reference identifier for the transaction.""" + + number: OptionalNullable[str] = UNSET + r"""Sequential number auto-assigned by the vendor system to the transaction (e.g. Xero JournalNumber). Unique per company.""" + + currency: Annotated[ + OptionalNullable[Currency], PlainValidator(validate_open_enum(False)) + ] = UNSET + r"""Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).""" + + currency_rate: OptionalNullable[float] = UNSET + r"""Currency Exchange Rate at the time entity was recorded/generated.""" + + memo: OptionalNullable[str] = UNSET + r"""Free-text description at the header level. Typically populated when the transaction originates from a manual journal — for system-generated postings (invoice, payment, etc.) the source document carries the descriptive text.""" + + custom_fields: Optional[List[CustomField]] = None + + 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.""" + + updated_at: OptionalNullable[datetime] = UNSET + r"""The date and time when the object was last updated.""" + + created_at: OptionalNullable[datetime] = UNSET + r"""The date and time when the object was created.""" + + custom_mappings: OptionalNullable[Dict[str, Any]] = UNSET + r"""When custom mappings are configured on the resource, the result is included here.""" + + pass_through: Optional[List[PassThroughBody]] = None + r"""The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.""" + + @field_serializer("source_type") + def serialize_source_type(self, value): + if isinstance(value, str): + try: + return models.GeneralLedgerTransactionSourceType(value) + except ValueError: + return value + return value + + @field_serializer("currency") + def serialize_currency(self, value): + if isinstance(value, str): + try: + return models.Currency(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = [ + "id", + "source_id", + "posted_at", + "reference", + "number", + "currency", + "currency_rate", + "memo", + "custom_fields", + "updated_by", + "created_by", + "updated_at", + "created_at", + "custom_mappings", + "pass_through", + ] + nullable_fields = [ + "source_type", + "source_id", + "reference", + "number", + "currency", + "currency_rate", + "memo", + "updated_by", + "created_by", + "updated_at", + "created_at", + "custom_mappings", + ] + 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/generalledgertransactionlineitem.py b/src/apideck_unify/models/generalledgertransactionlineitem.py new file mode 100644 index 00000000..7b989983 --- /dev/null +++ b/src/apideck_unify/models/generalledgertransactionlineitem.py @@ -0,0 +1,138 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .linkedledgeraccount import LinkedLedgerAccount, LinkedLedgerAccountTypedDict +from .linkedtaxrate import LinkedTaxRate, LinkedTaxRateTypedDict +from .linkedtrackingcategory import ( + LinkedTrackingCategory, + LinkedTrackingCategoryTypedDict, +) +from apideck_unify import models, utils +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +from apideck_unify.utils import validate_open_enum +from enum import Enum +from pydantic import field_serializer, model_serializer +from pydantic.functional_validators import PlainValidator +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GeneralLedgerTransactionLineItemType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Side of the entry. Redundant with the sign of net_amount but exposed as an explicit flag for filtering convenience.""" + + DEBIT = "debit" + CREDIT = "credit" + + +class GeneralLedgerTransactionLineItemTypedDict(TypedDict): + type: Nullable[GeneralLedgerTransactionLineItemType] + r"""Side of the entry. Redundant with the sign of net_amount but exposed as an explicit flag for filtering convenience.""" + ledger_account: Nullable[LinkedLedgerAccountTypedDict] + id: NotRequired[str] + r"""A unique identifier for an object.""" + description: NotRequired[Nullable[str]] + r"""Free-text description of the line.""" + net_amount: NotRequired[Nullable[float]] + r"""The amount posted to the ledger account, tax-exclusive. Debit entries are positive, credit entries are negative. In general-ledger views the tax component lives in its own dedicated line against a tax payable/receivable account, so net_amount is the canonical figure for reporting.""" + tax_amount: NotRequired[Nullable[float]] + r"""Tax embedded in the line. In GL views this is typically 0 or null because tax has its own dedicated line against a tax payable/receivable account. Exposed for completeness and for tax-inclusive setups.""" + tax_rate: NotRequired[LinkedTaxRateTypedDict] + tracking_categories: NotRequired[ + Nullable[List[Nullable[LinkedTrackingCategoryTypedDict]]] + ] + r"""A list of linked tracking categories.""" + line_number: NotRequired[Nullable[int]] + r"""Line number of the resource""" + + +class GeneralLedgerTransactionLineItem(BaseModel): + type: Annotated[ + Nullable[GeneralLedgerTransactionLineItemType], + PlainValidator(validate_open_enum(False)), + ] + r"""Side of the entry. Redundant with the sign of net_amount but exposed as an explicit flag for filtering convenience.""" + + ledger_account: Nullable[LinkedLedgerAccount] + + id: Optional[str] = None + r"""A unique identifier for an object.""" + + description: OptionalNullable[str] = UNSET + r"""Free-text description of the line.""" + + net_amount: OptionalNullable[float] = UNSET + r"""The amount posted to the ledger account, tax-exclusive. Debit entries are positive, credit entries are negative. In general-ledger views the tax component lives in its own dedicated line against a tax payable/receivable account, so net_amount is the canonical figure for reporting.""" + + tax_amount: OptionalNullable[float] = UNSET + r"""Tax embedded in the line. In GL views this is typically 0 or null because tax has its own dedicated line against a tax payable/receivable account. Exposed for completeness and for tax-inclusive setups.""" + + tax_rate: Optional[LinkedTaxRate] = None + + tracking_categories: OptionalNullable[List[Nullable[LinkedTrackingCategory]]] = ( + UNSET + ) + r"""A list of linked tracking categories.""" + + line_number: OptionalNullable[int] = UNSET + r"""Line number of the resource""" + + @field_serializer("type") + def serialize_type(self, value): + if isinstance(value, str): + try: + return models.GeneralLedgerTransactionLineItemType(value) + except ValueError: + return value + return value + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = [ + "id", + "description", + "net_amount", + "tax_amount", + "tax_rate", + "tracking_categories", + "line_number", + ] + nullable_fields = [ + "description", + "net_amount", + "type", + "tax_amount", + "tracking_categories", + "ledger_account", + "line_number", + ] + 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/generalledgertransactionsfilter.py b/src/apideck_unify/models/generalledgertransactionsfilter.py new file mode 100644 index 00000000..35c23801 --- /dev/null +++ b/src/apideck_unify/models/generalledgertransactionsfilter.py @@ -0,0 +1,58 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from apideck_unify import models, utils +from apideck_unify.types import BaseModel +from apideck_unify.utils import FieldMetadata, validate_open_enum +from datetime import datetime +from enum import Enum +from pydantic import field_serializer +from pydantic.functional_validators import PlainValidator +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class SourceType(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Filter by the originating transaction type.""" + + OTHER = "other" + INVOICE = "invoice" + BILL = "bill" + CREDIT_NOTE = "credit_note" + PAYMENT = "payment" + REFUND = "refund" + EXPENSE = "expense" + JOURNAL_ENTRY = "journal_entry" + PAYROLL = "payroll" + + +class GeneralLedgerTransactionsFilterTypedDict(TypedDict): + source_type: NotRequired[SourceType] + r"""Filter by the originating transaction type.""" + source_id: NotRequired[str] + r"""Return only transactions originated from the given source document id.""" + updated_since: NotRequired[datetime] + r"""Return transactions updated on or after this timestamp.""" + + +class GeneralLedgerTransactionsFilter(BaseModel): + source_type: Annotated[ + Annotated[Optional[SourceType], PlainValidator(validate_open_enum(False))], + FieldMetadata(query=True), + ] = None + r"""Filter by the originating transaction type.""" + + source_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Return only transactions originated from the given source document id.""" + + updated_since: Annotated[Optional[datetime], FieldMetadata(query=True)] = None + r"""Return transactions updated on or after this timestamp.""" + + @field_serializer("source_type") + def serialize_source_type(self, value): + if isinstance(value, str): + try: + return models.SourceType(value) + except ValueError: + return value + return value diff --git a/src/apideck_unify/models/generalledgertransactionssort.py b/src/apideck_unify/models/generalledgertransactionssort.py new file mode 100644 index 00000000..4d21fda4 --- /dev/null +++ b/src/apideck_unify/models/generalledgertransactionssort.py @@ -0,0 +1,62 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .sortdirection import SortDirection +from apideck_unify import models, utils +from apideck_unify.types import BaseModel +from apideck_unify.utils import FieldMetadata, validate_open_enum +from enum import Enum +from pydantic import field_serializer +from pydantic.functional_validators import PlainValidator +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GeneralLedgerTransactionsSortBy(str, Enum, metaclass=utils.OpenEnumMeta): + r"""The field on which to sort the General Ledger Transactions.""" + + POSTED_AT = "posted_at" + UPDATED_AT = "updated_at" + CREATED_AT = "created_at" + + +class GeneralLedgerTransactionsSortTypedDict(TypedDict): + by: NotRequired[GeneralLedgerTransactionsSortBy] + r"""The field on which to sort the General Ledger Transactions.""" + direction: NotRequired[SortDirection] + r"""The direction in which to sort the results""" + + +class GeneralLedgerTransactionsSort(BaseModel): + by: Annotated[ + Annotated[ + Optional[GeneralLedgerTransactionsSortBy], + PlainValidator(validate_open_enum(False)), + ], + FieldMetadata(query=True), + ] = None + r"""The field on which to sort the General Ledger Transactions.""" + + direction: Annotated[ + Annotated[Optional[SortDirection], PlainValidator(validate_open_enum(False))], + FieldMetadata(query=True), + ] = SortDirection.ASC + r"""The direction in which to sort the results""" + + @field_serializer("by") + def serialize_by(self, value): + if isinstance(value, str): + try: + return models.GeneralLedgerTransactionsSortBy(value) + except ValueError: + return value + return value + + @field_serializer("direction") + def serialize_direction(self, value): + if isinstance(value, str): + try: + return models.SortDirection(value) + except ValueError: + return value + return value diff --git a/src/apideck_unify/models/getgeneralledgertransactionresponse.py b/src/apideck_unify/models/getgeneralledgertransactionresponse.py new file mode 100644 index 00000000..c8594f1d --- /dev/null +++ b/src/apideck_unify/models/getgeneralledgertransactionresponse.py @@ -0,0 +1,92 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .generalledgertransaction import ( + GeneralLedgerTransaction, + GeneralLedgerTransactionTypedDict, +) +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetGeneralLedgerTransactionResponseTypedDict(TypedDict): + r"""GeneralLedgerTransaction""" + + 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: GeneralLedgerTransactionTypedDict + raw: NotRequired[Nullable[Dict[str, Any]]] + r"""Raw response from the integration when raw=true query param is provided""" + + +class GetGeneralLedgerTransactionResponse(BaseModel): + r"""GeneralLedgerTransaction""" + + 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: GeneralLedgerTransaction + + raw: Annotated[OptionalNullable[Dict[str, Any]], pydantic.Field(alias="_raw")] = ( + UNSET + ) + r"""Raw response from the integration when raw=true query param is provided""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["_raw"] + nullable_fields = ["_raw"] + 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/getgeneralledgertransactionsresponse.py b/src/apideck_unify/models/getgeneralledgertransactionsresponse.py new file mode 100644 index 00000000..be9b6167 --- /dev/null +++ b/src/apideck_unify/models/getgeneralledgertransactionsresponse.py @@ -0,0 +1,104 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from .generalledgertransaction import ( + GeneralLedgerTransaction, + GeneralLedgerTransactionTypedDict, +) +from .links import Links, LinksTypedDict +from .meta import Meta, MetaTypedDict +from apideck_unify.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) +import pydantic +from pydantic import model_serializer +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class GetGeneralLedgerTransactionsResponseTypedDict(TypedDict): + r"""GeneralLedgerTransactions""" + + 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[GeneralLedgerTransactionTypedDict] + meta: NotRequired[MetaTypedDict] + r"""Response metadata""" + links: NotRequired[LinksTypedDict] + r"""Links to navigate to previous or next pages through the API""" + raw: NotRequired[Nullable[Dict[str, Any]]] + r"""Raw response from the integration when raw=true query param is provided""" + + +class GetGeneralLedgerTransactionsResponse(BaseModel): + r"""GeneralLedgerTransactions""" + + 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[GeneralLedgerTransaction] + + meta: Optional[Meta] = None + r"""Response metadata""" + + links: Optional[Links] = None + r"""Links to navigate to previous or next pages through the API""" + + raw: Annotated[OptionalNullable[Dict[str, Any]], pydantic.Field(alias="_raw")] = ( + UNSET + ) + r"""Raw response from the integration when raw=true query param is provided""" + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["meta", "links", "_raw"] + nullable_fields = ["_raw"] + 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/invoiceitemsfilter.py b/src/apideck_unify/models/invoiceitemsfilter.py index faaa9605..e9d6e3d2 100644 --- a/src/apideck_unify/models/invoiceitemsfilter.py +++ b/src/apideck_unify/models/invoiceitemsfilter.py @@ -43,6 +43,8 @@ class InvoiceItemsFilterTypedDict(TypedDict): 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.""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class InvoiceItemsFilter(BaseModel): @@ -70,6 +72,9 @@ class InvoiceItemsFilter(BaseModel): ] = UNSET r"""The kind of transaction, indicating whether it is a sales transaction or a purchase transaction.""" + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("type") def serialize_type(self, value): if isinstance(value, str): @@ -90,7 +95,14 @@ def serialize_transaction_type(self, value): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["updated_since", "ids", "name", "type", "transaction_type"] + optional_fields = [ + "updated_since", + "ids", + "name", + "type", + "transaction_type", + "subsidiary_id", + ] nullable_fields = ["type", "transaction_type"] null_default_fields = [] diff --git a/src/apideck_unify/models/invoicesfilter.py b/src/apideck_unify/models/invoicesfilter.py index b44088e4..8df05777 100644 --- a/src/apideck_unify/models/invoicesfilter.py +++ b/src/apideck_unify/models/invoicesfilter.py @@ -17,6 +17,8 @@ class InvoicesFilterTypedDict(TypedDict): r"""Invoice number to search for""" supplier_id: NotRequired[str] r"""Supplier ID to filter invoices by""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class InvoicesFilter(BaseModel): @@ -32,3 +34,6 @@ class InvoicesFilter(BaseModel): supplier_id: Annotated[Optional[str], FieldMetadata(query=True)] = None r"""Supplier ID to filter invoices by""" + + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" diff --git a/src/apideck_unify/models/journalentriesfilter.py b/src/apideck_unify/models/journalentriesfilter.py index bc033075..c0bb2111 100644 --- a/src/apideck_unify/models/journalentriesfilter.py +++ b/src/apideck_unify/models/journalentriesfilter.py @@ -23,9 +23,20 @@ class JournalEntriesFilterStatus(str, Enum, metaclass=utils.OpenEnumMeta): OTHER = "other" +class JournalEntriesFilterScope(str, Enum, metaclass=utils.OpenEnumMeta): + r"""Connector-specific scope hint that controls which downstream source backs the read. On Xero, `manual` reads from `ManualJournals` (free in every tier), while `system` reads from `Journals` (the full general ledger view including manual journal postings, paid post 2026-03-02). Omitting the filter is equivalent to `system` and preserves the legacy default. Only honored on connectors where the distinction is exposed; ignored elsewhere.""" + + MANUAL = "manual" + SYSTEM = "system" + + class JournalEntriesFilterTypedDict(TypedDict): updated_since: NotRequired[datetime] status: NotRequired[JournalEntriesFilterStatus] + scope: NotRequired[JournalEntriesFilterScope] + r"""Connector-specific scope hint that controls which downstream source backs the read. On Xero, `manual` reads from `ManualJournals` (free in every tier), while `system` reads from `Journals` (the full general ledger view including manual journal postings, paid post 2026-03-02). Omitting the filter is equivalent to `system` and preserves the legacy default. Only honored on connectors where the distinction is exposed; ignored elsewhere.""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class JournalEntriesFilter(BaseModel): @@ -39,6 +50,18 @@ class JournalEntriesFilter(BaseModel): FieldMetadata(query=True), ] = None + scope: Annotated[ + Annotated[ + Optional[JournalEntriesFilterScope], + PlainValidator(validate_open_enum(False)), + ], + FieldMetadata(query=True), + ] = None + r"""Connector-specific scope hint that controls which downstream source backs the read. On Xero, `manual` reads from `ManualJournals` (free in every tier), while `system` reads from `Journals` (the full general ledger view including manual journal postings, paid post 2026-03-02). Omitting the filter is equivalent to `system` and preserves the legacy default. Only honored on connectors where the distinction is exposed; ignored elsewhere.""" + + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("status") def serialize_status(self, value): if isinstance(value, str): @@ -47,3 +70,12 @@ def serialize_status(self, value): except ValueError: return value return value + + @field_serializer("scope") + def serialize_scope(self, value): + if isinstance(value, str): + try: + return models.JournalEntriesFilterScope(value) + except ValueError: + return value + return value diff --git a/src/apideck_unify/models/ledgeraccountsfilter.py b/src/apideck_unify/models/ledgeraccountsfilter.py index 2c3b3d08..6f000099 100644 --- a/src/apideck_unify/models/ledgeraccountsfilter.py +++ b/src/apideck_unify/models/ledgeraccountsfilter.py @@ -42,6 +42,8 @@ class LedgerAccountsFilterTypedDict(TypedDict): r"""Filter by account classification.""" status: NotRequired[LedgerAccountsFilterStatus] r"""Filter by account status.""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class LedgerAccountsFilter(BaseModel): @@ -65,6 +67,9 @@ class LedgerAccountsFilter(BaseModel): ] = None r"""Filter by account status.""" + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("classification") def serialize_classification(self, value): if isinstance(value, str): diff --git a/src/apideck_unify/models/paymentsfilter.py b/src/apideck_unify/models/paymentsfilter.py index f7e03101..996b1149 100644 --- a/src/apideck_unify/models/paymentsfilter.py +++ b/src/apideck_unify/models/paymentsfilter.py @@ -44,6 +44,8 @@ class PaymentsFilterTypedDict(TypedDict): type: NotRequired[PaymentsFilterType] status: NotRequired[PaymentsFilterPaymentStatus] r"""Filter by payment status""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class PaymentsFilter(BaseModel): @@ -74,6 +76,9 @@ class PaymentsFilter(BaseModel): ] = None r"""Filter by payment status""" + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("type") def serialize_type(self, value): if isinstance(value, str): diff --git a/src/apideck_unify/models/projectsfilter.py b/src/apideck_unify/models/projectsfilter.py index cf9695be..93c8d76a 100644 --- a/src/apideck_unify/models/projectsfilter.py +++ b/src/apideck_unify/models/projectsfilter.py @@ -34,6 +34,8 @@ class ProjectsFilterTypedDict(TypedDict): r"""Filter projects by customer ID""" updated_since: NotRequired[datetime] r"""Return projects modified after this date""" + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class ProjectsFilter(BaseModel): @@ -52,6 +54,9 @@ class ProjectsFilter(BaseModel): updated_since: Annotated[Optional[datetime], FieldMetadata(query=True)] = None r"""Return projects modified after this date""" + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" + @field_serializer("status") def serialize_status(self, value): if isinstance(value, str): diff --git a/src/apideck_unify/models/purchaseordersfilter.py b/src/apideck_unify/models/purchaseordersfilter.py index bad9d27d..fc6fb98f 100644 --- a/src/apideck_unify/models/purchaseordersfilter.py +++ b/src/apideck_unify/models/purchaseordersfilter.py @@ -11,9 +11,14 @@ class PurchaseOrdersFilterTypedDict(TypedDict): updated_since: NotRequired[datetime] supplier_id: NotRequired[str] + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class PurchaseOrdersFilter(BaseModel): updated_since: Annotated[Optional[datetime], FieldMetadata(query=True)] = None supplier_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the record belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" diff --git a/src/apideck_unify/models/quotesfilter.py b/src/apideck_unify/models/quotesfilter.py new file mode 100644 index 00000000..b550fea6 --- /dev/null +++ b/src/apideck_unify/models/quotesfilter.py @@ -0,0 +1,24 @@ +"""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 typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict + + +class QuotesFilterTypedDict(TypedDict): + updated_since: NotRequired[datetime] + created_since: NotRequired[datetime] + number: NotRequired[str] + r"""Quote number to search for""" + + +class QuotesFilter(BaseModel): + updated_since: Annotated[Optional[datetime], FieldMetadata(query=True)] = None + + created_since: Annotated[Optional[datetime], FieldMetadata(query=True)] = None + + number: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Quote number to search for""" diff --git a/src/apideck_unify/models/suppliersfilter.py b/src/apideck_unify/models/suppliersfilter.py index eb1cbd50..d19538e6 100644 --- a/src/apideck_unify/models/suppliersfilter.py +++ b/src/apideck_unify/models/suppliersfilter.py @@ -20,6 +20,8 @@ class SuppliersFilterTypedDict(TypedDict): email: NotRequired[str] r"""Email of supplier to search for""" updated_since: NotRequired[datetime] + subsidiary_id: NotRequired[str] + r"""Filter by the subsidiary (legal entity) the supplier's primary subsidiary belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" class SuppliersFilter(BaseModel): @@ -39,3 +41,6 @@ class SuppliersFilter(BaseModel): r"""Email of supplier to search for""" updated_since: Annotated[Optional[datetime], FieldMetadata(query=True)] = None + + subsidiary_id: Annotated[Optional[str], FieldMetadata(query=True)] = None + r"""Filter by the subsidiary (legal entity) the supplier's primary subsidiary belongs to. Only honored on connectors that support multi-entity scoping (e.g. NetSuite OneWorld); ignored elsewhere.""" diff --git a/src/apideck_unify/models/webhookeventtype.py b/src/apideck_unify/models/webhookeventtype.py index 28a57f2b..caf35da7 100644 --- a/src/apideck_unify/models/webhookeventtype.py +++ b/src/apideck_unify/models/webhookeventtype.py @@ -39,6 +39,8 @@ class WebhookEventType(str, Enum, metaclass=utils.OpenEnumMeta): VAULT_CONNECTION_TOKEN_REFRESH_RECOVERED = ( "vault.connection.token_refresh.recovered" ) + VAULT_CONNECTION_DOWNSTREAM_DEGRADED = "vault.connection.downstream.degraded" + VAULT_CONNECTION_DOWNSTREAM_RECOVERED = "vault.connection.downstream.recovered" ATS_JOB_CREATED = "ats.job.created" ATS_JOB_UPDATED = "ats.job.updated" ATS_JOB_DELETED = "ats.job.deleted" diff --git a/src/apideck_unify/quotes.py b/src/apideck_unify/quotes.py index 8daf7d47..64cde0fb 100644 --- a/src/apideck_unify/quotes.py +++ b/src/apideck_unify/quotes.py @@ -22,6 +22,9 @@ def list( company_id: Optional[str] = None, cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, + filter_: Optional[ + Union[models.QuotesFilter, models.QuotesFilterTypedDict] + ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -38,6 +41,7 @@ def list( :param company_id: The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. :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 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 @@ -61,6 +65,7 @@ def list( company_id=company_id, cursor=cursor, limit=limit, + filter_=utils.get_pydantic_model(filter_, Optional[models.QuotesFilter]), ) req = self._build_request( @@ -129,6 +134,7 @@ def next_func() -> Optional[models.AccountingQuotesAllResponse]: company_id=company_id, cursor=next_cursor, limit=limit, + filter_=filter_, retries=retries, ) @@ -193,6 +199,9 @@ async def list_async( company_id: Optional[str] = None, cursor: OptionalNullable[str] = UNSET, limit: Optional[int] = 20, + filter_: Optional[ + Union[models.QuotesFilter, models.QuotesFilterTypedDict] + ] = None, retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, @@ -209,6 +218,7 @@ async def list_async( :param company_id: The ID of the company to scope requests to. For connectors that support multi-company, this overrides the default company configured in connection settings. :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 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 @@ -232,6 +242,7 @@ async def list_async( company_id=company_id, cursor=cursor, limit=limit, + filter_=utils.get_pydantic_model(filter_, Optional[models.QuotesFilter]), ) req = self._build_request_async( @@ -300,6 +311,7 @@ def next_func() -> Optional[models.AccountingQuotesAllResponse]: company_id=company_id, cursor=next_cursor, limit=limit, + filter_=filter_, retries=retries, )