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]]: