diff --git a/bank-feeds/.speakeasy/gen.lock b/bank-feeds/.speakeasy/gen.lock index 70b0cf096..e89a88ff2 100755 --- a/bank-feeds/.speakeasy/gen.lock +++ b/bank-feeds/.speakeasy/gen.lock @@ -1,12 +1,12 @@ lockVersion: 2.0.0 id: 07093ad1-99d8-4bbd-a29c-a624e1b0e25a management: - docChecksum: b095b0a347cf654b362ab0929e984eb2 + docChecksum: 3a0b899f2dc3766b39e4fd3e931ebe0c docVersion: 3.0.0 speakeasyVersion: internal - generationVersion: 2.228.3 - releaseVersion: 6.0.0 - configChecksum: 3eb45974c86db9d25e88242a656ed13a + generationVersion: 2.230.3 + releaseVersion: 6.0.1 + configChecksum: 6e0bf71d5591a041364a525f826b1966 repoURL: https://github.com/codatio/client-sdk-python.git repoSubDirectory: bank-feeds installationURL: https://github.com/codatio/client-sdk-python.git#subdirectory=bank-feeds @@ -27,7 +27,9 @@ generatedFiles: - src/codatbankfeeds/connections.py - src/codatbankfeeds/account_mapping.py - src/codatbankfeeds/source_accounts.py + - src/codatbankfeeds/bank_accounts.py - src/codatbankfeeds/transactions.py + - src/codatbankfeeds/configuration.py - src/codatbankfeeds/sdk.py - pylintrc - setup.py @@ -55,9 +57,12 @@ generatedFiles: - src/codatbankfeeds/models/operations/generate_credentials.py - src/codatbankfeeds/models/operations/list_source_accounts.py - src/codatbankfeeds/models/operations/update_source_account.py + - src/codatbankfeeds/models/operations/list_bank_accounts.py - src/codatbankfeeds/models/operations/create_bank_transactions.py - src/codatbankfeeds/models/operations/get_create_operation.py - src/codatbankfeeds/models/operations/list_create_operations.py + - src/codatbankfeeds/models/operations/get_configuration.py + - src/codatbankfeeds/models/operations/set_configuration.py - src/codatbankfeeds/models/shared/zero.py - src/codatbankfeeds/models/shared/company.py - src/codatbankfeeds/models/shared/connection.py @@ -74,6 +79,7 @@ generatedFiles: - src/codatbankfeeds/models/shared/targetaccountoption.py - src/codatbankfeeds/models/shared/sourceaccount.py - src/codatbankfeeds/models/shared/bankaccountcredentials.py + - src/codatbankfeeds/models/shared/bankaccounts.py - src/codatbankfeeds/models/shared/createbanktransactionsresponse.py - src/codatbankfeeds/models/shared/validation.py - src/codatbankfeeds/models/shared/validationitem.py @@ -86,6 +92,15 @@ generatedFiles: - src/codatbankfeeds/models/shared/pushoperationref.py - src/codatbankfeeds/models/shared/pushoperation.py - src/codatbankfeeds/models/shared/pushoperations.py + - src/codatbankfeeds/models/shared/configuration.py + - src/codatbankfeeds/models/shared/configurationschedule.py + - src/codatbankfeeds/models/shared/syncconfiguration.py + - src/codatbankfeeds/models/shared/syncasexpenses.py + - src/codatbankfeeds/models/shared/configurationsupplier.py + - src/codatbankfeeds/models/shared/configurationcontactref.py + - src/codatbankfeeds/models/shared/configurationcustomer.py + - src/codatbankfeeds/models/shared/bankaccountoption.py + - src/codatbankfeeds/models/shared/syncasbankfeeds.py - src/codatbankfeeds/models/shared/security.py - src/codatbankfeeds/models/shared/clientratelimitreachedwebhook.py - src/codatbankfeeds/models/shared/clientratelimitreachedwebhookdata.py @@ -136,12 +151,18 @@ generatedFiles: - docs/models/operations/listsourceaccountsresponse.md - docs/models/operations/updatesourceaccountrequest.md - docs/models/operations/updatesourceaccountresponse.md + - docs/models/operations/listbankaccountsrequest.md + - docs/models/operations/listbankaccountsresponse.md - docs/models/operations/createbanktransactionsrequest.md - docs/models/operations/createbanktransactionsresponse.md - docs/models/operations/getcreateoperationrequest.md - docs/models/operations/getcreateoperationresponse.md - docs/models/operations/listcreateoperationsrequest.md - docs/models/operations/listcreateoperationsresponse.md + - docs/models/operations/getconfigurationrequest.md + - docs/models/operations/getconfigurationresponse.md + - docs/models/operations/setconfigurationrequest.md + - docs/models/operations/setconfigurationresponse.md - docs/models/shared/zero.md - docs/models/shared/groupreference.md - docs/models/shared/company.md @@ -160,6 +181,11 @@ generatedFiles: - docs/models/shared/targetaccountoption.md - docs/models/shared/sourceaccount.md - docs/models/shared/bankaccountcredentials.md + - docs/models/shared/bankaccounttype.md + - docs/models/shared/metadata.md + - docs/models/shared/supplementaldata.md + - docs/models/shared/accountingbankaccount.md + - docs/models/shared/bankaccounts.md - docs/models/shared/createbanktransactionsresponse.md - docs/models/shared/validation.md - docs/models/shared/validationitem.md @@ -173,6 +199,15 @@ generatedFiles: - docs/models/shared/pushoperationref.md - docs/models/shared/pushoperation.md - docs/models/shared/pushoperations.md + - docs/models/shared/configuration.md + - docs/models/shared/configurationschedule.md + - docs/models/shared/syncconfiguration.md + - docs/models/shared/syncasexpenses.md + - docs/models/shared/configurationsupplier.md + - docs/models/shared/configurationcontactref.md + - docs/models/shared/configurationcustomer.md + - docs/models/shared/bankaccountoption.md + - docs/models/shared/syncasbankfeeds.md - docs/models/shared/security.md - docs/models/shared/clientratelimitreachedwebhook.md - docs/models/shared/clientratelimitreachedwebhookdata.md @@ -187,6 +222,8 @@ generatedFiles: - docs/sdks/connections/README.md - docs/sdks/accountmapping/README.md - docs/sdks/sourceaccounts/README.md + - docs/sdks/bankaccounts/README.md - docs/sdks/transactions/README.md + - docs/sdks/configuration/README.md - USAGE.md - .gitattributes diff --git a/bank-feeds/README.md b/bank-feeds/README.md index 1c3fa159e..5c9912672 100755 --- a/bank-feeds/README.md +++ b/bank-feeds/README.md @@ -79,11 +79,20 @@ if res.company is not None: * [list](docs/sdks/sourceaccounts/README.md#list) - List source accounts * [update](docs/sdks/sourceaccounts/README.md#update) - Update source account +### [bank_accounts](docs/sdks/bankaccounts/README.md) + +* [list](docs/sdks/bankaccounts/README.md#list) - List bank accounts + ### [transactions](docs/sdks/transactions/README.md) * [create](docs/sdks/transactions/README.md#create) - Create bank transactions * [get_create_operation](docs/sdks/transactions/README.md#get_create_operation) - Get create operation * [list_create_operations](docs/sdks/transactions/README.md#list_create_operations) - List create operations + +### [configuration](docs/sdks/configuration/README.md) + +* [get](docs/sdks/configuration/README.md#get) - Get configuration +* [set](docs/sdks/configuration/README.md#set) - Set configuration diff --git a/bank-feeds/RELEASES.md b/bank-feeds/RELEASES.md index 60dafc2bb..2cc8d60ac 100644 --- a/bank-feeds/RELEASES.md +++ b/bank-feeds/RELEASES.md @@ -758,4 +758,14 @@ Based on: ### Generated - [python v6.0.0] bank-feeds ### Releases -- [PyPI v6.0.0] https://pypi.org/project/codat-bankfeeds/6.0.0 - bank-feeds \ No newline at end of file +- [PyPI v6.0.0] https://pypi.org/project/codat-bankfeeds/6.0.0 - bank-feeds + +## 2024-01-10 16:48:06 +### Changes +Based on: +- OpenAPI Doc 3.0.0 https://raw.githubusercontent.com/codatio/oas/main/yaml/Codat-Bank-Feeds.yaml +- Speakeasy CLI 1.134.1 (2.230.3) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v6.0.1] bank-feeds +### Releases +- [PyPI v6.0.1] https://pypi.org/project/codat-bankfeeds/6.0.1 - bank-feeds \ No newline at end of file diff --git a/bank-feeds/docs/models/operations/getconfigurationrequest.md b/bank-feeds/docs/models/operations/getconfigurationrequest.md new file mode 100644 index 000000000..04c0fd3b2 --- /dev/null +++ b/bank-feeds/docs/models/operations/getconfigurationrequest.md @@ -0,0 +1,8 @@ +# GetConfigurationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | +| `company_id` | *str* | :heavy_check_mark: | Unique identifier for a company. | 8a210b68-6988-11ed-a1eb-0242ac120002 | \ No newline at end of file diff --git a/bank-feeds/docs/models/operations/getconfigurationresponse.md b/bank-feeds/docs/models/operations/getconfigurationresponse.md new file mode 100644 index 000000000..a7765d62a --- /dev/null +++ b/bank-feeds/docs/models/operations/getconfigurationresponse.md @@ -0,0 +1,11 @@ +# GetConfigurationResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `configuration` | [Optional[shared.Configuration]](../../models/shared/configuration.md) | :heavy_minus_sign: | Success | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/bank-feeds/docs/models/operations/listbankaccountsrequest.md b/bank-feeds/docs/models/operations/listbankaccountsrequest.md new file mode 100644 index 000000000..3a9841d89 --- /dev/null +++ b/bank-feeds/docs/models/operations/listbankaccountsrequest.md @@ -0,0 +1,13 @@ +# ListBankAccountsRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- | +| `company_id` | *str* | :heavy_check_mark: | Unique identifier for a company. | 8a210b68-6988-11ed-a1eb-0242ac120002 | +| `connection_id` | *str* | :heavy_check_mark: | Unique identifier for a connection. | 2e9d2c44-f675-40ba-8049-353bfcb5e171 | +| `order_by` | *Optional[str]* | :heavy_minus_sign: | Field to order results by. [Read more](https://docs.codat.io/using-the-api/ordering-results). | -modifiedDate | +| `page` | *Optional[int]* | :heavy_minus_sign: | Page number. [Read more](https://docs.codat.io/using-the-api/paging). | 1 | +| `page_size` | *Optional[int]* | :heavy_minus_sign: | Number of records to return in a page. [Read more](https://docs.codat.io/using-the-api/paging). | 100 | +| `query` | *Optional[str]* | :heavy_minus_sign: | Codat query string. [Read more](https://docs.codat.io/using-the-api/querying). | | \ No newline at end of file diff --git a/bank-feeds/docs/models/operations/listbankaccountsresponse.md b/bank-feeds/docs/models/operations/listbankaccountsresponse.md new file mode 100644 index 000000000..bfbf080f5 --- /dev/null +++ b/bank-feeds/docs/models/operations/listbankaccountsresponse.md @@ -0,0 +1,11 @@ +# ListBankAccountsResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `bank_accounts` | [Optional[shared.BankAccounts]](../../models/shared/bankaccounts.md) | :heavy_minus_sign: | Success | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/bank-feeds/docs/models/operations/setconfigurationrequest.md b/bank-feeds/docs/models/operations/setconfigurationrequest.md new file mode 100644 index 000000000..975941ea0 --- /dev/null +++ b/bank-feeds/docs/models/operations/setconfigurationrequest.md @@ -0,0 +1,9 @@ +# SetConfigurationRequest + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | +| `configuration` | [Optional[shared.Configuration]](../../models/shared/configuration.md) | :heavy_minus_sign: | N/A | | +| `company_id` | *str* | :heavy_check_mark: | Unique identifier for a company. | 8a210b68-6988-11ed-a1eb-0242ac120002 | \ No newline at end of file diff --git a/bank-feeds/docs/models/operations/setconfigurationresponse.md b/bank-feeds/docs/models/operations/setconfigurationresponse.md new file mode 100644 index 000000000..22860b728 --- /dev/null +++ b/bank-feeds/docs/models/operations/setconfigurationresponse.md @@ -0,0 +1,11 @@ +# SetConfigurationResponse + + +## Fields + +| Field | Type | Required | Description | +| ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | +| `configuration` | [Optional[shared.Configuration]](../../models/shared/configuration.md) | :heavy_minus_sign: | Success | +| `content_type` | *str* | :heavy_check_mark: | HTTP response content type for this operation | +| `status_code` | *int* | :heavy_check_mark: | HTTP response status code for this operation | +| `raw_response` | [requests.Response](https://requests.readthedocs.io/en/latest/api/#requests.Response) | :heavy_check_mark: | Raw HTTP response; suitable for custom response parsing | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/accountingbankaccount.md b/bank-feeds/docs/models/shared/accountingbankaccount.md new file mode 100644 index 000000000..f61922a6f --- /dev/null +++ b/bank-feeds/docs/models/shared/accountingbankaccount.md @@ -0,0 +1,40 @@ +# AccountingBankAccount + +> **Accessing Bank Accounts through Banking API** +> +> This datatype was originally used for accessing bank account data both in accounting integrations and open banking aggregators. +> +> To view bank account data through the Banking API, please refer to the new datatype [here](https://docs.codat.io/bank-feeds-api#/schemas/Account) + +> View the coverage for bank accounts in the Data coverage explorer. + +## Overview + +A list of bank accounts associated with a company and a specific data connection. + +Bank accounts data includes: +* The name and ID of the account in the accounting platform. +* The currency and balance of the account. +* The sort code and account number. + + +## Fields + +| Field | Type | Required | Description | Example | +| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `account_name` | *Optional[str]* | :heavy_minus_sign: | Name of the bank account in the accounting platform. | | +| `account_number` | *Optional[str]* | :heavy_minus_sign: | Account number for the bank account.

Xero integrations
Only a UK account number shows for bank accounts with GBP currency and a combined total of sort code and account number that equals 14 digits, For non-GBP accounts, the full bank account number is populated.

FreeAgent integrations
For Credit accounts, only the last four digits are required. For other types, the field is optional. | | +| `account_type` | [Optional[shared.BankAccountType]](../../models/shared/bankaccounttype.md) | :heavy_minus_sign: | The type of transactions and balances on the account.
For Credit accounts, positive balances are liabilities, and positive transactions **reduce** liabilities.
For Debit accounts, positive balances are assets, and positive transactions **increase** assets. | | +| `available_balance` | *Optional[Decimal]* | :heavy_minus_sign: | Total available balance of the bank account as reported by the underlying data source. This may take into account overdrafts or pending transactions for example. | | +| `balance` | *Optional[Decimal]* | :heavy_minus_sign: | Balance of the bank account. | | +| `currency` | *Optional[str]* | :heavy_minus_sign: | The currency data type in Codat is the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code, e.g. _GBP_.

## Unknown currencies

In line with the ISO 4217 specification, the code _XXX_ is used when the data source does not return a currency for a transaction.

There are only a very small number of edge cases where this currency code is returned by the Codat system. | GBP | +| `i_ban` | *Optional[str]* | :heavy_minus_sign: | International bank account number of the account. Often used when making or receiving international payments. | | +| `id` | *Optional[str]* | :heavy_minus_sign: | Identifier for the account, unique for the company in the accounting platform. | | +| `institution` | *Optional[str]* | :heavy_minus_sign: | The institution of the bank account. | | +| `metadata` | [Optional[shared.Metadata]](../../models/shared/metadata.md) | :heavy_minus_sign: | N/A | | +| `modified_date` | *Optional[str]* | :heavy_minus_sign: | N/A | 2022-10-23 00:00:00 +0000 UTC | +| `nominal_code` | *Optional[str]* | :heavy_minus_sign: | Code used to identify each nominal account for a business. | | +| `overdraft_limit` | *Optional[Decimal]* | :heavy_minus_sign: | Pre-arranged overdraft limit of the account.

The value is always positive. For example, an overdraftLimit of `1000` means that the balance of the account can go down to `-1000`. | | +| `sort_code` | *Optional[str]* | :heavy_minus_sign: | Sort code for the bank account.

Xero integrations
The sort code is only displayed when the currency = GBP and the sort code and account number sum to 14 digits. For non-GBP accounts, this field is not populated. | | +| `source_modified_date` | *Optional[str]* | :heavy_minus_sign: | N/A | 2022-10-23 00:00:00 +0000 UTC | +| `supplemental_data` | [Optional[shared.SupplementalData]](../../models/shared/supplementaldata.md) | :heavy_minus_sign: | Supplemental data is additional data you can include in our standard data types.

It is referenced as a configured dynamic key value pair that is unique to the accounting platform. [Learn more](https://docs.codat.io/using-the-api/supplemental-data/overview) about supplemental data. | | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/bankaccountoption.md b/bank-feeds/docs/models/shared/bankaccountoption.md new file mode 100644 index 000000000..6861eaaeb --- /dev/null +++ b/bank-feeds/docs/models/shared/bankaccountoption.md @@ -0,0 +1,10 @@ +# BankAccountOption + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `account_type` | *Optional[str]* | :heavy_minus_sign: | The type of account. | +| `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the bank account. | +| `name` | *Optional[str]* | :heavy_minus_sign: | Name of bank account. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/bankaccounts.md b/bank-feeds/docs/models/shared/bankaccounts.md new file mode 100644 index 000000000..f19c089e5 --- /dev/null +++ b/bank-feeds/docs/models/shared/bankaccounts.md @@ -0,0 +1,12 @@ +# BankAccounts + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `links` | [shared.Links](../../models/shared/links.md) | :heavy_check_mark: | N/A | +| `page_number` | *int* | :heavy_check_mark: | Current page number. | +| `page_size` | *int* | :heavy_check_mark: | Number of items to return in results array. | +| `results` | List[[shared.AccountingBankAccount](../../models/shared/accountingbankaccount.md)] | :heavy_minus_sign: | N/A | +| `total_results` | *int* | :heavy_check_mark: | Total number of items. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/bankaccounttype.md b/bank-feeds/docs/models/shared/bankaccounttype.md new file mode 100644 index 000000000..a995a4e52 --- /dev/null +++ b/bank-feeds/docs/models/shared/bankaccounttype.md @@ -0,0 +1,14 @@ +# BankAccountType + +The type of transactions and balances on the account. +For Credit accounts, positive balances are liabilities, and positive transactions **reduce** liabilities. +For Debit accounts, positive balances are assets, and positive transactions **increase** assets. + + +## Values + +| Name | Value | +| --------- | --------- | +| `UNKNOWN` | Unknown | +| `CREDIT` | Credit | +| `DEBIT` | Debit | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/configuration.md b/bank-feeds/docs/models/shared/configuration.md new file mode 100644 index 000000000..8cd3956fd --- /dev/null +++ b/bank-feeds/docs/models/shared/configuration.md @@ -0,0 +1,13 @@ +# Configuration + + +## Fields + +| Field | Type | Required | Description | Example | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `accounting_software_company_name` | *Optional[str]* | :heavy_minus_sign: | The company name defined in the accounting platform. | | +| `company_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for your SMB in Codat. | 8a210b68-6988-11ed-a1eb-0242ac120002 | +| `configuration` | [Optional[shared.SyncConfiguration]](../../models/shared/syncconfiguration.md) | :heavy_minus_sign: | N/A | | +| `configured` | *Optional[bool]* | :heavy_minus_sign: | True if the company has been configured. | | +| `enabled` | *Optional[bool]* | :heavy_minus_sign: | Enabled or disable bank feeds. | | +| `schedule` | [Optional[shared.ConfigurationSchedule]](../../models/shared/configurationschedule.md) | :heavy_minus_sign: | N/A | | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/configurationcontactref.md b/bank-feeds/docs/models/shared/configurationcontactref.md new file mode 100644 index 000000000..1c20622f0 --- /dev/null +++ b/bank-feeds/docs/models/shared/configurationcontactref.md @@ -0,0 +1,9 @@ +# ConfigurationContactRef + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the supplier/customer. | +| `name` | *Optional[str]* | :heavy_minus_sign: | The supplier/customer's name. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/configurationcustomer.md b/bank-feeds/docs/models/shared/configurationcustomer.md new file mode 100644 index 000000000..91dfacb9e --- /dev/null +++ b/bank-feeds/docs/models/shared/configurationcustomer.md @@ -0,0 +1,9 @@ +# ConfigurationCustomer + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `customer_options` | List[[shared.ConfigurationContactRef](../../models/shared/configurationcontactref.md)] | :heavy_minus_sign: | N/A | +| `selected_customer_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the customer. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/configurationschedule.md b/bank-feeds/docs/models/shared/configurationschedule.md new file mode 100644 index 000000000..1bc23ea63 --- /dev/null +++ b/bank-feeds/docs/models/shared/configurationschedule.md @@ -0,0 +1,12 @@ +# ConfigurationSchedule + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | --------------------------------------------------------- | +| `frequency_options` | List[*str*] | :heavy_minus_sign: | The available sync frequencies. | +| `selected_frequency` | *Optional[str]* | :heavy_minus_sign: | The sync frequency. | +| `start_date` | *Optional[str]* | :heavy_minus_sign: | The datetime in UTC you want to start syncing from. | +| `sync_hour_utc` | *Optional[int]* | :heavy_minus_sign: | The hour in which the sync is initiated. | +| `time_zone_iana_id` | *Optional[str]* | :heavy_minus_sign: | The [IANA](https://www.iana.org/time-zones) time zone ID. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/configurationsupplier.md b/bank-feeds/docs/models/shared/configurationsupplier.md new file mode 100644 index 000000000..5cbd3f977 --- /dev/null +++ b/bank-feeds/docs/models/shared/configurationsupplier.md @@ -0,0 +1,9 @@ +# ConfigurationSupplier + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `selected_supplier_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the supplier. | +| `supplier_options` | List[[shared.ConfigurationContactRef](../../models/shared/configurationcontactref.md)] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/metadata.md b/bank-feeds/docs/models/shared/metadata.md new file mode 100644 index 000000000..cb411f043 --- /dev/null +++ b/bank-feeds/docs/models/shared/metadata.md @@ -0,0 +1,8 @@ +# Metadata + + +## Fields + +| Field | Type | Required | Description | +| ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | +| `is_deleted` | *Optional[bool]* | :heavy_minus_sign: | Indicates whether the record has been deleted in the third-party system this record originated from. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/supplementaldata.md b/bank-feeds/docs/models/shared/supplementaldata.md new file mode 100644 index 000000000..f9d04fc2b --- /dev/null +++ b/bank-feeds/docs/models/shared/supplementaldata.md @@ -0,0 +1,12 @@ +# SupplementalData + +Supplemental data is additional data you can include in our standard data types. + +It is referenced as a configured dynamic key value pair that is unique to the accounting platform. [Learn more](https://docs.codat.io/using-the-api/supplemental-data/overview) about supplemental data. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------- | --------------------------- | --------------------------- | --------------------------- | +| `content` | Dict[str, Dict[str, *Any*]] | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/syncasbankfeeds.md b/bank-feeds/docs/models/shared/syncasbankfeeds.md new file mode 100644 index 000000000..139db5eb2 --- /dev/null +++ b/bank-feeds/docs/models/shared/syncasbankfeeds.md @@ -0,0 +1,10 @@ +# SyncAsBankFeeds + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `bank_account_options` | List[[shared.BankAccountOption](../../models/shared/bankaccountoption.md)] | :heavy_minus_sign: | N/A | +| `enable_sync` | *Optional[bool]* | :heavy_minus_sign: | True if bank feeds sync is enabled. | +| `selected_bank_account_id` | *Optional[str]* | :heavy_minus_sign: | The bank account ID being synced. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/syncasexpenses.md b/bank-feeds/docs/models/shared/syncasexpenses.md new file mode 100644 index 000000000..c1e680f75 --- /dev/null +++ b/bank-feeds/docs/models/shared/syncasexpenses.md @@ -0,0 +1,12 @@ +# SyncAsExpenses + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | +| `bank_account_options` | List[[shared.BankAccountOption](../../models/shared/bankaccountoption.md)] | :heavy_minus_sign: | N/A | +| `customer` | [Optional[shared.ConfigurationCustomer]](../../models/shared/configurationcustomer.md) | :heavy_minus_sign: | N/A | +| `enable_sync` | *Optional[bool]* | :heavy_minus_sign: | True if expense sync is enabled. | +| `selected_bank_account_id` | *Optional[str]* | :heavy_minus_sign: | The bank account ID being synced. | +| `supplier` | [Optional[shared.ConfigurationSupplier]](../../models/shared/configurationsupplier.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/syncconfiguration.md b/bank-feeds/docs/models/shared/syncconfiguration.md new file mode 100644 index 000000000..1713ee16c --- /dev/null +++ b/bank-feeds/docs/models/shared/syncconfiguration.md @@ -0,0 +1,9 @@ +# SyncConfiguration + + +## Fields + +| Field | Type | Required | Description | +| -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| `sync_as_bank_feeds` | [Optional[shared.SyncAsBankFeeds]](../../models/shared/syncasbankfeeds.md) | :heavy_minus_sign: | N/A | +| `sync_as_expenses` | [Optional[shared.SyncAsExpenses]](../../models/shared/syncasexpenses.md) | :heavy_minus_sign: | N/A | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/bankaccounts/README.md b/bank-feeds/docs/sdks/bankaccounts/README.md new file mode 100644 index 000000000..d427e3808 --- /dev/null +++ b/bank-feeds/docs/sdks/bankaccounts/README.md @@ -0,0 +1,64 @@ +# BankAccounts +(*bank_accounts*) + +## Overview + +Access bank accounts in an SMBs accounting platform. + +### Available Operations + +* [list](#list) - List bank accounts + +## list + +The *List bank accounts* endpoint returns a list of [bank accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankAccount) for a given company's connection. + +[Bank accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankAccount) are financial accounts maintained by a bank or other financial institution. + +Before using this endpoint, you must have [retrieved data for the company](https://docs.codat.io/bank-feeds-api#/operations/refresh-company-data). + + +### Example Usage + +```python +import codatbankfeeds +from codatbankfeeds.models import operations, shared + +s = codatbankfeeds.CodatBankFeeds( + security=shared.Security( + auth_header="Basic BASE_64_ENCODED(API_KEY)", + ), +) + +req = operations.ListBankAccountsRequest( + company_id='8a210b68-6988-11ed-a1eb-0242ac120002', + connection_id='2e9d2c44-f675-40ba-8049-353bfcb5e171', + order_by='-modifiedDate', + page=1, + page_size=100, +) + +res = s.bank_accounts.list(req) + +if res.bank_accounts is not None: + # handle response + pass +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.ListBankAccountsRequest](../../models/operations/listbankaccountsrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + + +### Response + +**[operations.ListBankAccountsResponse](../../models/operations/listbankaccountsresponse.md)** +### Errors + +| Error Object | Status Code | Content Type | +| ----------------------------------- | ----------------------------------- | ----------------------------------- | +| errors.ErrorMessage | 400,401,402,403,404,409,429,500,503 | application/json | +| errors.SDKError | 4x-5xx | */* | diff --git a/bank-feeds/docs/sdks/configuration/README.md b/bank-feeds/docs/sdks/configuration/README.md new file mode 100644 index 000000000..d4a1bdd15 --- /dev/null +++ b/bank-feeds/docs/sdks/configuration/README.md @@ -0,0 +1,131 @@ +# Configuration +(*configuration*) + +## Overview + +Configure bank feeds for a company. + +### Available Operations + +* [get](#get) - Get configuration +* [set](#set) - Set configuration + +## get + +The *Get configuration* endpoint returns the current configuration for a given company ID. + +### Example Usage + +```python +import codatbankfeeds +from codatbankfeeds.models import operations, shared + +s = codatbankfeeds.CodatBankFeeds( + security=shared.Security( + auth_header="Basic BASE_64_ENCODED(API_KEY)", + ), +) + +req = operations.GetConfigurationRequest( + company_id='8a210b68-6988-11ed-a1eb-0242ac120002', +) + +res = s.configuration.get(req) + +if res.configuration is not None: + # handle response + pass +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.GetConfigurationRequest](../../models/operations/getconfigurationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + + +### Response + +**[operations.GetConfigurationResponse](../../models/operations/getconfigurationresponse.md)** +### Errors + +| Error Object | Status Code | Content Type | +| --------------------------- | --------------------------- | --------------------------- | +| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | +| errors.SDKError | 4x-5xx | */* | + +## set + +Use *Set configuration* endpoint to configure a given company ID. + +### Example Usage + +```python +import codatbankfeeds +from codatbankfeeds.models import operations, shared + +s = codatbankfeeds.CodatBankFeeds( + security=shared.Security( + auth_header="Basic BASE_64_ENCODED(API_KEY)", + ), +) + +req = operations.SetConfigurationRequest( + configuration=shared.Configuration( + company_id='8a210b68-6988-11ed-a1eb-0242ac120002', + configuration=shared.SyncConfiguration( + sync_as_bank_feeds=shared.SyncAsBankFeeds( + bank_account_options=[ + shared.BankAccountOption(), + ], + ), + sync_as_expenses=shared.SyncAsExpenses( + bank_account_options=[ + shared.BankAccountOption(), + ], + customer=shared.ConfigurationCustomer( + customer_options=[ + shared.ConfigurationContactRef(), + ], + ), + supplier=shared.ConfigurationSupplier( + supplier_options=[ + shared.ConfigurationContactRef(), + ], + ), + ), + ), + schedule=shared.ConfigurationSchedule( + frequency_options=[ + 'string', + ], + ), + ), + company_id='8a210b68-6988-11ed-a1eb-0242ac120002', +) + +res = s.configuration.set(req) + +if res.configuration is not None: + # handle response + pass +``` + +### Parameters + +| Parameter | Type | Required | Description | +| ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | +| `request` | [operations.SetConfigurationRequest](../../models/operations/setconfigurationrequest.md) | :heavy_check_mark: | The request object to use for the request. | +| `retries` | [Optional[utils.RetryConfig]](../../models/utils/retryconfig.md) | :heavy_minus_sign: | Configuration to override the default retry behavior of the client. | + + +### Response + +**[operations.SetConfigurationResponse](../../models/operations/setconfigurationresponse.md)** +### Errors + +| Error Object | Status Code | Content Type | +| --------------------------- | --------------------------- | --------------------------- | +| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | +| errors.SDKError | 4x-5xx | */* | diff --git a/bank-feeds/gen.yaml b/bank-feeds/gen.yaml index dbed26228..b7616033e 100644 --- a/bank-feeds/gen.yaml +++ b/bank-feeds/gen.yaml @@ -7,7 +7,7 @@ generation: nameResolutionDec2023: false telemetryEnabled: true python: - version: 6.0.0 + version: 6.0.1 author: Codat clientServerStatusCodesAsErrors: true description: Set up bank feeds from accounts in your application to supported accounting platforms. diff --git a/bank-feeds/setup.py b/bank-feeds/setup.py index e851a8b3f..dca9205e2 100644 --- a/bank-feeds/setup.py +++ b/bank-feeds/setup.py @@ -10,7 +10,7 @@ setuptools.setup( name="codat-bankfeeds", - version="6.0.0", + version="6.0.1", author="Codat", description="Set up bank feeds from accounts in your application to supported accounting platforms.", long_description=long_description, diff --git a/bank-feeds/src/codatbankfeeds/bank_accounts.py b/bank-feeds/src/codatbankfeeds/bank_accounts.py new file mode 100644 index 000000000..192c23f22 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/bank_accounts.py @@ -0,0 +1,76 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from .sdkconfiguration import SDKConfiguration +from codatbankfeeds import utils +from codatbankfeeds.models import errors, operations, shared +from typing import Optional + +class BankAccounts: + r"""Access bank accounts in an SMBs accounting platform.""" + sdk_configuration: SDKConfiguration + + def __init__(self, sdk_config: SDKConfiguration) -> None: + self.sdk_configuration = sdk_config + + + + def list(self, request: operations.ListBankAccountsRequest, retries: Optional[utils.RetryConfig] = None) -> operations.ListBankAccountsResponse: + r"""List bank accounts + The *List bank accounts* endpoint returns a list of [bank accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankAccount) for a given company's connection. + + [Bank accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankAccount) are financial accounts maintained by a bank or other financial institution. + + Before using this endpoint, you must have [retrieved data for the company](https://docs.codat.io/bank-feeds-api#/operations/refresh-company-data). + """ + base_url = utils.template_url(*self.sdk_configuration.get_server_details()) + + url = utils.generate_url(operations.ListBankAccountsRequest, base_url, '/companies/{companyId}/connections/{connectionId}/data/bankAccounts', request) + headers = {} + query_params = utils.get_query_params(operations.ListBankAccountsRequest, request) + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + + if callable(self.sdk_configuration.security): + client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + else: + client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + + global_retry_config = self.sdk_configuration.retry_config + retry_config = retries + if retry_config is None: + if global_retry_config: + retry_config = global_retry_config + else: + retry_config = utils.RetryConfig('backoff', utils.BackoffStrategy(500, 60000, 1.5, 3600000), True) + + def do_request(): + return client.request('GET', url, params=query_params, headers=headers) + + http_res = utils.retry(do_request, utils.Retries(retry_config, [ + '408', + '429', + '5XX' + ])) + content_type = http_res.headers.get('Content-Type') + + res = operations.ListBankAccountsResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + if http_res.status_code == 200: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[shared.BankAccounts]) + res.bank_accounts = out + else: + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code in [400, 401, 402, 403, 404, 409, 429, 500, 503]: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, errors.ErrorMessage) + out.raw_response = http_res + raise out + else: + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: + raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) + + return res + + \ No newline at end of file diff --git a/bank-feeds/src/codatbankfeeds/configuration.py b/bank-feeds/src/codatbankfeeds/configuration.py new file mode 100644 index 000000000..e0ac49406 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/configuration.py @@ -0,0 +1,130 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from .sdkconfiguration import SDKConfiguration +from codatbankfeeds import utils +from codatbankfeeds.models import errors, operations, shared +from typing import Optional + +class Configuration: + r"""Configure bank feeds for a company.""" + sdk_configuration: SDKConfiguration + + def __init__(self, sdk_config: SDKConfiguration) -> None: + self.sdk_configuration = sdk_config + + + + def get(self, request: operations.GetConfigurationRequest, retries: Optional[utils.RetryConfig] = None) -> operations.GetConfigurationResponse: + r"""Get configuration + The *Get configuration* endpoint returns the current configuration for a given company ID. + """ + base_url = utils.template_url(*self.sdk_configuration.get_server_details()) + + url = utils.generate_url(operations.GetConfigurationRequest, base_url, '/companies/{companyId}/sync/banking/config', request) + headers = {} + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + + if callable(self.sdk_configuration.security): + client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + else: + client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + + global_retry_config = self.sdk_configuration.retry_config + retry_config = retries + if retry_config is None: + if global_retry_config: + retry_config = global_retry_config + else: + retry_config = utils.RetryConfig('backoff', utils.BackoffStrategy(500, 60000, 1.5, 3600000), True) + + def do_request(): + return client.request('GET', url, headers=headers) + + http_res = utils.retry(do_request, utils.Retries(retry_config, [ + '408', + '429', + '5XX' + ])) + content_type = http_res.headers.get('Content-Type') + + res = operations.GetConfigurationResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + if http_res.status_code == 200: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[shared.Configuration]) + res.configuration = out + else: + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code in [401, 402, 403, 404, 429, 500, 503]: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, errors.ErrorMessage) + out.raw_response = http_res + raise out + else: + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: + raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) + + return res + + + + def set(self, request: operations.SetConfigurationRequest, retries: Optional[utils.RetryConfig] = None) -> operations.SetConfigurationResponse: + r"""Set configuration + Use *Set configuration* endpoint to configure a given company ID. + """ + base_url = utils.template_url(*self.sdk_configuration.get_server_details()) + + url = utils.generate_url(operations.SetConfigurationRequest, base_url, '/companies/{companyId}/sync/banking/config', request) + headers = {} + req_content_type, data, form = utils.serialize_request_body(request, operations.SetConfigurationRequest, "configuration", False, True, 'json') + if req_content_type not in ('multipart/form-data', 'multipart/mixed'): + headers['content-type'] = req_content_type + headers['Accept'] = 'application/json' + headers['user-agent'] = self.sdk_configuration.user_agent + + if callable(self.sdk_configuration.security): + client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security()) + else: + client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security) + + global_retry_config = self.sdk_configuration.retry_config + retry_config = retries + if retry_config is None: + if global_retry_config: + retry_config = global_retry_config + else: + retry_config = utils.RetryConfig('backoff', utils.BackoffStrategy(500, 60000, 1.5, 3600000), True) + + def do_request(): + return client.request('POST', url, data=data, files=form, headers=headers) + + http_res = utils.retry(do_request, utils.Retries(retry_config, [ + '408', + '429', + '5XX' + ])) + content_type = http_res.headers.get('Content-Type') + + res = operations.SetConfigurationResponse(status_code=http_res.status_code, content_type=content_type, raw_response=http_res) + + if http_res.status_code == 200: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, Optional[shared.Configuration]) + res.configuration = out + else: + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code in [401, 402, 403, 404, 429, 500, 503]: + if utils.match_content_type(content_type, 'application/json'): + out = utils.unmarshal_json(http_res.text, errors.ErrorMessage) + out.raw_response = http_res + raise out + else: + raise errors.SDKError(f'unknown content-type received: {content_type}', http_res.status_code, http_res.text, http_res) + elif http_res.status_code >= 400 and http_res.status_code < 500 or http_res.status_code >= 500 and http_res.status_code < 600: + raise errors.SDKError('API error occurred', http_res.status_code, http_res.text, http_res) + + return res + + \ No newline at end of file diff --git a/bank-feeds/src/codatbankfeeds/models/operations/__init__.py b/bank-feeds/src/codatbankfeeds/models/operations/__init__.py index 588a15144..53c867812 100644 --- a/bank-feeds/src/codatbankfeeds/models/operations/__init__.py +++ b/bank-feeds/src/codatbankfeeds/models/operations/__init__.py @@ -12,14 +12,17 @@ from .generate_credentials import * from .get_bank_account_mapping import * from .get_company import * +from .get_configuration import * from .get_connection import * from .get_create_operation import * +from .list_bank_accounts import * from .list_companies import * from .list_connections import * from .list_create_operations import * from .list_source_accounts import * +from .set_configuration import * from .unlink_connection import * from .update_company import * from .update_source_account import * -__all__ = ["CreateBankAccountMappingRequest","CreateBankAccountMappingResponse","CreateBankTransactionsRequest","CreateBankTransactionsResponse","CreateCompanyResponse","CreateConnectionRequest","CreateConnectionRequestBody","CreateConnectionResponse","CreateSourceAccountRequest","CreateSourceAccountResponse","DeleteBankFeedCredentialsRequest","DeleteBankFeedCredentialsResponse","DeleteCompanyRequest","DeleteCompanyResponse","DeleteConnectionRequest","DeleteConnectionResponse","DeleteSourceAccountRequest","DeleteSourceAccountResponse","GenerateCredentialsRequest","GenerateCredentialsResponse","GetBankAccountMappingRequest","GetBankAccountMappingResponse","GetCompanyRequest","GetCompanyResponse","GetConnectionRequest","GetConnectionResponse","GetCreateOperationRequest","GetCreateOperationResponse","ListCompaniesRequest","ListCompaniesResponse","ListConnectionsRequest","ListConnectionsResponse","ListCreateOperationsRequest","ListCreateOperationsResponse","ListSourceAccountsRequest","ListSourceAccountsResponse","UnlinkConnectionRequest","UnlinkConnectionResponse","UnlinkConnectionUpdateConnection","UpdateCompanyRequest","UpdateCompanyResponse","UpdateSourceAccountRequest","UpdateSourceAccountResponse"] +__all__ = ["CreateBankAccountMappingRequest","CreateBankAccountMappingResponse","CreateBankTransactionsRequest","CreateBankTransactionsResponse","CreateCompanyResponse","CreateConnectionRequest","CreateConnectionRequestBody","CreateConnectionResponse","CreateSourceAccountRequest","CreateSourceAccountResponse","DeleteBankFeedCredentialsRequest","DeleteBankFeedCredentialsResponse","DeleteCompanyRequest","DeleteCompanyResponse","DeleteConnectionRequest","DeleteConnectionResponse","DeleteSourceAccountRequest","DeleteSourceAccountResponse","GenerateCredentialsRequest","GenerateCredentialsResponse","GetBankAccountMappingRequest","GetBankAccountMappingResponse","GetCompanyRequest","GetCompanyResponse","GetConfigurationRequest","GetConfigurationResponse","GetConnectionRequest","GetConnectionResponse","GetCreateOperationRequest","GetCreateOperationResponse","ListBankAccountsRequest","ListBankAccountsResponse","ListCompaniesRequest","ListCompaniesResponse","ListConnectionsRequest","ListConnectionsResponse","ListCreateOperationsRequest","ListCreateOperationsResponse","ListSourceAccountsRequest","ListSourceAccountsResponse","SetConfigurationRequest","SetConfigurationResponse","UnlinkConnectionRequest","UnlinkConnectionResponse","UnlinkConnectionUpdateConnection","UpdateCompanyRequest","UpdateCompanyResponse","UpdateSourceAccountRequest","UpdateSourceAccountResponse"] diff --git a/bank-feeds/src/codatbankfeeds/models/operations/get_configuration.py b/bank-feeds/src/codatbankfeeds/models/operations/get_configuration.py new file mode 100644 index 000000000..3f8af7d63 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/operations/get_configuration.py @@ -0,0 +1,29 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from ...models.shared import configuration as shared_configuration +from typing import Optional + + +@dataclasses.dataclass +class GetConfigurationRequest: + company_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'companyId', 'style': 'simple', 'explode': False }}) + r"""Unique identifier for a company.""" + + + + +@dataclasses.dataclass +class GetConfigurationResponse: + content_type: str = dataclasses.field() + r"""HTTP response content type for this operation""" + raw_response: requests_http.Response = dataclasses.field() + r"""Raw HTTP response; suitable for custom response parsing""" + status_code: int = dataclasses.field() + r"""HTTP response status code for this operation""" + configuration: Optional[shared_configuration.Configuration] = dataclasses.field(default=None) + r"""Success""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/operations/list_bank_accounts.py b/bank-feeds/src/codatbankfeeds/models/operations/list_bank_accounts.py new file mode 100644 index 000000000..77fca9251 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/operations/list_bank_accounts.py @@ -0,0 +1,39 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from ...models.shared import bankaccounts as shared_bankaccounts +from typing import Optional + + +@dataclasses.dataclass +class ListBankAccountsRequest: + company_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'companyId', 'style': 'simple', 'explode': False }}) + r"""Unique identifier for a company.""" + connection_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'connectionId', 'style': 'simple', 'explode': False }}) + r"""Unique identifier for a connection.""" + order_by: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'orderBy', 'style': 'form', 'explode': True }}) + r"""Field to order results by. [Read more](https://docs.codat.io/using-the-api/ordering-results).""" + page: Optional[int] = dataclasses.field(default=1, metadata={'query_param': { 'field_name': 'page', 'style': 'form', 'explode': True }}) + r"""Page number. [Read more](https://docs.codat.io/using-the-api/paging).""" + page_size: Optional[int] = dataclasses.field(default=100, metadata={'query_param': { 'field_name': 'pageSize', 'style': 'form', 'explode': True }}) + r"""Number of records to return in a page. [Read more](https://docs.codat.io/using-the-api/paging).""" + query: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'query', 'style': 'form', 'explode': True }}) + r"""Codat query string. [Read more](https://docs.codat.io/using-the-api/querying).""" + + + + +@dataclasses.dataclass +class ListBankAccountsResponse: + content_type: str = dataclasses.field() + r"""HTTP response content type for this operation""" + raw_response: requests_http.Response = dataclasses.field() + r"""Raw HTTP response; suitable for custom response parsing""" + status_code: int = dataclasses.field() + r"""HTTP response status code for this operation""" + bank_accounts: Optional[shared_bankaccounts.BankAccounts] = dataclasses.field(default=None) + r"""Success""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/operations/set_configuration.py b/bank-feeds/src/codatbankfeeds/models/operations/set_configuration.py new file mode 100644 index 000000000..6c01b3d0b --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/operations/set_configuration.py @@ -0,0 +1,30 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +import requests as requests_http +from ...models.shared import configuration as shared_configuration +from typing import Optional + + +@dataclasses.dataclass +class SetConfigurationRequest: + company_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'companyId', 'style': 'simple', 'explode': False }}) + r"""Unique identifier for a company.""" + configuration: Optional[shared_configuration.Configuration] = dataclasses.field(default=None, metadata={'request': { 'media_type': 'application/json' }}) + + + + +@dataclasses.dataclass +class SetConfigurationResponse: + content_type: str = dataclasses.field() + r"""HTTP response content type for this operation""" + raw_response: requests_http.Response = dataclasses.field() + r"""Raw HTTP response; suitable for custom response parsing""" + status_code: int = dataclasses.field() + r"""HTTP response status code for this operation""" + configuration: Optional[shared_configuration.Configuration] = dataclasses.field(default=None) + r"""Success""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/__init__.py b/bank-feeds/src/codatbankfeeds/models/shared/__init__.py index 6e4ef051f..25a45d8c7 100644 --- a/bank-feeds/src/codatbankfeeds/models/shared/__init__.py +++ b/bank-feeds/src/codatbankfeeds/models/shared/__init__.py @@ -1,6 +1,8 @@ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" from .bankaccountcredentials import * +from .bankaccountoption import * +from .bankaccounts import * from .bankfeedaccountmappingresponse import * from .bankfeedmapping import * from .banktransactions import * @@ -11,6 +13,11 @@ from .companies import * from .company import * from .companyrequestbody import * +from .configuration import * +from .configurationcontactref import * +from .configurationcustomer import * +from .configurationschedule import * +from .configurationsupplier import * from .connection import * from .connections import * from .createbanktransactions import * @@ -29,9 +36,12 @@ from .pushoperationstatus import * from .security import * from .sourceaccount import * +from .syncasbankfeeds import * +from .syncasexpenses import * +from .syncconfiguration import * from .targetaccountoption import * from .validation import * from .validationitem import * from .zero import * -__all__ = ["BankAccountCredentials","BankFeedAccountMappingResponse","BankFeedMapping","BankTransactionType","BankTransactions","ClientRateLimitReachedWebhook","ClientRateLimitReachedWebhookData","ClientRateLimitResetWebhook","ClientRateLimitResetWebhookData","Companies","Company","CompanyRequestBody","Connection","Connections","CreateBankTransactions","CreateBankTransactionsResponse","DataConnectionError","DataConnectionStatus","DataType","GroupReference","HalRef","Items","Links","PushChangeType","PushOperation","PushOperationChange","PushOperationRef","PushOperationStatus","PushOperations","Security","SourceAccount","SourceType","TargetAccountOption","Validation","ValidationItem","Zero"] +__all__ = ["AccountingBankAccount","BankAccountCredentials","BankAccountOption","BankAccountType","BankAccounts","BankFeedAccountMappingResponse","BankFeedMapping","BankTransactionType","BankTransactions","ClientRateLimitReachedWebhook","ClientRateLimitReachedWebhookData","ClientRateLimitResetWebhook","ClientRateLimitResetWebhookData","Companies","Company","CompanyRequestBody","Configuration","ConfigurationContactRef","ConfigurationCustomer","ConfigurationSchedule","ConfigurationSupplier","Connection","Connections","CreateBankTransactions","CreateBankTransactionsResponse","DataConnectionError","DataConnectionStatus","DataType","GroupReference","HalRef","Items","Links","Metadata","PushChangeType","PushOperation","PushOperationChange","PushOperationRef","PushOperationStatus","PushOperations","Security","SourceAccount","SourceType","SupplementalData","SyncAsBankFeeds","SyncAsExpenses","SyncConfiguration","TargetAccountOption","Validation","ValidationItem","Zero"] diff --git a/bank-feeds/src/codatbankfeeds/models/shared/bankaccountoption.py b/bank-feeds/src/codatbankfeeds/models/shared/bankaccountoption.py new file mode 100644 index 000000000..17e088f98 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/bankaccountoption.py @@ -0,0 +1,20 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class BankAccountOption: + account_type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountType'), 'exclude': lambda f: f is None }}) + r"""The type of account.""" + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + r"""Unique identifier for the bank account.""" + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }}) + r"""Name of bank account.""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/bankaccounts.py b/bank-feeds/src/codatbankfeeds/models/shared/bankaccounts.py new file mode 100644 index 000000000..8e90c30ab --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/bankaccounts.py @@ -0,0 +1,135 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from .links import Links +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from decimal import Decimal +from enum import Enum +from typing import Any, Dict, List, Optional + +class BankAccountType(str, Enum): + r"""The type of transactions and balances on the account. + For Credit accounts, positive balances are liabilities, and positive transactions **reduce** liabilities. + For Debit accounts, positive balances are assets, and positive transactions **increase** assets. + """ + UNKNOWN = 'Unknown' + CREDIT = 'Credit' + DEBIT = 'Debit' + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class Metadata: + is_deleted: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('isDeleted') }}) + r"""Indicates whether the record has been deleted in the third-party system this record originated from.""" + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class SupplementalData: + r"""Supplemental data is additional data you can include in our standard data types. + + It is referenced as a configured dynamic key value pair that is unique to the accounting platform. [Learn more](https://docs.codat.io/using-the-api/supplemental-data/overview) about supplemental data. + """ + content: Optional[Dict[str, Dict[str, Any]]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('content') }}) + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class AccountingBankAccount: + r"""> **Accessing Bank Accounts through Banking API** + > + > This datatype was originally used for accessing bank account data both in accounting integrations and open banking aggregators. + > + > To view bank account data through the Banking API, please refer to the new datatype [here](https://docs.codat.io/bank-feeds-api#/schemas/Account) + + > View the coverage for bank accounts in the Data coverage explorer. + + ## Overview + + A list of bank accounts associated with a company and a specific data connection. + + Bank accounts data includes: + * The name and ID of the account in the accounting platform. + * The currency and balance of the account. + * The sort code and account number. + """ + account_name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountName') }}) + r"""Name of the bank account in the accounting platform.""" + account_number: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountNumber') }}) + r"""Account number for the bank account. + + Xero integrations + Only a UK account number shows for bank accounts with GBP currency and a combined total of sort code and account number that equals 14 digits, For non-GBP accounts, the full bank account number is populated. + + FreeAgent integrations + For Credit accounts, only the last four digits are required. For other types, the field is optional. + """ + account_type: Optional[BankAccountType] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountType'), 'exclude': lambda f: f is None }}) + r"""The type of transactions and balances on the account. + For Credit accounts, positive balances are liabilities, and positive transactions **reduce** liabilities. + For Debit accounts, positive balances are assets, and positive transactions **increase** assets. + """ + available_balance: Optional[Decimal] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('availableBalance'), 'encoder': utils.decimalencoder(True, False), 'decoder': utils.decimaldecoder }}) + r"""Total available balance of the bank account as reported by the underlying data source. This may take into account overdrafts or pending transactions for example.""" + balance: Optional[Decimal] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('balance'), 'encoder': utils.decimalencoder(True, False), 'decoder': utils.decimaldecoder }}) + r"""Balance of the bank account.""" + currency: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('currency'), 'exclude': lambda f: f is None }}) + r"""The currency data type in Codat is the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code, e.g. _GBP_. + + ## Unknown currencies + + In line with the ISO 4217 specification, the code _XXX_ is used when the data source does not return a currency for a transaction. + + There are only a very small number of edge cases where this currency code is returned by the Codat system. + """ + i_ban: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('iBan') }}) + r"""International bank account number of the account. Often used when making or receiving international payments.""" + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + r"""Identifier for the account, unique for the company in the accounting platform.""" + institution: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('institution') }}) + r"""The institution of the bank account.""" + metadata: Optional[Metadata] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('metadata'), 'exclude': lambda f: f is None }}) + modified_date: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('modifiedDate'), 'exclude': lambda f: f is None }}) + nominal_code: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('nominalCode') }}) + r"""Code used to identify each nominal account for a business.""" + overdraft_limit: Optional[Decimal] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('overdraftLimit'), 'encoder': utils.decimalencoder(True, False), 'decoder': utils.decimaldecoder }}) + r"""Pre-arranged overdraft limit of the account. + + The value is always positive. For example, an overdraftLimit of `1000` means that the balance of the account can go down to `-1000`. + """ + sort_code: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sortCode') }}) + r"""Sort code for the bank account. + + Xero integrations + The sort code is only displayed when the currency = GBP and the sort code and account number sum to 14 digits. For non-GBP accounts, this field is not populated. + """ + source_modified_date: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sourceModifiedDate'), 'exclude': lambda f: f is None }}) + supplemental_data: Optional[SupplementalData] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('supplementalData'), 'exclude': lambda f: f is None }}) + r"""Supplemental data is additional data you can include in our standard data types. + + It is referenced as a configured dynamic key value pair that is unique to the accounting platform. [Learn more](https://docs.codat.io/using-the-api/supplemental-data/overview) about supplemental data. + """ + + + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class BankAccounts: + links: Links = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('_links') }}) + page_number: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('pageNumber') }}) + r"""Current page number.""" + page_size: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('pageSize') }}) + r"""Number of items to return in results array.""" + total_results: int = dataclasses.field(metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('totalResults') }}) + r"""Total number of items.""" + results: Optional[List[AccountingBankAccount]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('results'), 'exclude': lambda f: f is None }}) + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/configuration.py b/bank-feeds/src/codatbankfeeds/models/shared/configuration.py new file mode 100644 index 000000000..8746eeee9 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/configuration.py @@ -0,0 +1,26 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from .configurationschedule import ConfigurationSchedule +from .syncconfiguration import SyncConfiguration +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class Configuration: + accounting_software_company_name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountingSoftwareCompanyName'), 'exclude': lambda f: f is None }}) + r"""The company name defined in the accounting platform.""" + company_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('companyId'), 'exclude': lambda f: f is None }}) + r"""Unique identifier for your SMB in Codat.""" + configuration: Optional[SyncConfiguration] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('configuration'), 'exclude': lambda f: f is None }}) + configured: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('configured'), 'exclude': lambda f: f is None }}) + r"""True if the company has been configured.""" + enabled: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('enabled'), 'exclude': lambda f: f is None }}) + r"""Enabled or disable bank feeds.""" + schedule: Optional[ConfigurationSchedule] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('schedule'), 'exclude': lambda f: f is None }}) + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/configurationcontactref.py b/bank-feeds/src/codatbankfeeds/models/shared/configurationcontactref.py new file mode 100644 index 000000000..a90f5411f --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/configurationcontactref.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class ConfigurationContactRef: + id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }}) + r"""Unique identifier for the supplier/customer.""" + name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }}) + r"""The supplier/customer's name.""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/configurationcustomer.py b/bank-feeds/src/codatbankfeeds/models/shared/configurationcustomer.py new file mode 100644 index 000000000..4c08b4366 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/configurationcustomer.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from .configurationcontactref import ConfigurationContactRef +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import List, Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class ConfigurationCustomer: + customer_options: Optional[List[ConfigurationContactRef]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('customerOptions'), 'exclude': lambda f: f is None }}) + selected_customer_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selectedCustomerId'), 'exclude': lambda f: f is None }}) + r"""Unique identifier for the customer.""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/configurationschedule.py b/bank-feeds/src/codatbankfeeds/models/shared/configurationschedule.py new file mode 100644 index 000000000..a40c173f6 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/configurationschedule.py @@ -0,0 +1,24 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import List, Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class ConfigurationSchedule: + frequency_options: Optional[List[str]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('frequencyOptions'), 'exclude': lambda f: f is None }}) + r"""The available sync frequencies.""" + selected_frequency: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selectedFrequency'), 'exclude': lambda f: f is None }}) + r"""The sync frequency.""" + start_date: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('startDate'), 'exclude': lambda f: f is None }}) + r"""The datetime in UTC you want to start syncing from.""" + sync_hour_utc: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('syncHourUtc'), 'exclude': lambda f: f is None }}) + r"""The hour in which the sync is initiated.""" + time_zone_iana_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('timeZoneIanaId'), 'exclude': lambda f: f is None }}) + r"""The [IANA](https://www.iana.org/time-zones) time zone ID.""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/configurationsupplier.py b/bank-feeds/src/codatbankfeeds/models/shared/configurationsupplier.py new file mode 100644 index 000000000..777fcf8bd --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/configurationsupplier.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from .configurationcontactref import ConfigurationContactRef +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import List, Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class ConfigurationSupplier: + selected_supplier_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selectedSupplierId'), 'exclude': lambda f: f is None }}) + r"""Unique identifier for the supplier.""" + supplier_options: Optional[List[ConfigurationContactRef]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('supplierOptions'), 'exclude': lambda f: f is None }}) + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/syncasbankfeeds.py b/bank-feeds/src/codatbankfeeds/models/shared/syncasbankfeeds.py new file mode 100644 index 000000000..f9c045231 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/syncasbankfeeds.py @@ -0,0 +1,20 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from .bankaccountoption import BankAccountOption +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import List, Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class SyncAsBankFeeds: + bank_account_options: Optional[List[BankAccountOption]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('bankAccountOptions'), 'exclude': lambda f: f is None }}) + enable_sync: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('enableSync'), 'exclude': lambda f: f is None }}) + r"""True if bank feeds sync is enabled.""" + selected_bank_account_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selectedBankAccountId'), 'exclude': lambda f: f is None }}) + r"""The bank account ID being synced.""" + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/syncasexpenses.py b/bank-feeds/src/codatbankfeeds/models/shared/syncasexpenses.py new file mode 100644 index 000000000..a508df976 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/syncasexpenses.py @@ -0,0 +1,24 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from .bankaccountoption import BankAccountOption +from .configurationcustomer import ConfigurationCustomer +from .configurationsupplier import ConfigurationSupplier +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import List, Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class SyncAsExpenses: + bank_account_options: Optional[List[BankAccountOption]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('bankAccountOptions'), 'exclude': lambda f: f is None }}) + customer: Optional[ConfigurationCustomer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('customer'), 'exclude': lambda f: f is None }}) + enable_sync: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('enableSync'), 'exclude': lambda f: f is None }}) + r"""True if expense sync is enabled.""" + selected_bank_account_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selectedBankAccountId'), 'exclude': lambda f: f is None }}) + r"""The bank account ID being synced.""" + supplier: Optional[ConfigurationSupplier] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('supplier'), 'exclude': lambda f: f is None }}) + + diff --git a/bank-feeds/src/codatbankfeeds/models/shared/syncconfiguration.py b/bank-feeds/src/codatbankfeeds/models/shared/syncconfiguration.py new file mode 100644 index 000000000..a661818a3 --- /dev/null +++ b/bank-feeds/src/codatbankfeeds/models/shared/syncconfiguration.py @@ -0,0 +1,18 @@ +"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT.""" + +from __future__ import annotations +import dataclasses +from .syncasbankfeeds import SyncAsBankFeeds +from .syncasexpenses import SyncAsExpenses +from codatbankfeeds import utils +from dataclasses_json import Undefined, dataclass_json +from typing import Optional + + +@dataclass_json(undefined=Undefined.EXCLUDE) +@dataclasses.dataclass +class SyncConfiguration: + sync_as_bank_feeds: Optional[SyncAsBankFeeds] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('syncAsBankFeeds'), 'exclude': lambda f: f is None }}) + sync_as_expenses: Optional[SyncAsExpenses] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('syncAsExpenses'), 'exclude': lambda f: f is None }}) + + diff --git a/bank-feeds/src/codatbankfeeds/sdk.py b/bank-feeds/src/codatbankfeeds/sdk.py index 4c4a628e3..022b59a54 100644 --- a/bank-feeds/src/codatbankfeeds/sdk.py +++ b/bank-feeds/src/codatbankfeeds/sdk.py @@ -2,7 +2,9 @@ import requests as requests_http from .account_mapping import AccountMapping +from .bank_accounts import BankAccounts from .companies import Companies +from .configuration import Configuration from .connections import Connections from .sdkconfiguration import SDKConfiguration from .source_accounts import SourceAccounts @@ -38,8 +40,12 @@ class CodatBankFeeds: r"""Bank feed bank account mapping.""" source_accounts: SourceAccounts r"""Source accounts act as a bridge to bank accounts in accounting software.""" + bank_accounts: BankAccounts + r"""Access bank accounts in an SMBs accounting platform.""" transactions: Transactions r"""Transactions represent debits and credits from a source account.""" + configuration: Configuration + r"""Configure bank feeds for a company.""" sdk_configuration: SDKConfiguration @@ -82,5 +88,7 @@ def _init_sdks(self): self.connections = Connections(self.sdk_configuration) self.account_mapping = AccountMapping(self.sdk_configuration) self.source_accounts = SourceAccounts(self.sdk_configuration) + self.bank_accounts = BankAccounts(self.sdk_configuration) self.transactions = Transactions(self.sdk_configuration) + self.configuration = Configuration(self.sdk_configuration) \ No newline at end of file diff --git a/bank-feeds/src/codatbankfeeds/sdkconfiguration.py b/bank-feeds/src/codatbankfeeds/sdkconfiguration.py index 8d151c705..abaaf6ea8 100644 --- a/bank-feeds/src/codatbankfeeds/sdkconfiguration.py +++ b/bank-feeds/src/codatbankfeeds/sdkconfiguration.py @@ -22,9 +22,9 @@ class SDKConfiguration: server_idx: int = 0 language: str = 'python' openapi_doc_version: str = '3.0.0' - sdk_version: str = '6.0.0' - gen_version: str = '2.228.3' - user_agent: str = 'speakeasy-sdk/python 6.0.0 2.228.3 3.0.0 codat-bankfeeds' + sdk_version: str = '6.0.1' + gen_version: str = '2.230.3' + user_agent: str = 'speakeasy-sdk/python 6.0.1 2.230.3 3.0.0 codat-bankfeeds' retry_config: RetryConfig = None def get_server_details(self) -> Tuple[str, Dict[str, str]]: