diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index d118477b5..7f9e7f517 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -16,8 +16,8 @@ sources: - main bank-feeds-source: sourceNamespace: bank-feeds-source - sourceRevisionDigest: sha256:2bf52af4a0753c29a508bf534075c9fc6bbd4ba070605d3c7d4e092a9f3733cf - sourceBlobDigest: sha256:24d837ec7ccccb55559e6de16951a64c09874b48e5ca92b7af36ea0b95b0eac2 + sourceRevisionDigest: sha256:61bdc8d4d47ab3a9f4e19f3426350875586b4f0faecd7d9f5e8bdac3d1f0eb02 + sourceBlobDigest: sha256:a490b555d6f186cd37f72a06e06ba49293a0f371d145db2d9913d5081ecfc5a2 tags: - latest - main @@ -91,8 +91,8 @@ targets: bank-feeds-library: source: bank-feeds-source sourceNamespace: bank-feeds-source - sourceRevisionDigest: sha256:2bf52af4a0753c29a508bf534075c9fc6bbd4ba070605d3c7d4e092a9f3733cf - sourceBlobDigest: sha256:24d837ec7ccccb55559e6de16951a64c09874b48e5ca92b7af36ea0b95b0eac2 + sourceRevisionDigest: sha256:61bdc8d4d47ab3a9f4e19f3426350875586b4f0faecd7d9f5e8bdac3d1f0eb02 + sourceBlobDigest: sha256:a490b555d6f186cd37f72a06e06ba49293a0f371d145db2d9913d5081ecfc5a2 banking-library: source: banking-source sourceNamespace: banking-source diff --git a/bank-feeds/.speakeasy/gen.lock b/bank-feeds/.speakeasy/gen.lock index 68e77003b..58fb6e87b 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: 013890de98917d65fc592f4de8d32cf4 + docChecksum: c57bceaa5f2d5b6d55426976a49ec69d docVersion: 3.0.0 - speakeasyVersion: 1.396.6 - generationVersion: 2.415.6 - releaseVersion: 7.0.0 - configChecksum: 7cbc03e2137e5a741bb7ee86bb025764 + speakeasyVersion: 1.431.0 + generationVersion: 2.451.0 + releaseVersion: 8.0.0 + configChecksum: 1be61a9a1365628d8a0599a1e0a826fc repoURL: https://github.com/codatio/client-sdk-python.git repoSubDirectory: bank-feeds installationURL: https://github.com/codatio/client-sdk-python.git#subdirectory=bank-feeds @@ -14,28 +14,32 @@ management: features: python: additionalDependencies: 1.0.0 - constsAndDefaults: 1.0.2 - core: 5.5.3 + constsAndDefaults: 1.0.4 + core: 5.6.4 decimal: 1.0.0 defaultEnabledRetries: 0.2.0 deprecations: 3.0.0 enumUnions: 0.1.0 - envVarSecurityUsage: 0.3.1 + envVarSecurityUsage: 0.3.2 examples: 3.0.0 globalSecurity: 3.0.2 globalSecurityCallbacks: 1.0.0 globalServerURLs: 3.0.0 inputOutputModels: 3.0.0 + methodArguments: 1.0.2 nameOverrides: 3.0.0 nullables: 1.0.0 - responseFormat: 1.0.0 + responseFormat: 1.0.1 retries: 3.0.2 sdkHooks: 1.0.0 serverEventsSentinels: 0.1.0 - unions: 3.0.2 + tests: 1.6.0 + unions: 3.0.3 + uploadStreams: 1.0.0 webhooks: 2.0.0 generatedFiles: - .gitattributes + - .python-version - .vscode/settings.json - CONTRIBUTING.md - USAGE.md @@ -101,6 +105,8 @@ generatedFiles: - docs/models/shared/companies.md - docs/models/shared/company.md - docs/models/shared/companyinformation.md + - docs/models/shared/companyreference.md + - docs/models/shared/companyreferencelinks.md - docs/models/shared/companyrequestbody.md - docs/models/shared/companysyncstatus.md - docs/models/shared/configuration.md @@ -118,7 +124,6 @@ generatedFiles: - docs/models/shared/errorstatus.md - docs/models/shared/errorvalidation.md - docs/models/shared/errorvalidationitem.md - - docs/models/shared/groupreference.md - docs/models/shared/halref.md - docs/models/shared/links.md - docs/models/shared/metadata.md @@ -147,7 +152,6 @@ generatedFiles: - docs/models/shared/syncasbankfeeds.md - docs/models/shared/syncasexpenses.md - docs/models/shared/syncconfiguration.md - - docs/models/shared/tags.md - docs/models/shared/targetaccountoption.md - docs/models/shared/type.md - docs/models/shared/validation.md @@ -167,13 +171,13 @@ generatedFiles: - py.typed - pylintrc - pyproject.toml - - scripts/compile.sh - scripts/prepare-readme.py - scripts/publish.sh - src/codat_bankfeeds/__init__.py - src/codat_bankfeeds/_hooks/__init__.py - src/codat_bankfeeds/_hooks/sdkhooks.py - src/codat_bankfeeds/_hooks/types.py + - src/codat_bankfeeds/_version.py - src/codat_bankfeeds/account_mapping.py - src/codat_bankfeeds/bank_accounts.py - src/codat_bankfeeds/basesdk.py @@ -234,6 +238,7 @@ generatedFiles: - src/codat_bankfeeds/models/shared/companies.py - src/codat_bankfeeds/models/shared/company.py - src/codat_bankfeeds/models/shared/companyinformation.py + - src/codat_bankfeeds/models/shared/companyreference.py - src/codat_bankfeeds/models/shared/companyrequestbody.py - src/codat_bankfeeds/models/shared/companysyncstatus.py - src/codat_bankfeeds/models/shared/configuration.py @@ -303,14 +308,14 @@ examples: create-company: With no description: requestBody: - application/json: {"description": "Requested early access to the new financing scheme.", "groups": [], "name": "Technicalium"} + application/json: {"description": "Requested early access to the new financing scheme.", "name": "Technicalium"} responses: "200": application/json: {"created": "2022-11-10T10:45:18.1950523Z", "createdByUserName": "Dan Tzabar", "dataConnections": [], "description": "", "id": "ab12c58d-a678-4ebf-a159-ae99e1807bd0", "lastSync": "2022-10-23T00:00:00Z", "name": "Technicalium", "redirect": "https://link.codat.io/company/ab12c58d-a678-4ebf-a159-ae99e1807bd0"} "400": {} With a description: requestBody: - application/json: {"description": "Technology services, including web and app design and development", "groups": [], "name": "Technicalium"} + application/json: {"description": "Technology services, including web and app design and development", "name": "Technicalium"} responses: "200": application/json: {"created": "2022-11-10T10:45:18.1950523Z", "createdByUserName": "Dan Tzabar", "dataConnections": [], "description": "Technology services, including web and app design and development", "id": "ab12c58d-a678-4ebf-a159-ae99e1807bd0", "lastSync": "2022-10-23T00:00:00Z", "name": "Technicalium", "redirect": "https://link.codat.io/company/ab12c58d-a678-4ebf-a159-ae99e1807bd0"} @@ -324,10 +329,16 @@ examples: "400": {} Malformed query: requestBody: - application/json: {"description": "Requested early access to the new financing scheme.", "groups": [], "name": "Bank of Dave"} + application/json: {"description": "Requested early access to the new financing scheme.", "name": "Bank of Dave"} responses: "400": application/json: {"canBeRetried": "Unknown", "correlationId": "bc997528a9d7abb9161ef45f05d38599", "detailedErrorCode": 0, "error": "Error processing request - not valid.", "service": "PublicApi", "statusCode": 400} + With a tag: + requestBody: + application/json: {"description": "Requested early access to the new financing scheme.", "name": "Bank of Dave"} + responses: + "200": + application/json: {"created": "2022-11-10T10:45:18.1950523Z", "createdByUserName": "Dan Tzabar", "dataConnections": [], "description": "", "id": "ab12c58d-a678-4ebf-a159-ae99e1807bd0", "lastSync": "2022-10-23T00:00:00Z", "name": "Technicalium", "redirect": "https://link.codat.io/company/ab12c58d-a678-4ebf-a159-ae99e1807bd0", "tags": {"region": "us"}} delete-company: Unauthorized: parameters: @@ -379,7 +390,7 @@ examples: orderBy: "-modifiedDate" responses: "200": - application/json: {"_links": {"current": {"href": "/companies?page=1&pageSize=100"}, "self": {"href": "/companies"}}, "pageNumber": 1, "pageSize": 100, "results": [{"created": "2022-01-01T11:30:00Z", "createdByUserName": "Mike Smith", "dataConnections": [{"created": "2022-01-01T11:30:00Z", "dataConnectionErrors": [], "id": "51baa045-4836-4317-a42e-3542e991e581", "integrationId": "1c312d69-e638-46d4-ad31-72e6c3ba8390", "integrationKey": "vjms", "lastSync": "2022-01-01T12:30:00.000Z", "linkUrl": "https://link-api.codat.io/companies/3fa85f64-5717-4562-b3fc-2c963f66afa6/connections/51baa045-4836-4317-a42e-3542e991e581/start", "platformName": "Pandle", "sourceId": "396c3158-5dd7-481b-a7c4-a795ca31792b", "sourceType": "Accounting", "status": "Linked"}], "description": "My Test Company make testing software", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "lastSync": "2022-01-01T12:30:00.000Z", "name": "My Test Company", "redirect": "https://link.codat.io/company/3fa85f64-5717-4562-b3fc-2c963f66afa6"}], "totalResults": 1} + application/json: {"_links": {"current": {"href": "/companies?page=1&pageSize=100"}, "self": {"href": "/companies"}}, "pageNumber": 1, "pageSize": 100, "results": [{"created": "2022-01-01T11:30:00Z", "createdByUserName": "Mike Smith", "dataConnections": [{"created": "2022-01-01T11:30:00Z", "dataConnectionErrors": [{"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}], "id": "51baa045-4836-4317-a42e-3542e991e581", "integrationId": "1c312d69-e638-46d4-ad31-72e6c3ba8390", "integrationKey": "vjms", "lastSync": "2022-01-01T12:30:00.000Z", "linkUrl": "https://link-api.codat.io/companies/3fa85f64-5717-4562-b3fc-2c963f66afa6/connections/51baa045-4836-4317-a42e-3542e991e581/start", "platformName": "Pandle", "sourceId": "396c3158-5dd7-481b-a7c4-a795ca31792b", "sourceType": "Accounting", "status": "Linked"}], "description": "My Test Company make testing software", "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "lastSync": "2022-01-01T12:30:00.000Z", "name": "My Test Company", "redirect": "https://link.codat.io/company/3fa85f64-5717-4562-b3fc-2c963f66afa6"}], "totalResults": 1} List of Companies: parameters: query: @@ -389,7 +400,7 @@ examples: orderBy: "-modifiedDate" responses: "200": - application/json: {"_links": {"current": {"href": "/companies?page=1&pageSize=100"}, "self": {"href": "/companies"}}, "pageNumber": 1, "pageSize": 100, "results": [{"created": "2022-01-01T11:30:00Z", "createdByUserName": "Joe Bloggs", "dataConnections": [{"created": "2022-01-01T11:30:00Z", "dataConnectionErrors": [], "id": "51baa045-4836-4317-a42e-3542e991e581", "integrationId": "1c312d69-e638-46d4-ad31-72e6c3ba8390", "integrationKey": "vjms", "lastSync": "2022-01-01T12:30:00.000Z", "linkUrl": "https://link-api.codat.io/companies/d1568dde-adf6-11ed-afa1-0242ac120002/connections/51baa045-4836-4317-a42e-3542e991e581/start", "platformName": "Pandle", "sourceId": "396c3158-5dd7-481b-a7c4-a795ca31792b", "sourceType": "Accounting", "status": "Linked"}], "description": "Technology services, including web and app design and development", "id": "d1568dde-adf6-11ed-afa1-0242ac120002", "lastSync": "2022-01-01T12:30:00.000Z", "name": "Technicalium", "redirect": "https://link.codat.io/company/d1568dde-adf6-11ed-afa1-0242ac120002"}, {"created": "2022-01-01T11:30:00Z", "createdByUserName": "Mike Smith", "dataConnections": [{"created": "2022-01-01T11:30:00Z", "dataConnectionErrors": [], "id": "a70bc148-dc21-46b2-a257-d9c58ac15cbb", "integrationId": "1c312d69-e638-46d4-ad31-72e6c3ba8390", "integrationKey": "vjms", "lastSync": "2022-01-01T12:30:00.000Z", "linkUrl": "https://link-api.codat.io/companies/096db70b-78de-4ff0-aa98-299cb5fe17a0/connections/a70bc148-dc21-46b2-a257-d9c58ac15cbb/start", "platformName": "Pandle", "sourceId": "396c3158-5dd7-481b-a7c4-a795ca31792b", "sourceType": "Accounting", "status": "Linked"}], "description": "A new digital agency with a passion for creating amazing digital experiences", "id": "096db70b-78de-4ff0-aa98-299cb5fe17a0", "lastSync": "2022-01-01T12:30:00.000Z", "name": "Godata", "redirect": "https://link.codat.io/company/096db70b-78de-4ff0-aa98-299cb5fe17a0"}], "totalResults": 2} + application/json: {"_links": {"current": {"href": "/companies?page=1&pageSize=100"}, "self": {"href": "/companies"}}, "pageNumber": 1, "pageSize": 100, "results": [{"created": "2022-01-01T11:30:00Z", "createdByUserName": "Joe Bloggs", "dataConnections": [{"created": "2022-01-01T11:30:00Z", "dataConnectionErrors": [{"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}], "id": "51baa045-4836-4317-a42e-3542e991e581", "integrationId": "1c312d69-e638-46d4-ad31-72e6c3ba8390", "integrationKey": "vjms", "lastSync": "2022-01-01T12:30:00.000Z", "linkUrl": "https://link-api.codat.io/companies/d1568dde-adf6-11ed-afa1-0242ac120002/connections/51baa045-4836-4317-a42e-3542e991e581/start", "platformName": "Pandle", "sourceId": "396c3158-5dd7-481b-a7c4-a795ca31792b", "sourceType": "Accounting", "status": "Linked"}], "description": "Technology services, including web and app design and development", "id": "d1568dde-adf6-11ed-afa1-0242ac120002", "lastSync": "2022-01-01T12:30:00.000Z", "name": "Technicalium", "redirect": "https://link.codat.io/company/d1568dde-adf6-11ed-afa1-0242ac120002"}, {"created": "2022-01-01T11:30:00Z", "createdByUserName": "Mike Smith", "dataConnections": [{"created": "2022-01-01T11:30:00Z", "dataConnectionErrors": [{"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}], "id": "a70bc148-dc21-46b2-a257-d9c58ac15cbb", "integrationId": "1c312d69-e638-46d4-ad31-72e6c3ba8390", "integrationKey": "vjms", "lastSync": "2022-01-01T12:30:00.000Z", "linkUrl": "https://link-api.codat.io/companies/096db70b-78de-4ff0-aa98-299cb5fe17a0/connections/a70bc148-dc21-46b2-a257-d9c58ac15cbb/start", "platformName": "Pandle", "sourceId": "396c3158-5dd7-481b-a7c4-a795ca31792b", "sourceType": "Accounting", "status": "Linked"}], "description": "A new digital agency with a passion for creating amazing digital experiences", "id": "096db70b-78de-4ff0-aa98-299cb5fe17a0", "lastSync": "2022-01-01T12:30:00.000Z", "name": "Godata", "redirect": "https://link.codat.io/company/096db70b-78de-4ff0-aa98-299cb5fe17a0"}], "totalResults": 2} Malformed query: parameters: query: @@ -416,27 +427,27 @@ examples: path: companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" requestBody: - application/json: {"description": "Requested early access to the new financing scheme.", "groups": [], "name": "New Name"} + application/json: {"description": "Requested early access to the new financing scheme.", "name": "New Name"} responses: "200": - application/json: {"created": "2022-01-01T12:00:00.000Z", "createdByUserName": "string", "dataConnections": [{"created": "2022-10-27T09:53:29Z", "dataConnectionErrors": [], "id": "ee2eb431-c0fa-4dc9-93fa-d29781c12bcd", "integrationId": "bf083d72-62c7-493e-aec9-81b4dbba7e2c", "integrationKey": "dfxm", "lastSync": "2022-10-27T10:22:43.6464237Z", "linkUrl": "https://link-api.codat.io/companies/86bd88cb-44ab-4dfb-b32f-87b19b14287f/connections/ee2eb431-c0fa-4dc9-93fa-d29781c12bcd/start", "platformName": "Basiq", "sourceId": "bdd831ce-eebd-4896-89a7-20e5ee8989ee", "sourceType": "Banking", "status": "Linked"}], "description": "Requested early access to the new financing scheme.", "id": "0498e921-9b53-4396-a412-4f2f5983b0a2", "lastSync": "2022-01-01T12:00:00.000Z", "name": "string", "redirect": "https://link.codat.io/company/27628208-459c-46a2-a705-5641ce25f739"} + application/json: {"created": "2022-01-01T12:00:00.000Z", "createdByUserName": "string", "dataConnections": [{"created": "2022-10-27T09:53:29Z", "dataConnectionErrors": [{"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}], "id": "ee2eb431-c0fa-4dc9-93fa-d29781c12bcd", "integrationId": "bf083d72-62c7-493e-aec9-81b4dbba7e2c", "integrationKey": "dfxm", "lastSync": "2022-10-27T10:22:43.6464237Z", "linkUrl": "https://link-api.codat.io/companies/86bd88cb-44ab-4dfb-b32f-87b19b14287f/connections/ee2eb431-c0fa-4dc9-93fa-d29781c12bcd/start", "platformName": "Basiq", "sourceId": "bdd831ce-eebd-4896-89a7-20e5ee8989ee", "sourceType": "Banking", "status": "Linked"}], "description": "Requested early access to the new financing scheme.", "id": "0498e921-9b53-4396-a412-4f2f5983b0a2", "lastSync": "2022-01-01T12:00:00.000Z", "name": "string", "redirect": "https://link.codat.io/company/27628208-459c-46a2-a705-5641ce25f739", "tags": {"region": "us", "uid": "f6b0c253-16c7-4da1-a0c5-9c871e9c9d6c"}} "401": {} Update description: parameters: path: companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" requestBody: - application/json: {"description": "Additional documents required", "groups": [], "name": "Same name"} + application/json: {"description": "Additional documents required", "name": "Same name"} responses: "200": - application/json: {"created": "2022-01-01T12:00:00.000Z", "createdByUserName": "string", "dataConnections": [{"created": "2022-10-27T09:53:29Z", "dataConnectionErrors": [], "id": "ee2eb431-c0fa-4dc9-93fa-d29781c12bcd", "integrationId": "bf083d72-62c7-493e-aec9-81b4dbba7e2c", "integrationKey": "dfxm", "lastSync": "2022-10-27T10:22:43.6464237Z", "linkUrl": "https://link-api.codat.io/companies/86bd88cb-44ab-4dfb-b32f-87b19b14287f/connections/ee2eb431-c0fa-4dc9-93fa-d29781c12bcd/start", "platformName": "Basiq", "sourceId": "bdd831ce-eebd-4896-89a7-20e5ee8989ee", "sourceType": "Banking", "status": "Linked"}], "description": "Requested early access to the new financing scheme.", "id": "0498e921-9b53-4396-a412-4f2f5983b0a2", "lastSync": "2022-01-01T12:00:00.000Z", "name": "string", "redirect": "https://link.codat.io/company/27628208-459c-46a2-a705-5641ce25f739"} + application/json: {"created": "2022-01-01T12:00:00.000Z", "createdByUserName": "string", "dataConnections": [{"created": "2022-10-27T09:53:29Z", "dataConnectionErrors": [], "id": "ee2eb431-c0fa-4dc9-93fa-d29781c12bcd", "integrationId": "bf083d72-62c7-493e-aec9-81b4dbba7e2c", "integrationKey": "dfxm", "lastSync": "2022-10-27T10:22:43.6464237Z", "linkUrl": "https://link-api.codat.io/companies/86bd88cb-44ab-4dfb-b32f-87b19b14287f/connections/ee2eb431-c0fa-4dc9-93fa-d29781c12bcd/start", "platformName": "Basiq", "sourceId": "bdd831ce-eebd-4896-89a7-20e5ee8989ee", "sourceType": "Banking", "status": "Linked"}], "description": "Requested early access to the new financing scheme.", "id": "0498e921-9b53-4396-a412-4f2f5983b0a2", "lastSync": "2022-01-01T12:00:00.000Z", "name": "string", "redirect": "https://link.codat.io/company/27628208-459c-46a2-a705-5641ce25f739", "tags": {"region": "us", "uid": "f6b0c253-16c7-4da1-a0c5-9c871e9c9d6c"}} "401": {} Unauthorized: parameters: path: companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" requestBody: - application/json: {"description": "Requested early access to the new financing scheme.", "groups": [], "name": "Bank of Dave"} + application/json: {"description": "Requested early access to the new financing scheme.", "name": "Bank of Dave"} responses: "401": application/json: {"canBeRetried": "Unknown", "correlationId": "7eb40d6b415d7bcd99ce658268284056", "detailedErrorCode": 0, "error": "Unauthorized", "service": "PublicApi", "statusCode": 401} @@ -510,7 +521,7 @@ examples: orderBy: "-modifiedDate" responses: "200": - application/json: {"_links": {"current": {"href": "string"}, "next": {"href": "string"}, "previous": {"href": "string"}, "self": {"href": "string"}}, "pageNumber": 0, "pageSize": 0, "results": [{"created": "2022-10-27T09:53:29Z", "dataConnectionErrors": [], "id": "ee2eb431-c0fa-4dc9-93fa-d29781c12bcd", "integrationId": "bf083d72-62c7-493e-aec9-81b4dbba7e2c", "integrationKey": "dfxm", "lastSync": "2022-10-27T10:22:43.6464237Z", "linkUrl": "https://link-api.codat.io/companies/86bd88cb-44ab-4dfb-b32f-87b19b14287f/connections/ee2eb431-c0fa-4dc9-93fa-d29781c12bcd/start", "platformName": "Basiq", "sourceId": "bdd831ce-eebd-4896-89a7-20e5ee8989ee", "sourceType": "Banking", "status": "Linked"}], "totalResults": 0} + application/json: {"_links": {"current": {"href": "string"}, "next": {"href": "string"}, "previous": {"href": "string"}, "self": {"href": "string"}}, "pageNumber": 0, "pageSize": 0, "results": [{"created": "2022-10-27T09:53:29Z", "dataConnectionErrors": [{"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}, {"erroredOnUtc": "2022-10-23T00:00:00Z", "resolvedOnUtc": "2022-10-23T00:00:00Z"}], "id": "ee2eb431-c0fa-4dc9-93fa-d29781c12bcd", "integrationId": "bf083d72-62c7-493e-aec9-81b4dbba7e2c", "integrationKey": "dfxm", "lastSync": "2022-10-27T10:22:43.6464237Z", "linkUrl": "https://link-api.codat.io/companies/86bd88cb-44ab-4dfb-b32f-87b19b14287f/connections/ee2eb431-c0fa-4dc9-93fa-d29781c12bcd/start", "platformName": "Basiq", "sourceId": "bdd831ce-eebd-4896-89a7-20e5ee8989ee", "sourceType": "Banking", "status": "Linked"}], "totalResults": 0} Malformed query: parameters: path: @@ -566,6 +577,17 @@ examples: responses: "400": application/json: {"canBeRetried": "Unknown", "correlationId": "bc997528a9d7abb9161ef45f05d38599", "detailedErrorCode": 0, "error": "Error processing request - not valid.", "service": "PublicApi", "statusCode": 400} + Example: + parameters: + path: + companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" + connectionId: "2e9d2c44-f675-40ba-8049-353bfcb5e171" + requestBody: + application/json: {"sourceAccountId": "acc-002", "targetAccountId": "account-081"} + responses: + "200": + application/json: {"error": "A feed connection already exists to this account", "sourceAccountId": "acc-002", "status": "Failed", "targetAccountId": "account-081"} + "400": {} get-bank-account-mapping: Unauthorized: parameters: @@ -575,6 +597,14 @@ examples: responses: "401": application/json: {"canBeRetried": "Unknown", "correlationId": "7eb40d6b415d7bcd99ce658268284056", "detailedErrorCode": 0, "error": "Unauthorized", "service": "PublicApi", "statusCode": 401} + Example: + parameters: + path: + companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" + connectionId: "2e9d2c44-f675-40ba-8049-353bfcb5e171" + responses: + "200": + application/json: [{"feedStartDate": "2022-10-23T00:00:00Z", "sourceAccountId": "account-001", "sourceAccountName": "account-001", "sourceAccountNumber": "12345670", "sourceBalance": "99.99", "sourceCurrency": "GBP", "status": "pending", "targetAccountOptions": [{"accountNumber": "789", "id": "d21e25d6-98c5-4bfb-b469-105833bea3c8", "name": "Money Bank account", "sortCode": "123456"}, {"accountNumber": "99887766", "id": "d06ff4b2-e4f2-4681-9841-014bd008cdab", "name": "Bank of Dave account", "sortCode": "998866"}, {"accountNumber": "123456789", "id": "c8f252fc-84f3-4a8b-ace8-ae99f41a81ae", "name": "LuxLend account", "sortCode": "123456"}]}] get-company-information: Malformed query: parameters: @@ -966,7 +996,7 @@ examples: path: companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" connectionId: "2e9d2c44-f675-40ba-8049-353bfcb5e171" - accountId: "EILBDVJVNUAGVKRQ" + accountId: "9wg4lep4ush5cxs79pl8sozmsndbaukll3ind4g7buqbm1h2" query: {} requestBody: application/json: {"accountId": "49cd5a42-b311-4750-9361-52e2ed1d4653", "transactions": [{"amount": 100, "balance": -999.99, "counterparty": "ACME INC", "date": "2023-08-22T10:21:00Z", "description": "Repayment of Credit Card", "id": "716422529", "reconciled": false, "reference": "reference for transaction", "transactionType": "Credit"}, {"amount": -100, "balance": -999.99, "counterparty": "ACME INC", "date": "2023-08-22T10:22:00Z", "description": "Amazon Purchase", "id": "716422530", "reconciled": false, "reference": "reference for transaction", "transactionType": "Debit"}, {"amount": -60, "balance": -999.99, "counterparty": "ACME INC", "date": "2023-08-22T10:23:00Z", "description": "Office Supplies", "id": "716422531", "reconciled": false, "reference": "reference for transaction", "transactionType": "Debit"}]} @@ -979,7 +1009,7 @@ examples: path: companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" connectionId: "2e9d2c44-f675-40ba-8049-353bfcb5e171" - accountId: "9wg4lep4ush5cxs79pl8sozmsndbaukll3ind4g7buqbm1h2" + accountId: "13d946f0-c5d5-42bc-b092-97ece17923ab" query: {} requestBody: application/json: {"accountId": "49cd5a42-b311-4750-9361-52e2ed1d4653", "transactions": [{"amount": 100, "balance": 100, "counterparty": "Bank of Example", "date": "2023-08-22T10:21:00Z", "description": "Repayment of Credit Card", "id": "716422529", "reconciled": false, "reference": "Ref-12345", "transactionType": "Credit"}, {"amount": -100, "balance": 0, "counterparty": "Amazon", "date": "2023-08-22T10:22:00Z", "description": "Amazon Purchase", "id": "716422530", "reconciled": false, "reference": "Ref-12346", "transactionType": "Debit"}, {"amount": -60, "balance": -60, "counterparty": "Office Mart", "date": "2023-08-22T10:23:00Z", "description": "Office Supplies", "id": "716422531", "reconciled": false, "reference": "Ref-12347", "transactionType": "Debit"}]} @@ -992,7 +1022,7 @@ examples: path: companyId: "8a210b68-6988-11ed-a1eb-0242ac120002" connectionId: "2e9d2c44-f675-40ba-8049-353bfcb5e171" - accountId: "9wg4lep4ush5cxs79pl8sozmsndbaukll3ind4g7buqbm1h2" + accountId: "13d946f0-c5d5-42bc-b092-97ece17923ab" query: {} requestBody: application/json: {"accountId": "7110701885", "transactions": []} diff --git a/bank-feeds/.speakeasy/gen.yaml b/bank-feeds/.speakeasy/gen.yaml index 7fa3d1898..1ec14e9b1 100644 --- a/bank-feeds/.speakeasy/gen.yaml +++ b/bank-feeds/.speakeasy/gen.yaml @@ -9,21 +9,24 @@ generation: requestResponseComponentNamesFeb2024: false auth: oAuth2ClientCredentialsEnabled: false + oAuth2PasswordEnabled: false telemetryEnabled: true python: - version: 7.0.0 + version: 8.0.0 additionalDependencies: dev: {} main: {} author: Codat authors: - - Speakeasy + - Speakeasy clientServerStatusCodesAsErrors: true - description: Set up bank feeds from accounts in your application to supported accounting - software. + description: Set up bank feeds from accounts in your application to supported accounting software. enumFormat: enum + fixFlags: + responseRequiredSep2024: false flattenGlobalSecurity: false flattenRequests: false + flatteningOrder: parameters-first imports: option: openapi paths: diff --git a/bank-feeds/README.md b/bank-feeds/README.md index 609fee30c..05696bd5d 100755 --- a/bank-feeds/README.md +++ b/bank-feeds/README.md @@ -96,11 +96,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: @@ -126,11 +121,6 @@ async def main(): res = await s.companies.create_async(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: # handle response @@ -149,7 +139,7 @@ asyncio.run(main()) ### [account_mapping](docs/sdks/accountmapping/README.md) * [create](docs/sdks/accountmapping/README.md#create) - Create bank feed account mapping -* [get](docs/sdks/accountmapping/README.md#get) - List bank feed account mappings +* [get](docs/sdks/accountmapping/README.md#get) - List bank feed accounts ### [bank_accounts](docs/sdks/bankaccounts/README.md) @@ -262,11 +252,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }, RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False)) @@ -292,11 +277,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: @@ -311,12 +291,23 @@ if res is not None: ## Error Handling -Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an error. If Error objects are specified in your OpenAPI Spec, the SDK will raise the appropriate Error type. +Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an exception. -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 400,401,402,403,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +By default, an API error will raise a errors.SDKError exception, which has the following properties: + +| Property | Type | Description | +|-----------------|------------------|-----------------------| +| `.status_code` | *int* | The HTTP status code | +| `.message` | *str* | The error message | +| `.raw_response` | *httpx.Response* | The raw HTTP response | +| `.body` | *str* | The response content | + +When custom error responses are specified for an operation, the SDK may also raise their associated exceptions. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `create_async` method may raise the following exceptions: + +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ### Example @@ -335,11 +326,6 @@ try: res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: @@ -384,11 +370,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: @@ -415,11 +396,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: @@ -539,11 +515,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: diff --git a/bank-feeds/RELEASES.md b/bank-feeds/RELEASES.md index 3e791f903..1ae1d0ee2 100644 --- a/bank-feeds/RELEASES.md +++ b/bank-feeds/RELEASES.md @@ -798,4 +798,14 @@ Based on: ### Generated - [python v7.0.0] bank-feeds ### Releases -- [PyPI v7.0.0] https://pypi.org/project/codat-bankfeeds/7.0.0 - bank-feeds \ No newline at end of file +- [PyPI v7.0.0] https://pypi.org/project/codat-bankfeeds/7.0.0 - bank-feeds + +## 2024-11-06 14:42:21 +### Changes +Based on: +- OpenAPI Doc +- Speakeasy CLI 1.431.0 (2.451.0) https://github.com/speakeasy-api/speakeasy +### Generated +- [python v8.0.0] bank-feeds +### Releases +- [PyPI v8.0.0] https://pypi.org/project/codat-bankfeeds/8.0.0 - bank-feeds \ No newline at end of file diff --git a/bank-feeds/USAGE.md b/bank-feeds/USAGE.md index 64186bcf3..390c88283 100644 --- a/bank-feeds/USAGE.md +++ b/bank-feeds/USAGE.md @@ -13,11 +13,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: @@ -43,11 +38,6 @@ async def main(): res = await s.companies.create_async(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: # handle response diff --git a/bank-feeds/docs/models/errors/errormessage.md b/bank-feeds/docs/models/errors/errormessage.md index bd6f25c4d..c24cd9acc 100644 --- a/bank-feeds/docs/models/errors/errormessage.md +++ b/bank-feeds/docs/models/errors/errormessage.md @@ -1,6 +1,6 @@ # ErrorMessage -The request made is not valid. +Your `query` parameter was not correctly formed ## Fields diff --git a/bank-feeds/docs/models/shared/accountingbankaccount.md b/bank-feeds/docs/models/shared/accountingbankaccount.md index 9ea15427d..96cb94979 100644 --- a/bank-feeds/docs/models/shared/accountingbankaccount.md +++ b/bank-feeds/docs/models/shared/accountingbankaccount.md @@ -4,9 +4,7 @@ > > 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. +> To view bank account data through the Banking API, please refer to the new [Banking: Account](https://docs.codat.io/bank-feeds-api#/schemas/Account) data type. ## Overview diff --git a/bank-feeds/docs/models/shared/bankaccountsaccountingbankaccount.md b/bank-feeds/docs/models/shared/bankaccountsaccountingbankaccount.md index d25efc360..728a1d9a7 100644 --- a/bank-feeds/docs/models/shared/bankaccountsaccountingbankaccount.md +++ b/bank-feeds/docs/models/shared/bankaccountsaccountingbankaccount.md @@ -4,9 +4,7 @@ > > 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. +> To view bank account data through the Banking API, please refer to the new [Banking: Account](https://docs.codat.io/bank-feeds-api#/schemas/Account) data type. ## Overview diff --git a/bank-feeds/docs/models/shared/bankfeedaccountmappingresponse.md b/bank-feeds/docs/models/shared/bankfeedaccountmappingresponse.md index a53ddaf59..c5f69332d 100644 --- a/bank-feeds/docs/models/shared/bankfeedaccountmappingresponse.md +++ b/bank-feeds/docs/models/shared/bankfeedaccountmappingresponse.md @@ -1,13 +1,11 @@ # BankFeedAccountMappingResponse -The result from POSTing a Bank Account mapping. - ## Fields | Field | Type | Required | Description | | -------------------------------------- | -------------------------------------- | -------------------------------------- | -------------------------------------- | | `error` | *OptionalNullable[str]* | :heavy_minus_sign: | Error returned during the post request | -| `status` | *OptionalNullable[str]* | :heavy_minus_sign: | Status of the POST request. | | `source_account_id` | *Optional[str]* | :heavy_minus_sign: | Unique ID for the source account. | +| `status` | *OptionalNullable[str]* | :heavy_minus_sign: | Status of the POST request. | | `target_account_id` | *OptionalNullable[str]* | :heavy_minus_sign: | Unique ID for the target account. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/company.md b/bank-feeds/docs/models/shared/company.md index 8693aac3b..51998485c 100644 --- a/bank-feeds/docs/models/shared/company.md +++ b/bank-feeds/docs/models/shared/company.md @@ -19,4 +19,5 @@ When you create a company, you can specify a `name` and we will automatically ge | `data_connections` | List[[shared.Connection](../../models/shared/connection.md)] | :heavy_minus_sign: | N/A | | | `description` | *Optional[str]* | :heavy_minus_sign: | Additional information about the company. This can be used to store foreign IDs, references, etc. | Requested early access to the new financing scheme. | | `last_sync` | *Optional[str]* | :heavy_minus_sign: | In Codat's data model, dates and times are represented using the ISO 8601 standard. Date and time fields are formatted as strings; for example:

```
2020-10-08T22:40:50Z
2021-01-01T00:00:00
```



When syncing data that contains `DateTime` fields from Codat, make sure you support the following cases when reading time information:

- Coordinated Universal Time (UTC): `2021-11-15T06:00:00Z`
- Unqualified local time: `2021-11-15T01:00:00`
- UTC time offsets: `2021-11-15T01:00:00-05:00`

> Time zones
>
> Not all dates from Codat will contain information about time zones.
> Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced. | 2022-10-23 00:00:00 +0000 UTC | -| `tags` | [Optional[shared.Tags]](../../models/shared/tags.md) | :heavy_minus_sign: | A collection of user-defined key-value pairs that store custom metadata against the company. | | \ No newline at end of file +| `products` | List[*str*] | :heavy_minus_sign: | An array of products that are currently enabled for the company. | | +| `tags` | Dict[str, *str*] | :heavy_minus_sign: | A collection of user-defined key-value pairs that store custom metadata against the company. | | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/companyinformation.md b/bank-feeds/docs/models/shared/companyinformation.md index b17de619a..e981bd251 100644 --- a/bank-feeds/docs/models/shared/companyinformation.md +++ b/bank-feeds/docs/models/shared/companyinformation.md @@ -5,9 +5,10 @@ Information about the company from the underlying accounting software. ## Fields -| Field | Type | Required | Description | -| ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | -| `base_currency` | *Optional[str]* | :heavy_minus_sign: | Currency set in the accounting software of the linked company. | -| `company_name` | *Optional[str]* | :heavy_minus_sign: | Name of the linked company. | -| `multicurrency_enabled` | *OptionalNullable[bool]* | :heavy_minus_sign: | Boolean showing if the organisation has multicurrency enabled | -| `plan_type` | *OptionalNullable[str]* | :heavy_minus_sign: | Accounting software subscription type such as Trial, Demo, Standard | \ No newline at end of file +| Field | Type | Required | Description | +| -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------- | +| `base_currency` | *Optional[str]* | :heavy_minus_sign: | Currency set in the accounting software of the linked company. | +| `company_name` | *Optional[str]* | :heavy_minus_sign: | Name of the linked company. | +| `currencies` | List[*str*] | :heavy_minus_sign: | Array of enabled currencies for the linked company. | +| `multicurrency_enabled` | *Optional[bool]* | :heavy_minus_sign: | Boolean showing if the organisation has multicurrency enabled. | +| `plan_type` | *OptionalNullable[str]* | :heavy_minus_sign: | Accounting software subscription type such as Trial, Demo, Standard. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/companyreference.md b/bank-feeds/docs/models/shared/companyreference.md new file mode 100644 index 000000000..b651f69d5 --- /dev/null +++ b/bank-feeds/docs/models/shared/companyreference.md @@ -0,0 +1,12 @@ +# CompanyReference + + +## Fields + +| Field | Type | Required | Description | Example | +| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| `description` | *Optional[str]* | :heavy_minus_sign: | Additional information about the company. This can be used to store foreign IDs, references, etc. | Requested early access to the new financing scheme. | +| `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for your SMB in Codat. | 8a210b68-6988-11ed-a1eb-0242ac120002 | +| `links` | [Optional[shared.CompanyReferenceLinks]](../../models/shared/companyreferencelinks.md) | :heavy_minus_sign: | A collection of links for the company. | | +| `name` | *Optional[str]* | :heavy_minus_sign: | The name of the company | Codat Ltd. | +| `tags` | Dict[str, *str*] | :heavy_minus_sign: | A collection of user-defined key-value pairs that store custom metadata against the company. | | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/companyreferencelinks.md b/bank-feeds/docs/models/shared/companyreferencelinks.md new file mode 100644 index 000000000..ee01fd320 --- /dev/null +++ b/bank-feeds/docs/models/shared/companyreferencelinks.md @@ -0,0 +1,10 @@ +# CompanyReferenceLinks + +A collection of links for the company. + + +## Fields + +| Field | Type | Required | Description | +| --------------------------------------- | --------------------------------------- | --------------------------------------- | --------------------------------------- | +| `portal` | *Optional[str]* | :heavy_minus_sign: | Link to the company page in the portal. | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/companyrequestbody.md b/bank-feeds/docs/models/shared/companyrequestbody.md index db122dd65..3b85563a1 100644 --- a/bank-feeds/docs/models/shared/companyrequestbody.md +++ b/bank-feeds/docs/models/shared/companyrequestbody.md @@ -7,4 +7,4 @@ | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | `name` | *str* | :heavy_check_mark: | Name of company being connected. | Bank of Dave | | `description` | *Optional[str]* | :heavy_minus_sign: | Additional information about the company. This can be used to store foreign IDs, references, etc. | Requested early access to the new financing scheme. | -| `groups` | List[[shared.GroupReference](../../models/shared/groupreference.md)] | :heavy_minus_sign: | Reference to the groups that the company is assigned to. | | \ No newline at end of file +| `tags` | Dict[str, *str*] | :heavy_minus_sign: | A collection of user-defined key-value pairs that store custom metadata against the company. | | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/connection.md b/bank-feeds/docs/models/shared/connection.md index 0477124fa..08b4eef90 100644 --- a/bank-feeds/docs/models/shared/connection.md +++ b/bank-feeds/docs/models/shared/connection.md @@ -25,7 +25,6 @@ Before you can use a data connection to pull or push data, the company must gran | `source_id` | *str* | :heavy_check_mark: | A source-specific ID used to distinguish between different sources originating from the same data connection. In general, a data connection is a single data source. However, for TrueLayer, `sourceId` is associated with a specific bank and has a many-to-one relationship with the `integrationId`. | 35b92968-9851-4095-ad60-395c95cbcba4 | | `source_type` | [shared.SourceType](../../models/shared/sourcetype.md) | :heavy_check_mark: | The type of platform of the connection. | Accounting | | `status` | [shared.DataConnectionStatus](../../models/shared/dataconnectionstatus.md) | :heavy_check_mark: | The current authorization status of the data connection. | | -| `additional_properties` | *Optional[Any]* | :heavy_minus_sign: | N/A | | | `connection_info` | Dict[str, *str*] | :heavy_minus_sign: | N/A | | | `data_connection_errors` | List[[shared.DataConnectionError](../../models/shared/dataconnectionerror.md)] | :heavy_minus_sign: | N/A | | | `last_sync` | *Optional[str]* | :heavy_minus_sign: | In Codat's data model, dates and times are represented using the ISO 8601 standard. Date and time fields are formatted as strings; for example:

```
2020-10-08T22:40:50Z
2021-01-01T00:00:00
```



When syncing data that contains `DateTime` fields from Codat, make sure you support the following cases when reading time information:

- Coordinated Universal Time (UTC): `2021-11-15T06:00:00Z`
- Unqualified local time: `2021-11-15T01:00:00`
- UTC time offsets: `2021-11-15T01:00:00-05:00`

> Time zones
>
> Not all dates from Codat will contain information about time zones.
> Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced. | 2022-10-23 00:00:00 +0000 UTC | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/groupreference.md b/bank-feeds/docs/models/shared/groupreference.md deleted file mode 100644 index 31666edf4..000000000 --- a/bank-feeds/docs/models/shared/groupreference.md +++ /dev/null @@ -1,8 +0,0 @@ -# GroupReference - - -## Fields - -| Field | Type | Required | Description | Example | -| ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | -| `id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for the group. | 60d2fa12-8a04-11ee-b9d1-0242ac120002 | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/sourceaccountwebhookpayload.md b/bank-feeds/docs/models/shared/sourceaccountwebhookpayload.md index 3c2332d0e..73bc9923d 100644 --- a/bank-feeds/docs/models/shared/sourceaccountwebhookpayload.md +++ b/bank-feeds/docs/models/shared/sourceaccountwebhookpayload.md @@ -7,4 +7,5 @@ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `company_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for your SMB in Codat. | 8a210b68-6988-11ed-a1eb-0242ac120002 | | `connection_id` | *Optional[str]* | :heavy_minus_sign: | Unique identifier for a company's data connection. | 2e9d2c44-f675-40ba-8049-353bfcb5e171 | +| `reference_company` | [Optional[shared.CompanyReference]](../../models/shared/companyreference.md) | :heavy_minus_sign: | N/A | | | `source_account` | [Optional[shared.SourceAccount]](../../models/shared/sourceaccount.md) | :heavy_minus_sign: | The target bank account in a supported accounting software for ingestion into a bank feed. | {
"id": "acc-002",
"accountName": "account-081",
"sortCode": "123456",
"accountType": "Credit",
"accountNumber": "12345670",
"currency": "GBP",
"balance": 99.99,
"modifiedDate": "2023-01-09T14:14:14.1057478Z",
"status": "pending"
} | \ No newline at end of file diff --git a/bank-feeds/docs/models/shared/tags.md b/bank-feeds/docs/models/shared/tags.md deleted file mode 100644 index 6de993aa8..000000000 --- a/bank-feeds/docs/models/shared/tags.md +++ /dev/null @@ -1,9 +0,0 @@ -# Tags - -A collection of user-defined key-value pairs that store custom metadata against the company. - - -## Fields - -| Field | Type | Required | Description | -| ----------- | ----------- | ----------- | ----------- | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/accountmapping/README.md b/bank-feeds/docs/sdks/accountmapping/README.md index 0090fb5d1..a7c74ed34 100644 --- a/bank-feeds/docs/sdks/accountmapping/README.md +++ b/bank-feeds/docs/sdks/accountmapping/README.md @@ -8,17 +8,19 @@ Extra functionality for building an account management UI. ### Available Operations * [create](#create) - Create bank feed account mapping -* [get](#get) - List bank feed account mappings +* [get](#get) - List bank feed accounts ## create The *Create bank account mapping* endpoint creates a new mapping between a source bank account and a potential account in the accounting software (target account). -A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end users account in the underlying platform). +A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end user's account in the underlying software). -To find valid target account options, first call list bank feed account mappings. +To find valid target account options, first call the [List bank feed account mappings](https://docs.codat.io//bank-feeds-api#/operations/get-bank-account-mapping) endpoint. -This endpoint is only needed if building an account management UI. +> **For custom builds only** +> +> Only use this endpoint if you are building your own account management UI. ### Example Usage @@ -60,19 +62,20 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## get -The *List bank account mappings* endpoint returns information about a source bank account and any current or potential target mapping accounts. +The *List bank accounts* endpoint returns information about a source bank account and any current or potential target mapping accounts. -A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end users account in the underlying platform). +A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end user's account in the underlying software). -This endpoint is only needed if building an account management UI. +> **For custom builds only** +> +> Only use this endpoint if you are building your own account management UI. ### Example Usage @@ -106,11 +109,11 @@ if res is not None: ### Response -**[shared.BankFeedMapping](../../models/shared/bankfeedmapping.md)** +**[List[shared.BankFeedMapping]](../../models/.md)** ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/bankaccounts/README.md b/bank-feeds/docs/sdks/bankaccounts/README.md index 7694143aa..a48ee1f1c 100644 --- a/bank-feeds/docs/sdks/bankaccounts/README.md +++ b/bank-feeds/docs/sdks/bankaccounts/README.md @@ -19,9 +19,7 @@ The *Create bank account* endpoint creates a new [bank account](https://docs.cod **Integration-specific behaviour** -Required data may vary by integration. To see what data to post, first call [Get create/update bank account model](https://docs.codat.io/bank-feeds-api#/operations/get-create-update-bankAccounts-model). - -Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankAccounts) for integrations that support creating an account. +Required data may vary by integration. To see what data to post, first call [Get create/update bank account model](https://docs.codat.io/bank-feeds-api#/operations/get-create-update-bankAccounts-model). ### Example Usage @@ -63,11 +61,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## get_create_model @@ -78,8 +75,6 @@ The *Get create/update bank account model* endpoint returns the expected data fo **Integration-specific behaviour** See the *response examples* for integration-specific indicative models. - -Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankAccounts) for integrations that support creating and updating a bank account. ### Example Usage @@ -118,11 +113,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## list @@ -173,7 +167,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ----------------------------------- | ----------------------------------- | ----------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,409,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| ------------------------------------------- | ------------------------------------------- | ------------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 409, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/companies/README.md b/bank-feeds/docs/sdks/companies/README.md index 2adad1249..cc922cff2 100644 --- a/bank-feeds/docs/sdks/companies/README.md +++ b/bank-feeds/docs/sdks/companies/README.md @@ -37,11 +37,6 @@ s = CodatBankFeeds( res = s.companies.create(request={ "name": "Technicalium", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }) if res is not None: @@ -63,11 +58,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 400,401,402,403,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## delete @@ -106,11 +100,10 @@ s.companies.delete(request={ ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## get @@ -155,15 +148,14 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## list -The *List companies* endpoint returns a list of [companies] associated to your instances. +The *List companies* endpoint returns a list of [companies](https://docs.codat.io/bank-feeds-api#/schemas/Company) associated to your instances. A [company](https://docs.codat.io/bank-feeds-api#/schemas/Company) represents a business sharing access to their data. Each company can have multiple [connections](https://docs.codat.io/bank-feeds-api#/schemas/Connection) to different data sources, such as one connection to Xero for accounting data, two connections to Plaid for two bank accounts, and a connection to Zettle for POS data. @@ -206,16 +198,14 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## update Use the *Update company* endpoint to update both the name and description of the company. -If you use [groups](https://docs.codat.io/bank-feeds-api#/schemas/Group) to manage a set of companies, use the [Add company](https://docs.codat.io/bank-feeds-api#/operations/add-company-to-group) or [Remove company](https://docs.codat.io/bank-feeds-api#/operations/remove-company-from-group) endpoints to add or remove a company from a group. A [company](https://docs.codat.io/bank-feeds-api#/schemas/Company) represents a business sharing access to their data. Each company can have multiple [connections](https://docs.codat.io/bank-feeds-api#/schemas/Connection) to different data sources, such as one connection to Xero for accounting data, two connections to Plaid for two bank accounts, and a connection to Zettle for POS data. @@ -237,11 +227,6 @@ res = s.companies.update(request={ "company_request_body": { "name": "New Name", "description": "Requested early access to the new financing scheme.", - "groups": [ - { - "id": "60d2fa12-8a04-11ee-b9d1-0242ac120002", - }, - ], }, }) @@ -264,7 +249,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/companyinformation/README.md b/bank-feeds/docs/sdks/companyinformation/README.md index 6dac64f69..8e1ab9aa7 100644 --- a/bank-feeds/docs/sdks/companyinformation/README.md +++ b/bank-feeds/docs/sdks/companyinformation/README.md @@ -51,7 +51,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/configuration/README.md b/bank-feeds/docs/sdks/configuration/README.md index ab818be64..3ad15d0dd 100644 --- a/bank-feeds/docs/sdks/configuration/README.md +++ b/bank-feeds/docs/sdks/configuration/README.md @@ -49,11 +49,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## set @@ -97,7 +96,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/connections/README.md b/bank-feeds/docs/sdks/connections/README.md index 62a8b6d1c..afa018878 100644 --- a/bank-feeds/docs/sdks/connections/README.md +++ b/bank-feeds/docs/sdks/connections/README.md @@ -17,7 +17,7 @@ Create new and manage existing data connections for a company. Creates a connection for the company by providing a valid `platformKey`. -Use the [List Integrations](https://docs.codat.io/bank-feeds-api#/operations/list-integrations) endpoint to access valid platform keys. +Use the [List Integrations](https://docs.codat.io/platform-api#/operations/list-integrations) endpoint to access valid platform keys. ### Example Usage @@ -57,11 +57,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## delete @@ -98,11 +97,10 @@ s.connections.delete(request={ ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## get @@ -144,11 +142,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## list @@ -193,11 +190,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## unlink @@ -242,7 +238,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/sourceaccounts/README.md b/bank-feeds/docs/sdks/sourceaccounts/README.md index b0aca23e9..c048aa1de 100644 --- a/bank-feeds/docs/sdks/sourceaccounts/README.md +++ b/bank-feeds/docs/sdks/sourceaccounts/README.md @@ -100,11 +100,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## delete @@ -144,11 +143,10 @@ s.source_accounts.delete(request={ ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## delete_credentials @@ -186,18 +184,20 @@ s.source_accounts.delete_credentials(request={ ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## generate_credentials -The _Generate Bank Account Credentials_ endpoint can be used to generate credentials for QuickBooks Online to use for authentication of the Bank Feed in their portal, each time this is used a new set of credentials will be generated. +The _Generate bank account credentials_ endpoint can be used to generate credentials for QuickBooks Online to authenticate the Bank Feed in the QBO portal. Each time this endpoint is called, a new set of credentials will be generated. The old credentials will still be valid until the revoke credentials endpoint is used, which will revoke all credentials associated to the data connection. +> **For QuickBooks Online only** +> +> Only call this endpoint when onboarding SMBs that use QuickBooks Online. ### Example Usage @@ -236,17 +236,16 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## list The _List source accounts_ endpoint returns a list of [source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) for a given company's connection. -[source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) are the bank's bank account within Codat's domain from which transactions are synced into the accounting platform. +[Source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) are the bank's bank account within Codat's domain from which transactions are synced into the accounting platform. > ### Versioning > If you are integrating the Bank Feeds API with Codat after August 1, 2024, please use the v2 version of the API, as detailed in the schema below. For integrations completed before August 1, 2024, select the v1 version from the schema dropdown below. @@ -287,11 +286,10 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## update @@ -352,7 +350,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/sync/README.md b/bank-feeds/docs/sdks/sync/README.md index 5fd3b9f5e..7cf3de0e1 100644 --- a/bank-feeds/docs/sdks/sync/README.md +++ b/bank-feeds/docs/sdks/sync/README.md @@ -48,7 +48,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/docs/sdks/transactions/README.md b/bank-feeds/docs/sdks/transactions/README.md index 062246a22..7dca8ec53 100644 --- a/bank-feeds/docs/sdks/transactions/README.md +++ b/bank-feeds/docs/sdks/transactions/README.md @@ -21,8 +21,6 @@ Create new bank account transactions for a company's connections, and see previo Required data may vary by integration. To see what data to post, first call [Get create bank transaction model](https://docs.codat.io/bank-feeds-api#/operations/get-create-bankTransactions-model). -Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankTransactions) for integrations that support creating a bank account transactions. - ### Example Usage @@ -100,15 +98,18 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## get_create_operation -Retrieve push operation. +The **Get create operation** endpoint returns a specific [write operation](/using-the-api/push) identified by the `pushOperationKey` that was performed on the company. + +Write operations are actions that send requests to Codat, enabling the creation, updating, deletion of records, or uploading attachments in the connected accounting software. + +For bank feeds, your push operations will only relate to the `bankTransactions` data type. ### Example Usage @@ -146,15 +147,18 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| --------------------------- | --------------------------- | --------------------------- | -| errors.ErrorMessage | 401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | - +| Error Type | Status Code | Content Type | +| --------------------------------- | --------------------------------- | --------------------------------- | +| errors.ErrorMessage | 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | ## list_create_operations -List create operations. +The **List create operations** endpoint returns a list of [write operations](/using-the-api/push) performed on the company. + +Write operations are actions that send requests to Codat, enabling the creation, updating, deletion of records, or uploading attachments in the connected accounting software. + +For bank feeds, use this endpoint to view write operations related to the `bankTransactions` data type. ### Example Usage @@ -195,7 +199,7 @@ if res is not None: ### Errors -| Error Object | Status Code | Content Type | -| ------------------------------- | ------------------------------- | ------------------------------- | -| errors.ErrorMessage | 400,401,402,403,404,429,500,503 | application/json | -| errors.SDKError | 4xx-5xx | */* | +| Error Type | Status Code | Content Type | +| -------------------------------------- | -------------------------------------- | -------------------------------------- | +| errors.ErrorMessage | 400, 401, 402, 403, 404, 429, 500, 503 | application/json | +| errors.SDKError | 4XX, 5XX | \*/\* | \ No newline at end of file diff --git a/bank-feeds/poetry.lock b/bank-feeds/poetry.lock index 0a33995a2..14c95acf7 100644 --- a/bank-feeds/poetry.lock +++ b/bank-feeds/poetry.lock @@ -295,21 +295,21 @@ type = ["mypy (>=1.11.2)"] [[package]] name = "pydantic" -version = "2.9.1" +version = "2.9.2" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.9.1-py3-none-any.whl", hash = "sha256:7aff4db5fdf3cf573d4b3c30926a510a10e19a0774d38fc4967f78beb6deb612"}, - {file = "pydantic-2.9.1.tar.gz", hash = "sha256:1363c7d975c7036df0db2b4a61f2e062fbc0aa5ab5f2772e0ffc7191a4f4bce2"}, + {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, + {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.3" +pydantic-core = "2.23.4" typing-extensions = [ - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, + {version = ">=4.6.1", markers = "python_version < \"3.13\""}, ] [package.extras] @@ -318,100 +318,100 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.23.3" +version = "2.23.4" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.23.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:7f10a5d1b9281392f1bf507d16ac720e78285dfd635b05737c3911637601bae6"}, - {file = "pydantic_core-2.23.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3c09a7885dd33ee8c65266e5aa7fb7e2f23d49d8043f089989726391dd7350c5"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6470b5a1ec4d1c2e9afe928c6cb37eb33381cab99292a708b8cb9aa89e62429b"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9172d2088e27d9a185ea0a6c8cebe227a9139fd90295221d7d495944d2367700"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86fc6c762ca7ac8fbbdff80d61b2c59fb6b7d144aa46e2d54d9e1b7b0e780e01"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0cb80fd5c2df4898693aa841425ea1727b1b6d2167448253077d2a49003e0ed"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03667cec5daf43ac4995cefa8aaf58f99de036204a37b889c24a80927b629cec"}, - {file = "pydantic_core-2.23.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:047531242f8e9c2db733599f1c612925de095e93c9cc0e599e96cf536aaf56ba"}, - {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:5499798317fff7f25dbef9347f4451b91ac2a4330c6669821c8202fd354c7bee"}, - {file = "pydantic_core-2.23.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bbb5e45eab7624440516ee3722a3044b83fff4c0372efe183fd6ba678ff681fe"}, - {file = "pydantic_core-2.23.3-cp310-none-win32.whl", hash = "sha256:8b5b3ed73abb147704a6e9f556d8c5cb078f8c095be4588e669d315e0d11893b"}, - {file = "pydantic_core-2.23.3-cp310-none-win_amd64.whl", hash = "sha256:2b603cde285322758a0279995b5796d64b63060bfbe214b50a3ca23b5cee3e83"}, - {file = "pydantic_core-2.23.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:c889fd87e1f1bbeb877c2ee56b63bb297de4636661cc9bbfcf4b34e5e925bc27"}, - {file = "pydantic_core-2.23.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ea85bda3189fb27503af4c45273735bcde3dd31c1ab17d11f37b04877859ef45"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7f7f72f721223f33d3dc98a791666ebc6a91fa023ce63733709f4894a7dc611"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b2b55b0448e9da68f56b696f313949cda1039e8ec7b5d294285335b53104b61"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c24574c7e92e2c56379706b9a3f07c1e0c7f2f87a41b6ee86653100c4ce343e5"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2b05e6ccbee333a8f4b8f4d7c244fdb7a979e90977ad9c51ea31261e2085ce0"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2c409ce1c219c091e47cb03feb3c4ed8c2b8e004efc940da0166aaee8f9d6c8"}, - {file = "pydantic_core-2.23.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d965e8b325f443ed3196db890d85dfebbb09f7384486a77461347f4adb1fa7f8"}, - {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f56af3a420fb1ffaf43ece3ea09c2d27c444e7c40dcb7c6e7cf57aae764f2b48"}, - {file = "pydantic_core-2.23.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b01a078dd4f9a52494370af21aa52964e0a96d4862ac64ff7cea06e0f12d2c5"}, - {file = "pydantic_core-2.23.3-cp311-none-win32.whl", hash = "sha256:560e32f0df04ac69b3dd818f71339983f6d1f70eb99d4d1f8e9705fb6c34a5c1"}, - {file = "pydantic_core-2.23.3-cp311-none-win_amd64.whl", hash = "sha256:c744fa100fdea0d000d8bcddee95213d2de2e95b9c12be083370b2072333a0fa"}, - {file = "pydantic_core-2.23.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e0ec50663feedf64d21bad0809f5857bac1ce91deded203efc4a84b31b2e4305"}, - {file = "pydantic_core-2.23.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:db6e6afcb95edbe6b357786684b71008499836e91f2a4a1e55b840955b341dbb"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:98ccd69edcf49f0875d86942f4418a4e83eb3047f20eb897bffa62a5d419c8fa"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a678c1ac5c5ec5685af0133262103defb427114e62eafeda12f1357a12140162"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:01491d8b4d8db9f3391d93b0df60701e644ff0894352947f31fff3e52bd5c801"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fcf31facf2796a2d3b7fe338fe8640aa0166e4e55b4cb108dbfd1058049bf4cb"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7200fd561fb3be06827340da066df4311d0b6b8eb0c2116a110be5245dceb326"}, - {file = "pydantic_core-2.23.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dc1636770a809dee2bd44dd74b89cc80eb41172bcad8af75dd0bc182c2666d4c"}, - {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:67a5def279309f2e23014b608c4150b0c2d323bd7bccd27ff07b001c12c2415c"}, - {file = "pydantic_core-2.23.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:748bdf985014c6dd3e1e4cc3db90f1c3ecc7246ff5a3cd4ddab20c768b2f1dab"}, - {file = "pydantic_core-2.23.3-cp312-none-win32.whl", hash = "sha256:255ec6dcb899c115f1e2a64bc9ebc24cc0e3ab097775755244f77360d1f3c06c"}, - {file = "pydantic_core-2.23.3-cp312-none-win_amd64.whl", hash = "sha256:40b8441be16c1e940abebed83cd006ddb9e3737a279e339dbd6d31578b802f7b"}, - {file = "pydantic_core-2.23.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:6daaf5b1ba1369a22c8b050b643250e3e5efc6a78366d323294aee54953a4d5f"}, - {file = "pydantic_core-2.23.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d015e63b985a78a3d4ccffd3bdf22b7c20b3bbd4b8227809b3e8e75bc37f9cb2"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3fc572d9b5b5cfe13f8e8a6e26271d5d13f80173724b738557a8c7f3a8a3791"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f6bd91345b5163ee7448bee201ed7dd601ca24f43f439109b0212e296eb5b423"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc379c73fd66606628b866f661e8785088afe2adaba78e6bbe80796baf708a63"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbdce4b47592f9e296e19ac31667daed8753c8367ebb34b9a9bd89dacaa299c9"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3cf31edf405a161a0adad83246568647c54404739b614b1ff43dad2b02e6d5"}, - {file = "pydantic_core-2.23.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8e22b477bf90db71c156f89a55bfe4d25177b81fce4aa09294d9e805eec13855"}, - {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:0a0137ddf462575d9bce863c4c95bac3493ba8e22f8c28ca94634b4a1d3e2bb4"}, - {file = "pydantic_core-2.23.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:203171e48946c3164fe7691fc349c79241ff8f28306abd4cad5f4f75ed80bc8d"}, - {file = "pydantic_core-2.23.3-cp313-none-win32.whl", hash = "sha256:76bdab0de4acb3f119c2a4bff740e0c7dc2e6de7692774620f7452ce11ca76c8"}, - {file = "pydantic_core-2.23.3-cp313-none-win_amd64.whl", hash = "sha256:37ba321ac2a46100c578a92e9a6aa33afe9ec99ffa084424291d84e456f490c1"}, - {file = "pydantic_core-2.23.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d063c6b9fed7d992bcbebfc9133f4c24b7a7f215d6b102f3e082b1117cddb72c"}, - {file = "pydantic_core-2.23.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6cb968da9a0746a0cf521b2b5ef25fc5a0bee9b9a1a8214e0a1cfaea5be7e8a4"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edbefe079a520c5984e30e1f1f29325054b59534729c25b874a16a5048028d16"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:cbaaf2ef20d282659093913da9d402108203f7cb5955020bd8d1ae5a2325d1c4"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb539d7e5dc4aac345846f290cf504d2fd3c1be26ac4e8b5e4c2b688069ff4cf"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e6f33503c5495059148cc486867e1d24ca35df5fc064686e631e314d959ad5b"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04b07490bc2f6f2717b10c3969e1b830f5720b632f8ae2f3b8b1542394c47a8e"}, - {file = "pydantic_core-2.23.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:03795b9e8a5d7fda05f3873efc3f59105e2dcff14231680296b87b80bb327295"}, - {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c483dab0f14b8d3f0df0c6c18d70b21b086f74c87ab03c59250dbf6d3c89baba"}, - {file = "pydantic_core-2.23.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b2682038e255e94baf2c473dca914a7460069171ff5cdd4080be18ab8a7fd6e"}, - {file = "pydantic_core-2.23.3-cp38-none-win32.whl", hash = "sha256:f4a57db8966b3a1d1a350012839c6a0099f0898c56512dfade8a1fe5fb278710"}, - {file = "pydantic_core-2.23.3-cp38-none-win_amd64.whl", hash = "sha256:13dd45ba2561603681a2676ca56006d6dee94493f03d5cadc055d2055615c3ea"}, - {file = "pydantic_core-2.23.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:82da2f4703894134a9f000e24965df73cc103e31e8c31906cc1ee89fde72cbd8"}, - {file = "pydantic_core-2.23.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dd9be0a42de08f4b58a3cc73a123f124f65c24698b95a54c1543065baca8cf0e"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89b731f25c80830c76fdb13705c68fef6a2b6dc494402987c7ea9584fe189f5d"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c6de1ec30c4bb94f3a69c9f5f2182baeda5b809f806676675e9ef6b8dc936f28"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb68b41c3fa64587412b104294b9cbb027509dc2f6958446c502638d481525ef"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c3980f2843de5184656aab58698011b42763ccba11c4a8c35936c8dd6c7068c"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94f85614f2cba13f62c3c6481716e4adeae48e1eaa7e8bac379b9d177d93947a"}, - {file = "pydantic_core-2.23.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:510b7fb0a86dc8f10a8bb43bd2f97beb63cffad1203071dc434dac26453955cd"}, - {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:1eba2f7ce3e30ee2170410e2171867ea73dbd692433b81a93758ab2de6c64835"}, - {file = "pydantic_core-2.23.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b259fd8409ab84b4041b7b3f24dcc41e4696f180b775961ca8142b5b21d0e70"}, - {file = "pydantic_core-2.23.3-cp39-none-win32.whl", hash = "sha256:40d9bd259538dba2f40963286009bf7caf18b5112b19d2b55b09c14dde6db6a7"}, - {file = "pydantic_core-2.23.3-cp39-none-win_amd64.whl", hash = "sha256:5a8cd3074a98ee70173a8633ad3c10e00dcb991ecec57263aacb4095c5efb958"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f399e8657c67313476a121a6944311fab377085ca7f490648c9af97fc732732d"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6b5547d098c76e1694ba85f05b595720d7c60d342f24d5aad32c3049131fa5c4"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0dda0290a6f608504882d9f7650975b4651ff91c85673341789a476b1159f211"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65b6e5da855e9c55a0c67f4db8a492bf13d8d3316a59999cfbaf98cc6e401961"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:09e926397f392059ce0afdcac920df29d9c833256354d0c55f1584b0b70cf07e"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:87cfa0ed6b8c5bd6ae8b66de941cece179281239d482f363814d2b986b79cedc"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:e61328920154b6a44d98cabcb709f10e8b74276bc709c9a513a8c37a18786cc4"}, - {file = "pydantic_core-2.23.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce3317d155628301d649fe5e16a99528d5680af4ec7aa70b90b8dacd2d725c9b"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e89513f014c6be0d17b00a9a7c81b1c426f4eb9224b15433f3d98c1a071f8433"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:4f62c1c953d7ee375df5eb2e44ad50ce2f5aff931723b398b8bc6f0ac159791a"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2718443bc671c7ac331de4eef9b673063b10af32a0bb385019ad61dcf2cc8f6c"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0d90e08b2727c5d01af1b5ef4121d2f0c99fbee692c762f4d9d0409c9da6541"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b676583fc459c64146debea14ba3af54e540b61762dfc0613dc4e98c3f66eeb"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:50e4661f3337977740fdbfbae084ae5693e505ca2b3130a6d4eb0f2281dc43b8"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:68f4cf373f0de6abfe599a38307f4417c1c867ca381c03df27c873a9069cda25"}, - {file = "pydantic_core-2.23.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:59d52cf01854cb26c46958552a21acb10dd78a52aa34c86f284e66b209db8cab"}, - {file = "pydantic_core-2.23.3.tar.gz", hash = "sha256:3cb0f65d8b4121c1b015c60104a685feb929a29d7cf204387c7f2688c7974690"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, + {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, + {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, + {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, + {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, + {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, + {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, + {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, + {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, + {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, + {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, + {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, + {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, + {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, + {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, + {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, + {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, + {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, + {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, + {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, + {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, + {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, + {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, + {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, + {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, + {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, + {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, + {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, + {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, + {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, + {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, + {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, + {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, + {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, ] [package.dependencies] @@ -432,8 +432,8 @@ files = [ astroid = ">=3.2.2,<=3.3.0-dev0" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} dill = [ - {version = ">=0.2", markers = "python_version < \"3.11\""}, {version = ">=0.3.7", markers = "python_version >= \"3.12\""}, + {version = ">=0.2", markers = "python_version < \"3.11\""}, {version = ">=0.3.6", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, ] isort = ">=4.2.5,<5.13.0 || >5.13.0,<6" @@ -545,4 +545,4 @@ typing-extensions = ">=3.7.4" [metadata] lock-version = "2.0" python-versions = "^3.8" -content-hash = "6bb5f77afb8fcbe7327ccd1fcc33f5c279c6a2582d43be73b69c2a94b836b85d" +content-hash = "9e57d395164aeb8637702f9d37b29cff9bdc5ebcbd44305b91808c122428bacb" diff --git a/bank-feeds/pyproject.toml b/bank-feeds/pyproject.toml index 5dc3009fd..f93ec5f89 100644 --- a/bank-feeds/pyproject.toml +++ b/bank-feeds/pyproject.toml @@ -1,7 +1,7 @@ [tool.poetry] name = "codat-bankfeeds" -version = "7.0.0" -description = "Set up bank feeds from accounts in your application to supported accounting platforms." +version = "8.0.0" +description = "Set up bank feeds from accounts in your application to supported accounting software." authors = ["Speakeasy",] readme = "README-PYPI.md" repository = "https://github.com/codatio/client-sdk-python.git" @@ -21,7 +21,7 @@ python = "^3.8" eval-type-backport = "^0.2.0" httpx = "^0.27.0" jsonpath-python = "^1.0.6" -pydantic = "~2.9.0" +pydantic = "~2.9.2" python-dateutil = "2.8.2" typing-inspect = "^0.9.0" diff --git a/bank-feeds/scripts/compile.sh b/bank-feeds/scripts/compile.sh deleted file mode 100755 index fafe635b2..000000000 --- a/bank-feeds/scripts/compile.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env bash - -set -o pipefail # Ensure pipeline failures are propagated - -# Use temporary files to store outputs and exit statuses -declare -A output_files -declare -A status_files - -# Function to run a command with temporary output and status files -run_command() { - local cmd="$1" - local key="$2" - local output_file="$3" - local status_file="$4" - - # Run the command and store output and exit status - { - eval "$cmd" - echo $? > "$status_file" - } &> "$output_file" & -} - -poetry run python scripts/prepare-readme.py - -# Create temporary files for outputs and statuses -for cmd in compileall pylint mypy pyright; do - output_files[$cmd]=$(mktemp) - status_files[$cmd]=$(mktemp) -done - -# Collect PIDs for background processes -declare -a pids - -# Run commands in parallel using temporary files -echo "Running python -m compileall" -run_command 'poetry run python -m compileall -q . && echo "Success"' 'compileall' "${output_files[compileall]}" "${status_files[compileall]}" -pids+=($!) - -echo "Running pylint" -run_command 'poetry run pylint src' 'pylint' "${output_files[pylint]}" "${status_files[pylint]}" -pids+=($!) - -echo "Running mypy" -run_command 'poetry run mypy src' 'mypy' "${output_files[mypy]}" "${status_files[mypy]}" -pids+=($!) - -echo "Running pyright (optional)" -run_command 'if command -v pyright > /dev/null 2>&1; then pyright src; else echo "pyright not found, skipping"; fi' 'pyright' "${output_files[pyright]}" "${status_files[pyright]}" -pids+=($!) - -# Wait for all processes to complete -echo "Waiting for processes to complete" -for pid in "${pids[@]}"; do - wait "$pid" -done - -# Print output sequentially and check for failures -failed=false -for key in "${!output_files[@]}"; do - echo "--- Output from Command: $key ---" - echo - cat "${output_files[$key]}" - echo # Empty line for separation - echo "--- End of Output from Command: $key ---" - echo - - exit_status=$(cat "${status_files[$key]}") - if [ "$exit_status" -ne 0 ]; then - echo "Command $key failed with exit status $exit_status" >&2 - failed=true - fi -done - -# Clean up temporary files -for tmp_file in "${output_files[@]}" "${status_files[@]}"; do - rm -f "$tmp_file" -done - -if $failed; then - echo "One or more commands failed." >&2 - exit 1 -else - echo "All commands completed successfully." - exit 0 -fi diff --git a/bank-feeds/src/codat_bankfeeds/__init__.py b/bank-feeds/src/codat_bankfeeds/__init__.py index d8d60c471..5c3491793 100644 --- a/bank-feeds/src/codat_bankfeeds/__init__.py +++ b/bank-feeds/src/codat_bankfeeds/__init__.py @@ -1,4 +1,8 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from ._version import __title__, __version__ from .sdk import * from .sdkconfiguration import * + + +VERSION: str = __version__ diff --git a/bank-feeds/src/codat_bankfeeds/_version.py b/bank-feeds/src/codat_bankfeeds/_version.py new file mode 100644 index 000000000..9579a8484 --- /dev/null +++ b/bank-feeds/src/codat_bankfeeds/_version.py @@ -0,0 +1,12 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +import importlib.metadata + +__title__: str = "codat-bankfeeds" +__version__: str = "8.0.0" + +try: + if __package__ is not None: + __version__ = importlib.metadata.version(__package__) +except importlib.metadata.PackageNotFoundError: + pass diff --git a/bank-feeds/src/codat_bankfeeds/account_mapping.py b/bank-feeds/src/codat_bankfeeds/account_mapping.py index 78e533b3b..93668b67c 100644 --- a/bank-feeds/src/codat_bankfeeds/account_mapping.py +++ b/bank-feeds/src/codat_bankfeeds/account_mapping.py @@ -5,7 +5,7 @@ from codat_bankfeeds._hooks import HookContext from codat_bankfeeds.models import errors, operations, shared from codat_bankfeeds.types import BaseModel, OptionalNullable, UNSET -from typing import Any, Optional, Union, cast +from typing import Any, List, Optional, Union, cast class AccountMapping(BaseSDK): @@ -26,11 +26,13 @@ def create( The *Create bank account mapping* endpoint creates a new mapping between a source bank account and a potential account in the accounting software (target account). - A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end users account in the underlying platform). + A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end user's account in the underlying software). - To find valid target account options, first call list bank feed account mappings. + To find valid target account options, first call the [List bank feed account mappings](https://docs.codat.io//bank-feeds-api#/operations/get-bank-account-mapping) endpoint. - This endpoint is only needed if building an account management UI. + > **For custom builds only** + > + > Only use this endpoint if you are building your own account management UI. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -120,15 +122,17 @@ def create( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -147,11 +151,13 @@ async def create_async( The *Create bank account mapping* endpoint creates a new mapping between a source bank account and a potential account in the accounting software (target account). - A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end users account in the underlying platform). + A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end user's account in the underlying software). - To find valid target account options, first call list bank feed account mappings. + To find valid target account options, first call the [List bank feed account mappings](https://docs.codat.io//bank-feeds-api#/operations/get-bank-account-mapping) endpoint. - This endpoint is only needed if building an account management UI. + > **For custom builds only** + > + > Only use this endpoint if you are building your own account management UI. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -241,15 +247,17 @@ async def create_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -263,14 +271,16 @@ def get( retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, - ) -> Optional[shared.BankFeedMapping]: - r"""List bank feed account mappings + ) -> Optional[List[shared.BankFeedMapping]]: + r"""List bank feed accounts - The *List bank account mappings* endpoint returns information about a source bank account and any current or potential target mapping accounts. + The *List bank accounts* endpoint returns information about a source bank account and any current or potential target mapping accounts. - A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end users account in the underlying platform). + A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end user's account in the underlying software). - This endpoint is only needed if building an account management UI. + > **For custom builds only** + > + > Only use this endpoint if you are building your own account management UI. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -339,7 +349,9 @@ def get( data: Any = None if utils.match_response(http_res, "200", "application/json"): - return utils.unmarshal_json(http_res.text, Optional[shared.BankFeedMapping]) + return utils.unmarshal_json( + http_res.text, Optional[List[shared.BankFeedMapping]] + ) if utils.match_response( http_res, ["401", "402", "403", "404", "429", "500", "503"], @@ -348,15 +360,17 @@ def get( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -370,14 +384,16 @@ async def get_async( retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, - ) -> Optional[shared.BankFeedMapping]: - r"""List bank feed account mappings + ) -> Optional[List[shared.BankFeedMapping]]: + r"""List bank feed accounts - The *List bank account mappings* endpoint returns information about a source bank account and any current or potential target mapping accounts. + The *List bank accounts* endpoint returns information about a source bank account and any current or potential target mapping accounts. - A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end users account in the underlying platform). + A bank feed account mapping is a specified link between the source account (provided by the Codat user) and the target account (the end user's account in the underlying software). - This endpoint is only needed if building an account management UI. + > **For custom builds only** + > + > Only use this endpoint if you are building your own account management UI. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -446,7 +462,9 @@ async def get_async( data: Any = None if utils.match_response(http_res, "200", "application/json"): - return utils.unmarshal_json(http_res.text, Optional[shared.BankFeedMapping]) + return utils.unmarshal_json( + http_res.text, Optional[List[shared.BankFeedMapping]] + ) if utils.match_response( http_res, ["401", "402", "403", "404", "429", "500", "503"], @@ -455,14 +473,16 @@ async def get_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/bank_accounts.py b/bank-feeds/src/codat_bankfeeds/bank_accounts.py index 9ff0cc6cf..d2952bc60 100644 --- a/bank-feeds/src/codat_bankfeeds/bank_accounts.py +++ b/bank-feeds/src/codat_bankfeeds/bank_accounts.py @@ -32,8 +32,6 @@ def create( Required data may vary by integration. To see what data to post, first call [Get create/update bank account model](https://docs.codat.io/bank-feeds-api#/operations/get-create-update-bankAccounts-model). - Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankAccounts) for integrations that support creating an account. - :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -120,15 +118,17 @@ def create( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -153,8 +153,6 @@ async def create_async( Required data may vary by integration. To see what data to post, first call [Get create/update bank account model](https://docs.codat.io/bank-feeds-api#/operations/get-create-update-bankAccounts-model). - Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankAccounts) for integrations that support creating an account. - :param request: The request object to send. :param retries: Override the default retry configuration for this method :param server_url: Override the default server URL for this method @@ -241,15 +239,17 @@ async def create_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -274,8 +274,6 @@ def get_create_model( See the *response examples* for integration-specific indicative models. - Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankAccounts) for integrations that support creating and updating a bank account. - :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -355,15 +353,17 @@ def get_create_model( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -388,8 +388,6 @@ async def get_create_model_async( See the *response examples* for integration-specific indicative models. - Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankAccounts) for integrations that support creating and updating a bank account. - :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -469,15 +467,17 @@ async def get_create_model_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -579,15 +579,17 @@ def list( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -689,14 +691,16 @@ async def list_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/companies.py b/bank-feeds/src/codat_bankfeeds/companies.py index ad8db4e06..7d46fa403 100644 --- a/bank-feeds/src/codat_bankfeeds/companies.py +++ b/bank-feeds/src/codat_bankfeeds/companies.py @@ -43,9 +43,9 @@ def create( if server_url is not None: base_url = server_url - if not isinstance(request, BaseModel) and request is not None: - request = utils.unmarshal(request, shared.CompanyRequestBody) - request = cast(shared.CompanyRequestBody, request) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, Optional[shared.CompanyRequestBody]) + request = cast(Optional[shared.CompanyRequestBody], request) req = self.build_request( method="POST", @@ -109,15 +109,17 @@ def create( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -153,9 +155,9 @@ async def create_async( if server_url is not None: base_url = server_url - if not isinstance(request, BaseModel) and request is not None: - request = utils.unmarshal(request, shared.CompanyRequestBody) - request = cast(shared.CompanyRequestBody, request) + if not isinstance(request, BaseModel): + request = utils.unmarshal(request, Optional[shared.CompanyRequestBody]) + request = cast(Optional[shared.CompanyRequestBody], request) req = self.build_request_async( method="POST", @@ -219,15 +221,17 @@ async def create_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -325,15 +329,17 @@ def delete( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -431,15 +437,17 @@ async def delete_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -537,15 +545,17 @@ def get( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -643,15 +653,17 @@ async def get_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -660,14 +672,14 @@ def list( *, request: Union[ operations.ListCompaniesRequest, operations.ListCompaniesRequestTypedDict - ], + ] = operations.ListCompaniesRequest(), retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, ) -> Optional[shared.Companies]: r"""List companies - The *List companies* endpoint returns a list of [companies] associated to your instances. + The *List companies* endpoint returns a list of [companies](https://docs.codat.io/bank-feeds-api#/schemas/Company) associated to your instances. A [company](https://docs.codat.io/bank-feeds-api#/schemas/Company) represents a business sharing access to their data. Each company can have multiple [connections](https://docs.codat.io/bank-feeds-api#/schemas/Connection) to different data sources, such as one connection to Xero for accounting data, two connections to Plaid for two bank accounts, and a connection to Zettle for POS data. @@ -749,15 +761,17 @@ def list( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -766,14 +780,14 @@ async def list_async( *, request: Union[ operations.ListCompaniesRequest, operations.ListCompaniesRequestTypedDict - ], + ] = operations.ListCompaniesRequest(), retries: OptionalNullable[utils.RetryConfig] = UNSET, server_url: Optional[str] = None, timeout_ms: Optional[int] = None, ) -> Optional[shared.Companies]: r"""List companies - The *List companies* endpoint returns a list of [companies] associated to your instances. + The *List companies* endpoint returns a list of [companies](https://docs.codat.io/bank-feeds-api#/schemas/Company) associated to your instances. A [company](https://docs.codat.io/bank-feeds-api#/schemas/Company) represents a business sharing access to their data. Each company can have multiple [connections](https://docs.codat.io/bank-feeds-api#/schemas/Connection) to different data sources, such as one connection to Xero for accounting data, two connections to Plaid for two bank accounts, and a connection to Zettle for POS data. @@ -855,15 +869,17 @@ async def list_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -880,7 +896,6 @@ def update( r"""Update company Use the *Update company* endpoint to update both the name and description of the company. - If you use [groups](https://docs.codat.io/bank-feeds-api#/schemas/Group) to manage a set of companies, use the [Add company](https://docs.codat.io/bank-feeds-api#/operations/add-company-to-group) or [Remove company](https://docs.codat.io/bank-feeds-api#/operations/remove-company-from-group) endpoints to add or remove a company from a group. A [company](https://docs.codat.io/bank-feeds-api#/schemas/Company) represents a business sharing access to their data. Each company can have multiple [connections](https://docs.codat.io/bank-feeds-api#/schemas/Connection) to different data sources, such as one connection to Xero for accounting data, two connections to Plaid for two bank accounts, and a connection to Zettle for POS data. @@ -968,15 +983,17 @@ def update( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -993,7 +1010,6 @@ async def update_async( r"""Update company Use the *Update company* endpoint to update both the name and description of the company. - If you use [groups](https://docs.codat.io/bank-feeds-api#/schemas/Group) to manage a set of companies, use the [Add company](https://docs.codat.io/bank-feeds-api#/operations/add-company-to-group) or [Remove company](https://docs.codat.io/bank-feeds-api#/operations/remove-company-from-group) endpoints to add or remove a company from a group. A [company](https://docs.codat.io/bank-feeds-api#/schemas/Company) represents a business sharing access to their data. Each company can have multiple [connections](https://docs.codat.io/bank-feeds-api#/schemas/Connection) to different data sources, such as one connection to Xero for accounting data, two connections to Plaid for two bank accounts, and a connection to Zettle for POS data. @@ -1081,14 +1097,16 @@ async def update_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/company_information.py b/bank-feeds/src/codat_bankfeeds/company_information.py index 8ad96a8be..e3aad34e4 100644 --- a/bank-feeds/src/codat_bankfeeds/company_information.py +++ b/bank-feeds/src/codat_bankfeeds/company_information.py @@ -107,15 +107,17 @@ def get( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -215,14 +217,16 @@ async def get_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/configuration.py b/bank-feeds/src/codat_bankfeeds/configuration.py index b8f04d6f5..6b68cf095 100644 --- a/bank-feeds/src/codat_bankfeeds/configuration.py +++ b/bank-feeds/src/codat_bankfeeds/configuration.py @@ -102,15 +102,17 @@ def get( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -205,15 +207,17 @@ async def get_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -315,15 +319,17 @@ def set( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -425,14 +431,16 @@ async def set_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/connections.py b/bank-feeds/src/codat_bankfeeds/connections.py index d8ab0a948..dd4e94970 100644 --- a/bank-feeds/src/codat_bankfeeds/connections.py +++ b/bank-feeds/src/codat_bankfeeds/connections.py @@ -26,7 +26,7 @@ def create( Creates a connection for the company by providing a valid `platformKey`. - Use the [List Integrations](https://docs.codat.io/bank-feeds-api#/operations/list-integrations) endpoint to access valid platform keys. + Use the [List Integrations](https://docs.codat.io/platform-api#/operations/list-integrations) endpoint to access valid platform keys. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -111,15 +111,17 @@ def create( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -138,7 +140,7 @@ async def create_async( Creates a connection for the company by providing a valid `platformKey`. - Use the [List Integrations](https://docs.codat.io/bank-feeds-api#/operations/list-integrations) endpoint to access valid platform keys. + Use the [List Integrations](https://docs.codat.io/platform-api#/operations/list-integrations) endpoint to access valid platform keys. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -223,15 +225,17 @@ async def create_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -327,15 +331,17 @@ def delete( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -431,15 +437,17 @@ async def delete_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -533,15 +541,17 @@ def get( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -635,15 +645,17 @@ async def get_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -739,15 +751,17 @@ def list( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -843,15 +857,17 @@ async def list_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -953,15 +969,17 @@ def unlink( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -1063,14 +1081,16 @@ async def unlink_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/models/errors/errormessage.py b/bank-feeds/src/codat_bankfeeds/models/errors/errormessage.py index 4fabfed4b..43c003591 100644 --- a/bank-feeds/src/codat_bankfeeds/models/errors/errormessage.py +++ b/bank-feeds/src/codat_bankfeeds/models/errors/errormessage.py @@ -39,7 +39,7 @@ class ErrorMessageData(BaseModel): class ErrorMessage(Exception): - r"""The request made is not valid.""" + r"""Your `query` parameter was not correctly formed""" data: ErrorMessageData diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account.py b/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account.py index bcac1d2a1..1b86754ae 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account.py @@ -12,8 +12,8 @@ RequestMetadata, ) import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CreateBankAccountRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account_mapping.py b/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account_mapping.py index 91cfd1393..1d2cddca9 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account_mapping.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_account_mapping.py @@ -7,8 +7,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CreateBankAccountMappingRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_transactions.py b/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_transactions.py index 95a5c4491..b36c58fff 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_transactions.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/create_bank_transactions.py @@ -12,8 +12,8 @@ RequestMetadata, ) import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CreateBankTransactionsRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/create_connection.py b/bank-feeds/src/codat_bankfeeds/models/operations/create_connection.py index 2bca161b0..2c33447d6 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/create_connection.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/create_connection.py @@ -4,8 +4,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CreateConnectionRequestBodyTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/create_source_account.py b/bank-feeds/src/codat_bankfeeds/models/operations/create_source_account.py index 91833088a..70d4c0d78 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/create_source_account.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/create_source_account.py @@ -8,8 +8,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import pydantic -from typing import Optional, TypedDict, Union -from typing_extensions import Annotated, NotRequired +from typing import Optional, Union +from typing_extensions import Annotated, NotRequired, TypedDict CreateSourceAccountRequestBodyTypedDict = Union[ diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/delete_bank_feed_credentials.py b/bank-feeds/src/codat_bankfeeds/models/operations/delete_bank_feed_credentials.py index 1d09c2e4c..96ddae439 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/delete_bank_feed_credentials.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/delete_bank_feed_credentials.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class DeleteBankFeedCredentialsRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/delete_company.py b/bank-feeds/src/codat_bankfeeds/models/operations/delete_company.py index 2f7c9cfbf..603f1a4b0 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/delete_company.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/delete_company.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class DeleteCompanyRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/delete_connection.py b/bank-feeds/src/codat_bankfeeds/models/operations/delete_connection.py index cad524d52..f001b4e8f 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/delete_connection.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/delete_connection.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class DeleteConnectionRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/delete_source_account.py b/bank-feeds/src/codat_bankfeeds/models/operations/delete_source_account.py index 8c98da1f3..e95000292 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/delete_source_account.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/delete_source_account.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class DeleteSourceAccountRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/generate_credentials.py b/bank-feeds/src/codat_bankfeeds/models/operations/generate_credentials.py index daa42cf8d..98ee6117c 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/generate_credentials.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/generate_credentials.py @@ -5,8 +5,8 @@ from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import io import pydantic -from typing import IO, TypedDict, Union -from typing_extensions import Annotated +from typing import IO, Union +from typing_extensions import Annotated, TypedDict class GenerateCredentialsRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_bank_account_mapping.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_bank_account_mapping.py index 2ea0895dc..81a370680 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_bank_account_mapping.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_bank_account_mapping.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetBankAccountMappingRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_company.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_company.py index 6c52c6d69..995cff62a 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_company.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_company.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetCompanyRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_company_information.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_company_information.py index dd67c774b..e972201b2 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_company_information.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_company_information.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetCompanyInformationRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_configuration.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_configuration.py index 648034072..c4b3d1556 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_configuration.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_configuration.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetConfigurationRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_connection.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_connection.py index 42b33a58a..61af0cf95 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_connection.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_connection.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetConnectionRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_create_bankaccounts_model.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_create_bankaccounts_model.py index 62f530987..2fda827b1 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_create_bankaccounts_model.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_create_bankaccounts_model.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetCreateBankAccountsModelRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_create_operation.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_create_operation.py index 6547f9df3..d223112e2 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_create_operation.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_create_operation.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetCreateOperationRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/get_last_successful.py b/bank-feeds/src/codat_bankfeeds/models/operations/get_last_successful.py index 5380d3e06..931cda92c 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/get_last_successful.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/get_last_successful.py @@ -4,8 +4,7 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class GetLastSuccessfulRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/list_bank_accounts.py b/bank-feeds/src/codat_bankfeeds/models/operations/list_bank_accounts.py index c3758689c..13aee8d1c 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/list_bank_accounts.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/list_bank_accounts.py @@ -4,8 +4,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ListBankAccountsRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/list_companies.py b/bank-feeds/src/codat_bankfeeds/models/operations/list_companies.py index 1c6242d3f..e6a9e8a0b 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/list_companies.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/list_companies.py @@ -4,8 +4,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, QueryParamMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ListCompaniesRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/list_connections.py b/bank-feeds/src/codat_bankfeeds/models/operations/list_connections.py index 8f129fb4b..95d65ca60 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/list_connections.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/list_connections.py @@ -4,8 +4,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ListConnectionsRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/list_create_operations.py b/bank-feeds/src/codat_bankfeeds/models/operations/list_create_operations.py index 80f7668cb..cc6ecdf60 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/list_create_operations.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/list_create_operations.py @@ -4,8 +4,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, QueryParamMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ListCreateOperationsRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/list_source_accounts.py b/bank-feeds/src/codat_bankfeeds/models/operations/list_source_accounts.py index 3ea4e1988..f59a3ea86 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/list_source_accounts.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/list_source_accounts.py @@ -8,8 +8,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata import pydantic -from typing import List, TypedDict, Union -from typing_extensions import Annotated +from typing import List, Union +from typing_extensions import Annotated, TypedDict class ListSourceAccountsRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/set_configuration.py b/bank-feeds/src/codat_bankfeeds/models/operations/set_configuration.py index 2d4ff7166..01defd271 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/set_configuration.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/set_configuration.py @@ -5,8 +5,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class SetConfigurationRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/unlink_connection.py b/bank-feeds/src/codat_bankfeeds/models/operations/unlink_connection.py index 700d834db..4de38d5d7 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/unlink_connection.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/unlink_connection.py @@ -7,8 +7,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class UnlinkConnectionUpdateConnectionTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/update_company.py b/bank-feeds/src/codat_bankfeeds/models/operations/update_company.py index 78aba2e95..68043d928 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/update_company.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/update_company.py @@ -7,8 +7,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class UpdateCompanyRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/operations/update_source_account.py b/bank-feeds/src/codat_bankfeeds/models/operations/update_source_account.py index 095cf0f95..f112973b9 100644 --- a/bank-feeds/src/codat_bankfeeds/models/operations/update_source_account.py +++ b/bank-feeds/src/codat_bankfeeds/models/operations/update_source_account.py @@ -5,8 +5,8 @@ from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, PathParamMetadata, RequestMetadata import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class UpdateSourceAccountRequestTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/__init__.py b/bank-feeds/src/codat_bankfeeds/models/shared/__init__.py index fc978a2e4..0b224f156 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/__init__.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/__init__.py @@ -73,14 +73,15 @@ ClientRateLimitWebhookPayloadTypedDict, ) from .companies import Companies, CompaniesTypedDict -from .company import Company, CompanyTypedDict, Tags, TagsTypedDict +from .company import Company, CompanyTypedDict from .companyinformation import CompanyInformation, CompanyInformationTypedDict -from .companyrequestbody import ( - CompanyRequestBody, - CompanyRequestBodyTypedDict, - GroupReference, - GroupReferenceTypedDict, +from .companyreference import ( + CompanyReference, + CompanyReferenceLinks, + CompanyReferenceLinksTypedDict, + CompanyReferenceTypedDict, ) +from .companyrequestbody import CompanyRequestBody, CompanyRequestBodyTypedDict from .companysyncstatus import CompanySyncStatus, CompanySyncStatusTypedDict from .configuration import Configuration, ConfigurationTypedDict from .configurationcontactref import ( @@ -196,6 +197,10 @@ "Company", "CompanyInformation", "CompanyInformationTypedDict", + "CompanyReference", + "CompanyReferenceLinks", + "CompanyReferenceLinksTypedDict", + "CompanyReferenceTypedDict", "CompanyRequestBody", "CompanyRequestBodyTypedDict", "CompanySyncStatus", @@ -228,8 +233,6 @@ "ErrorValidationItem", "ErrorValidationItemTypedDict", "ErrorValidationTypedDict", - "GroupReference", - "GroupReferenceTypedDict", "HalRef", "HalRefTypedDict", "Links", @@ -280,8 +283,6 @@ "SyncAsExpensesTypedDict", "SyncConfiguration", "SyncConfigurationTypedDict", - "Tags", - "TagsTypedDict", "TargetAccountOption", "TargetAccountOptionTypedDict", "Type", diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/accountinfo.py b/bank-feeds/src/codat_bankfeeds/models/shared/accountinfo.py index 3fe9d5e17..af026409f 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/accountinfo.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/accountinfo.py @@ -14,8 +14,7 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import TypedDict -from typing_extensions import Annotated, NotRequired +from typing_extensions import Annotated, NotRequired, TypedDict class AccountInfoTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcreateresponse.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcreateresponse.py index a6a728789..d62842813 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcreateresponse.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcreateresponse.py @@ -20,8 +20,8 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import Any, Dict, List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired, deprecated +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict, deprecated class BankAccountCreateResponseBankAccountType(str, Enum): @@ -133,9 +133,7 @@ class AccountingBankAccountTypedDict(TypedDict): > > 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. + > To view bank account data through the Banking API, please refer to the new [Banking: Account](https://docs.codat.io/bank-feeds-api#/schemas/Account) data type. ## Overview @@ -215,9 +213,7 @@ class AccountingBankAccount(BaseModel): > > 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. + > To view bank account data through the Banking API, please refer to the new [Banking: Account](https://docs.codat.io/bank-feeds-api#/schemas/Account) data type. ## Overview diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcredentials.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcredentials.py index 1f9ce0504..d6c6fffc2 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcredentials.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountcredentials.py @@ -2,8 +2,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel -from typing import Optional, TypedDict -from typing_extensions import NotRequired +from typing import Optional +from typing_extensions import NotRequired, TypedDict class BankAccountCredentialsTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountoption.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountoption.py index 49fa8289a..05f2051a3 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountoption.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountoption.py @@ -3,8 +3,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class BankAccountOptionTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountprototype.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountprototype.py index 57025f911..fcf86a570 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountprototype.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccountprototype.py @@ -16,8 +16,8 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class BankAccountType(str, Enum): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccounts.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccounts.py index e5f8aaf1a..8397d339f 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankaccounts.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankaccounts.py @@ -17,8 +17,8 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import Any, Dict, List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Any, Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class BankAccountsBankAccountType(str, Enum): @@ -127,9 +127,7 @@ class BankAccountsAccountingBankAccountTypedDict(TypedDict): > > 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. + > To view bank account data through the Banking API, please refer to the new [Banking: Account](https://docs.codat.io/bank-feeds-api#/schemas/Account) data type. ## Overview @@ -206,9 +204,7 @@ class BankAccountsAccountingBankAccount(BaseModel): > > 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. + > To view bank account data through the Banking API, please refer to the new [Banking: Account](https://docs.codat.io/bank-feeds-api#/schemas/Account) data type. ## Overview diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmapping.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmapping.py index b0c640c74..5b09bd74a 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmapping.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmapping.py @@ -10,8 +10,7 @@ ) import pydantic from pydantic import model_serializer -from typing import TypedDict -from typing_extensions import Annotated, NotRequired +from typing_extensions import Annotated, NotRequired, TypedDict class BankFeedAccountMappingTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmappingresponse.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmappingresponse.py index f74e98168..e7eee6112 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmappingresponse.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedaccountmappingresponse.py @@ -10,37 +10,33 @@ ) import pydantic from pydantic import model_serializer -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class BankFeedAccountMappingResponseTypedDict(TypedDict): - r"""The result from POSTing a Bank Account mapping.""" - error: NotRequired[Nullable[str]] r"""Error returned during the post request""" - status: NotRequired[Nullable[str]] - r"""Status of the POST request.""" source_account_id: NotRequired[str] r"""Unique ID for the source account.""" + status: NotRequired[Nullable[str]] + r"""Status of the POST request.""" target_account_id: NotRequired[Nullable[str]] r"""Unique ID for the target account.""" class BankFeedAccountMappingResponse(BaseModel): - r"""The result from POSTing a Bank Account mapping.""" - - error: Annotated[OptionalNullable[str], pydantic.Field(alias="Error")] = UNSET + error: OptionalNullable[str] = UNSET r"""Error returned during the post request""" - status: Annotated[OptionalNullable[str], pydantic.Field(alias="Status")] = UNSET - r"""Status of the POST request.""" - source_account_id: Annotated[ Optional[str], pydantic.Field(alias="sourceAccountId") ] = None r"""Unique ID for the source account.""" + status: OptionalNullable[str] = UNSET + r"""Status of the POST request.""" + target_account_id: Annotated[ OptionalNullable[str], pydantic.Field(alias="targetAccountId") ] = UNSET @@ -48,8 +44,8 @@ class BankFeedAccountMappingResponse(BaseModel): @model_serializer(mode="wrap") def serialize_model(self, handler): - optional_fields = ["Error", "Status", "sourceAccountId", "targetAccountId"] - nullable_fields = ["Error", "Status", "targetAccountId"] + optional_fields = ["error", "sourceAccountId", "status", "targetAccountId"] + nullable_fields = ["error", "status", "targetAccountId"] null_default_fields = [] serialized = handler(self) diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedmapping.py b/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedmapping.py index ee5d83888..9de4364a9 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedmapping.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/bankfeedmapping.py @@ -11,8 +11,8 @@ ) import pydantic from pydantic import model_serializer -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class BankFeedMappingTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/banktransactions.py b/bank-feeds/src/codat_bankfeeds/models/shared/banktransactions.py index 6ecbf677b..62e2bc44e 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/banktransactions.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/banktransactions.py @@ -15,8 +15,8 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class BankTransactionType(str, Enum): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhook.py b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhook.py index 273c44b89..fb66bdfcc 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhook.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhook.py @@ -7,8 +7,8 @@ ) from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ClientRateLimitReachedWebhookTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhookdata.py b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhookdata.py index 47b32d5a1..1311e832f 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhookdata.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitreachedwebhookdata.py @@ -3,8 +3,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ClientRateLimitReachedWebhookDataTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhook.py b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhook.py index f415b9a6d..0f6d88435 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhook.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhook.py @@ -7,8 +7,8 @@ ) from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ClientRateLimitResetWebhookTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhookdata.py b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhookdata.py index 365c01981..ec8f33a1f 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhookdata.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitresetwebhookdata.py @@ -10,8 +10,8 @@ ) import pydantic from pydantic import model_serializer -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ClientRateLimitResetWebhookDataTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhook.py b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhook.py index c1e3ca687..9c7eb8ad1 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhook.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhook.py @@ -7,8 +7,8 @@ ) from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ClientRateLimitWebhookTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhookpayload.py b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhookpayload.py index 6b2dcbed3..438feceef 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhookpayload.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/clientratelimitwebhookpayload.py @@ -3,8 +3,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ClientRateLimitWebhookPayloadTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/companies.py b/bank-feeds/src/codat_bankfeeds/models/shared/companies.py index 05eecdc27..aef969c63 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/companies.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/companies.py @@ -5,8 +5,8 @@ from .links import Links, LinksTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CompaniesTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/company.py b/bank-feeds/src/codat_bankfeeds/models/shared/company.py index 3365afa35..d9de9c08c 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/company.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/company.py @@ -11,16 +11,8 @@ ) import pydantic from pydantic import model_serializer -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired - - -class TagsTypedDict(TypedDict): - r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" - - -class Tags(BaseModel): - r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CompanyTypedDict(TypedDict): @@ -84,7 +76,9 @@ class CompanyTypedDict(TypedDict): > Not all dates from Codat will contain information about time zones. > Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced. """ - tags: NotRequired[TagsTypedDict] + products: NotRequired[List[str]] + r"""An array of products that are currently enabled for the company.""" + tags: NotRequired[Dict[str, str]] r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" @@ -161,7 +155,10 @@ class Company(BaseModel): > Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced. """ - tags: Optional[Tags] = None + products: Optional[List[str]] = None + r"""An array of products that are currently enabled for the company.""" + + tags: Optional[Dict[str, str]] = None r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" @model_serializer(mode="wrap") @@ -172,6 +169,7 @@ def serialize_model(self, handler): "dataConnections", "description", "lastSync", + "products", "tags", ] nullable_fields = ["createdByUserName"] diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/companyinformation.py b/bank-feeds/src/codat_bankfeeds/models/shared/companyinformation.py index c44a3edfe..44f7cd478 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/companyinformation.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/companyinformation.py @@ -10,8 +10,8 @@ ) import pydantic from pydantic import model_serializer -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CompanyInformationTypedDict(TypedDict): @@ -21,10 +21,12 @@ class CompanyInformationTypedDict(TypedDict): r"""Currency set in the accounting software of the linked company.""" company_name: NotRequired[str] r"""Name of the linked company.""" - multicurrency_enabled: NotRequired[Nullable[bool]] - r"""Boolean showing if the organisation has multicurrency enabled""" + currencies: NotRequired[Nullable[List[str]]] + r"""Array of enabled currencies for the linked company.""" + multicurrency_enabled: NotRequired[bool] + r"""Boolean showing if the organisation has multicurrency enabled.""" plan_type: NotRequired[Nullable[str]] - r"""Accounting software subscription type such as Trial, Demo, Standard""" + r"""Accounting software subscription type such as Trial, Demo, Standard.""" class CompanyInformation(BaseModel): @@ -36,25 +38,29 @@ class CompanyInformation(BaseModel): company_name: Annotated[Optional[str], pydantic.Field(alias="companyName")] = None r"""Name of the linked company.""" + currencies: OptionalNullable[List[str]] = UNSET + r"""Array of enabled currencies for the linked company.""" + multicurrency_enabled: Annotated[ - OptionalNullable[bool], pydantic.Field(alias="multicurrencyEnabled") - ] = UNSET - r"""Boolean showing if the organisation has multicurrency enabled""" + Optional[bool], pydantic.Field(alias="multicurrencyEnabled") + ] = None + r"""Boolean showing if the organisation has multicurrency enabled.""" plan_type: Annotated[OptionalNullable[str], pydantic.Field(alias="planType")] = ( UNSET ) - r"""Accounting software subscription type such as Trial, Demo, Standard""" + r"""Accounting software subscription type such as Trial, Demo, Standard.""" @model_serializer(mode="wrap") def serialize_model(self, handler): optional_fields = [ "baseCurrency", "companyName", + "currencies", "multicurrencyEnabled", "planType", ] - nullable_fields = ["multicurrencyEnabled", "planType"] + nullable_fields = ["currencies", "planType"] null_default_fields = [] serialized = handler(self) diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/companyreference.py b/bank-feeds/src/codat_bankfeeds/models/shared/companyreference.py new file mode 100644 index 000000000..d8f639c08 --- /dev/null +++ b/bank-feeds/src/codat_bankfeeds/models/shared/companyreference.py @@ -0,0 +1,50 @@ +"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" + +from __future__ import annotations +from codat_bankfeeds.types import BaseModel +from typing import Dict, Optional +from typing_extensions import NotRequired, TypedDict + + +class CompanyReferenceLinksTypedDict(TypedDict): + r"""A collection of links for the company.""" + + portal: NotRequired[str] + r"""Link to the company page in the portal.""" + + +class CompanyReferenceLinks(BaseModel): + r"""A collection of links for the company.""" + + portal: Optional[str] = None + r"""Link to the company page in the portal.""" + + +class CompanyReferenceTypedDict(TypedDict): + description: NotRequired[str] + r"""Additional information about the company. This can be used to store foreign IDs, references, etc.""" + id: NotRequired[str] + r"""Unique identifier for your SMB in Codat.""" + links: NotRequired[CompanyReferenceLinksTypedDict] + r"""A collection of links for the company.""" + name: NotRequired[str] + r"""The name of the company""" + tags: NotRequired[Dict[str, str]] + r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" + + +class CompanyReference(BaseModel): + description: Optional[str] = None + r"""Additional information about the company. This can be used to store foreign IDs, references, etc.""" + + id: Optional[str] = None + r"""Unique identifier for your SMB in Codat.""" + + links: Optional[CompanyReferenceLinks] = None + r"""A collection of links for the company.""" + + name: Optional[str] = None + r"""The name of the company""" + + tags: Optional[Dict[str, str]] = None + r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/companyrequestbody.py b/bank-feeds/src/codat_bankfeeds/models/shared/companyrequestbody.py index 8140c1fca..5cc5e4b42 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/companyrequestbody.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/companyrequestbody.py @@ -2,18 +2,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel -from typing import List, Optional, TypedDict -from typing_extensions import NotRequired - - -class GroupReferenceTypedDict(TypedDict): - id: NotRequired[str] - r"""Unique identifier for the group.""" - - -class GroupReference(BaseModel): - id: Optional[str] = None - r"""Unique identifier for the group.""" +from typing import Dict, Optional +from typing_extensions import NotRequired, TypedDict class CompanyRequestBodyTypedDict(TypedDict): @@ -21,8 +11,8 @@ class CompanyRequestBodyTypedDict(TypedDict): r"""Name of company being connected.""" description: NotRequired[str] r"""Additional information about the company. This can be used to store foreign IDs, references, etc.""" - groups: NotRequired[List[GroupReferenceTypedDict]] - r"""Reference to the groups that the company is assigned to.""" + tags: NotRequired[Dict[str, str]] + r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" class CompanyRequestBody(BaseModel): @@ -32,5 +22,5 @@ class CompanyRequestBody(BaseModel): description: Optional[str] = None r"""Additional information about the company. This can be used to store foreign IDs, references, etc.""" - groups: Optional[List[GroupReference]] = None - r"""Reference to the groups that the company is assigned to.""" + tags: Optional[Dict[str, str]] = None + r"""A collection of user-defined key-value pairs that store custom metadata against the company.""" diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/companysyncstatus.py b/bank-feeds/src/codat_bankfeeds/models/shared/companysyncstatus.py index ca45772af..cabcbaaac 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/companysyncstatus.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/companysyncstatus.py @@ -10,8 +10,8 @@ ) import pydantic from pydantic import model_serializer -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CompanySyncStatusTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/configuration.py b/bank-feeds/src/codat_bankfeeds/models/shared/configuration.py index 088bd744f..732553a7b 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/configuration.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/configuration.py @@ -5,8 +5,8 @@ from .syncconfiguration import SyncConfiguration, SyncConfigurationTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ConfigurationTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/configurationcontactref.py b/bank-feeds/src/codat_bankfeeds/models/shared/configurationcontactref.py index 129a82ce1..68b12a24d 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/configurationcontactref.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/configurationcontactref.py @@ -2,8 +2,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel -from typing import Optional, TypedDict -from typing_extensions import NotRequired +from typing import Optional +from typing_extensions import NotRequired, TypedDict class ConfigurationContactRefTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/configurationcustomer.py b/bank-feeds/src/codat_bankfeeds/models/shared/configurationcustomer.py index 64e10a542..96488171c 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/configurationcustomer.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/configurationcustomer.py @@ -7,8 +7,8 @@ ) from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ConfigurationCustomerTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/configurationschedule.py b/bank-feeds/src/codat_bankfeeds/models/shared/configurationschedule.py index 55d2b18b9..a5c38e0c5 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/configurationschedule.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/configurationschedule.py @@ -3,8 +3,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ConfigurationScheduleTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/configurationsupplier.py b/bank-feeds/src/codat_bankfeeds/models/shared/configurationsupplier.py index 3cbf73bcc..81740b11c 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/configurationsupplier.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/configurationsupplier.py @@ -7,8 +7,8 @@ ) from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ConfigurationSupplierTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/connection.py b/bank-feeds/src/codat_bankfeeds/models/shared/connection.py index 0ebcc4722..7f3479ca1 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/connection.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/connection.py @@ -3,11 +3,18 @@ from __future__ import annotations from .dataconnectionerror import DataConnectionError, DataConnectionErrorTypedDict from .dataconnectionstatus import DataConnectionStatus -from codat_bankfeeds.types import BaseModel +from codat_bankfeeds.types import ( + BaseModel, + Nullable, + OptionalNullable, + UNSET, + UNSET_SENTINEL, +) from enum import Enum import pydantic -from typing import Any, Dict, List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from pydantic import model_serializer +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class SourceType(str, Enum): @@ -72,9 +79,8 @@ class ConnectionTypedDict(TypedDict): r"""The type of platform of the connection.""" status: DataConnectionStatus r"""The current authorization status of the data connection.""" - additional_properties: NotRequired[Any] - connection_info: NotRequired[Dict[str, str]] - data_connection_errors: NotRequired[List[DataConnectionErrorTypedDict]] + connection_info: NotRequired[Nullable[Dict[str, str]]] + data_connection_errors: NotRequired[Nullable[List[DataConnectionErrorTypedDict]]] last_sync: NotRequired[str] r"""In Codat's data model, dates and times are represented using the ISO 8601 standard. Date and time fields are formatted as strings; for example: @@ -157,18 +163,14 @@ class Connection(BaseModel): status: DataConnectionStatus r"""The current authorization status of the data connection.""" - additional_properties: Annotated[ - Optional[Any], pydantic.Field(alias="additionalProperties") - ] = None - connection_info: Annotated[ - Optional[Dict[str, str]], pydantic.Field(alias="connectionInfo") - ] = None + OptionalNullable[Dict[str, str]], pydantic.Field(alias="connectionInfo") + ] = UNSET data_connection_errors: Annotated[ - Optional[List[DataConnectionError]], + OptionalNullable[List[DataConnectionError]], pydantic.Field(alias="dataConnectionErrors"), - ] = None + ] = UNSET last_sync: Annotated[Optional[str], pydantic.Field(alias="lastSync")] = None r"""In Codat's data model, dates and times are represented using the ISO 8601 standard. Date and time fields are formatted as strings; for example: @@ -191,3 +193,33 @@ class Connection(BaseModel): > Not all dates from Codat will contain information about time zones. > Where it is not available from the underlying platform, Codat will return these as times local to the business whose data has been synced. """ + + @model_serializer(mode="wrap") + def serialize_model(self, handler): + optional_fields = ["connectionInfo", "dataConnectionErrors", "lastSync"] + nullable_fields = ["connectionInfo", "dataConnectionErrors"] + null_default_fields = [] + + serialized = handler(self) + + m = {} + + for n, f in self.model_fields.items(): + k = f.alias or n + val = serialized.get(k) + serialized.pop(k, None) + + optional_nullable = k in optional_fields and k in nullable_fields + is_set = ( + self.__pydantic_fields_set__.intersection({n}) + or k in null_default_fields + ) # pylint: disable=no-member + + if val is not None and val != UNSET_SENTINEL: + m[k] = val + elif val != UNSET_SENTINEL and ( + not k in optional_fields or (optional_nullable and is_set) + ): + m[k] = val + + return m diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/connections.py b/bank-feeds/src/codat_bankfeeds/models/shared/connections.py index 5525ea948..85d3c2322 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/connections.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/connections.py @@ -5,8 +5,8 @@ from .links import Links, LinksTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ConnectionsTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactions.py b/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactions.py index 81697128e..33e555a97 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactions.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactions.py @@ -4,8 +4,8 @@ from .banktransactions import BankTransactions, BankTransactionsTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, TypedDict -from typing_extensions import Annotated +from typing import List +from typing_extensions import Annotated, TypedDict class CreateBankTransactionsTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactionsresponse.py b/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactionsresponse.py index 2524afad3..cefce4772 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactionsresponse.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/createbanktransactionsresponse.py @@ -18,8 +18,8 @@ ) import pydantic from pydantic import model_serializer -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class CreateBankTransactionsResponseTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/dataconnectionerror.py b/bank-feeds/src/codat_bankfeeds/models/shared/dataconnectionerror.py index 77fde6360..b33f4d14f 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/dataconnectionerror.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/dataconnectionerror.py @@ -11,8 +11,8 @@ from enum import Enum import pydantic from pydantic import model_serializer -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class ErrorStatus(str, Enum): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidation.py b/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidation.py index 5af37b8ab..24c51d497 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidation.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidation.py @@ -10,8 +10,8 @@ UNSET_SENTINEL, ) from pydantic import model_serializer -from typing import List, TypedDict -from typing_extensions import NotRequired +from typing import List +from typing_extensions import NotRequired, TypedDict class ErrorValidationTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidationitem.py b/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidationitem.py index edbc57faf..ab5112535 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidationitem.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/errorvalidationitem.py @@ -10,8 +10,7 @@ ) import pydantic from pydantic import model_serializer -from typing import TypedDict -from typing_extensions import Annotated, NotRequired +from typing_extensions import Annotated, NotRequired, TypedDict class ErrorValidationItemTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/halref.py b/bank-feeds/src/codat_bankfeeds/models/shared/halref.py index 8c42402a6..aeb2020f7 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/halref.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/halref.py @@ -2,8 +2,8 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel -from typing import Optional, TypedDict -from typing_extensions import NotRequired +from typing import Optional +from typing_extensions import NotRequired, TypedDict class HalRefTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/links.py b/bank-feeds/src/codat_bankfeeds/models/shared/links.py index 9dcdeb83f..ea6ce64d0 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/links.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/links.py @@ -4,8 +4,8 @@ from .halref import HalRef, HalRefTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class LinksTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushfieldvalidation.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushfieldvalidation.py index c410000ed..b3b751994 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushfieldvalidation.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushfieldvalidation.py @@ -9,8 +9,8 @@ UNSET_SENTINEL, ) from pydantic import model_serializer -from typing import Optional, TypedDict -from typing_extensions import NotRequired +from typing import Optional +from typing_extensions import NotRequired, TypedDict class PushFieldValidationTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperation.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperation.py index d0956fae9..1a289b660 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperation.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperation.py @@ -14,8 +14,8 @@ ) import pydantic from pydantic import model_serializer -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class PushOperationTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationchange.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationchange.py index 2bd41d1cd..1bbc21dd7 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationchange.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationchange.py @@ -12,8 +12,8 @@ ) import pydantic from pydantic import model_serializer -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class PushOperationChangeTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationref.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationref.py index 305dadf85..1e1359780 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationref.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperationref.py @@ -4,8 +4,8 @@ from .datatype import DataType from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class PushOperationRefTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperations.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperations.py index ae62e7c7a..7d2c3044e 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushoperations.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushoperations.py @@ -5,8 +5,8 @@ from .pushoperation import PushOperation, PushOperationTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class PushOperationsTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushoption.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushoption.py index e62ceb714..14006cd07 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushoption.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushoption.py @@ -14,8 +14,8 @@ ) import pydantic from pydantic import model_serializer -from typing import Dict, List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class PushOptionTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionchoice.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionchoice.py index b3e7566e3..32bdab99f 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionchoice.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionchoice.py @@ -4,8 +4,8 @@ from .pushoptiontype import PushOptionType from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class PushOptionChoiceTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionproperty.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionproperty.py index abed00758..6f55bc8ea 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionproperty.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushoptionproperty.py @@ -13,8 +13,8 @@ ) import pydantic from pydantic import model_serializer -from typing import Dict, List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Dict, List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class PushOptionPropertyTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/pushvalidationinfo.py b/bank-feeds/src/codat_bankfeeds/models/shared/pushvalidationinfo.py index a4befe7cf..97320f3b3 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/pushvalidationinfo.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/pushvalidationinfo.py @@ -10,8 +10,8 @@ UNSET_SENTINEL, ) from pydantic import model_serializer -from typing import List, TypedDict -from typing_extensions import NotRequired +from typing import List +from typing_extensions import NotRequired, TypedDict class PushValidationInfoTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/routinginfo.py b/bank-feeds/src/codat_bankfeeds/models/shared/routinginfo.py index 3ef7c75c7..a3f91d81d 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/routinginfo.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/routinginfo.py @@ -11,8 +11,7 @@ from enum import Enum import pydantic from pydantic import model_serializer -from typing import TypedDict -from typing_extensions import Annotated, NotRequired +from typing_extensions import Annotated, NotRequired, TypedDict class Type(str, Enum): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/security.py b/bank-feeds/src/codat_bankfeeds/models/shared/security.py index 7e575580f..a09989ae2 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/security.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/security.py @@ -3,8 +3,7 @@ from __future__ import annotations from codat_bankfeeds.types import BaseModel from codat_bankfeeds.utils import FieldMetadata, SecurityMetadata -from typing import TypedDict -from typing_extensions import Annotated +from typing_extensions import Annotated, TypedDict class SecurityTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccount.py b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccount.py index 05a0971cd..18011e0a1 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccount.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccount.py @@ -15,8 +15,8 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class Status(str, Enum): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountv2.py b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountv2.py index 711d70677..99ee98016 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountv2.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountv2.py @@ -17,8 +17,8 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class AccountType(str, Enum): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhook.py b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhook.py index 51515c810..cd7d5b5f8 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhook.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhook.py @@ -7,8 +7,8 @@ ) from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class SourceAccountWebhookTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhookpayload.py b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhookpayload.py index e92ee3bc4..98d875cfe 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhookpayload.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/sourceaccountwebhookpayload.py @@ -1,11 +1,12 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" from __future__ import annotations +from .companyreference import CompanyReference, CompanyReferenceTypedDict from .sourceaccount import SourceAccount, SourceAccountTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class SourceAccountWebhookPayloadTypedDict(TypedDict): @@ -13,6 +14,7 @@ class SourceAccountWebhookPayloadTypedDict(TypedDict): r"""Unique identifier for your SMB in Codat.""" connection_id: NotRequired[str] r"""Unique identifier for a company's data connection.""" + reference_company: NotRequired[CompanyReferenceTypedDict] source_account: NotRequired[SourceAccountTypedDict] r"""The target bank account in a supported accounting software for ingestion into a bank feed.""" @@ -24,6 +26,10 @@ class SourceAccountWebhookPayload(BaseModel): connection_id: Annotated[Optional[str], pydantic.Field(alias="connectionId")] = None r"""Unique identifier for a company's data connection.""" + reference_company: Annotated[ + Optional[CompanyReference], pydantic.Field(alias="referenceCompany") + ] = None + source_account: Annotated[ Optional[SourceAccount], pydantic.Field(alias="sourceAccount") ] = None diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/syncasbankfeeds.py b/bank-feeds/src/codat_bankfeeds/models/shared/syncasbankfeeds.py index 83345c541..4fcdc16cc 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/syncasbankfeeds.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/syncasbankfeeds.py @@ -4,8 +4,8 @@ from .bankaccountoption import BankAccountOption, BankAccountOptionTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class SyncAsBankFeedsTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/syncasexpenses.py b/bank-feeds/src/codat_bankfeeds/models/shared/syncasexpenses.py index f79dde8cb..0bc50e4dc 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/syncasexpenses.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/syncasexpenses.py @@ -6,8 +6,8 @@ from .configurationsupplier import ConfigurationSupplier, ConfigurationSupplierTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import List, Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import List, Optional +from typing_extensions import Annotated, NotRequired, TypedDict class SyncAsExpensesTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/syncconfiguration.py b/bank-feeds/src/codat_bankfeeds/models/shared/syncconfiguration.py index 47438ccd3..67f2a016b 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/syncconfiguration.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/syncconfiguration.py @@ -5,8 +5,8 @@ from .syncasexpenses import SyncAsExpenses, SyncAsExpensesTypedDict from codat_bankfeeds.types import BaseModel import pydantic -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class SyncConfigurationTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/targetaccountoption.py b/bank-feeds/src/codat_bankfeeds/models/shared/targetaccountoption.py index 80b25d029..7d68bf018 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/targetaccountoption.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/targetaccountoption.py @@ -14,8 +14,8 @@ from pydantic import model_serializer from pydantic.functional_serializers import PlainSerializer from pydantic.functional_validators import BeforeValidator -from typing import Optional, TypedDict -from typing_extensions import Annotated, NotRequired +from typing import Optional +from typing_extensions import Annotated, NotRequired, TypedDict class TargetAccountOptionTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/validation.py b/bank-feeds/src/codat_bankfeeds/models/shared/validation.py index 6141c4f5a..156baf20c 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/validation.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/validation.py @@ -10,8 +10,8 @@ UNSET_SENTINEL, ) from pydantic import model_serializer -from typing import List, TypedDict -from typing_extensions import NotRequired +from typing import List +from typing_extensions import NotRequired, TypedDict class ValidationTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/models/shared/validationitem.py b/bank-feeds/src/codat_bankfeeds/models/shared/validationitem.py index cfa04cc4d..9907c5e24 100644 --- a/bank-feeds/src/codat_bankfeeds/models/shared/validationitem.py +++ b/bank-feeds/src/codat_bankfeeds/models/shared/validationitem.py @@ -10,8 +10,7 @@ ) import pydantic from pydantic import model_serializer -from typing import TypedDict -from typing_extensions import Annotated, NotRequired +from typing_extensions import Annotated, NotRequired, TypedDict class ValidationItemTypedDict(TypedDict): diff --git a/bank-feeds/src/codat_bankfeeds/sdkconfiguration.py b/bank-feeds/src/codat_bankfeeds/sdkconfiguration.py index 91d6ff6af..882c43bbe 100644 --- a/bank-feeds/src/codat_bankfeeds/sdkconfiguration.py +++ b/bank-feeds/src/codat_bankfeeds/sdkconfiguration.py @@ -27,9 +27,9 @@ class SDKConfiguration: server_idx: Optional[int] = 0 language: str = "python" openapi_doc_version: str = "3.0.0" - sdk_version: str = "7.0.0" - gen_version: str = "2.415.6" - user_agent: str = "speakeasy-sdk/python 7.0.0 2.415.6 3.0.0 codat-bankfeeds" + sdk_version: str = "8.0.0" + gen_version: str = "2.451.0" + user_agent: str = "speakeasy-sdk/python 8.0.0 2.451.0 3.0.0 codat-bankfeeds" retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET) timeout_ms: Optional[int] = None diff --git a/bank-feeds/src/codat_bankfeeds/source_accounts.py b/bank-feeds/src/codat_bankfeeds/source_accounts.py index e7f102027..54b6c74ee 100644 --- a/bank-feeds/src/codat_bankfeeds/source_accounts.py +++ b/bank-feeds/src/codat_bankfeeds/source_accounts.py @@ -137,15 +137,17 @@ def create( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -274,15 +276,17 @@ async def create_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -380,15 +384,17 @@ def delete( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -486,15 +492,17 @@ async def delete_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -593,15 +601,17 @@ def delete_credentials( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -700,15 +710,17 @@ async def delete_credentials_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -725,10 +737,13 @@ def generate_credentials( ) -> Optional[shared.BankAccountCredentials]: r"""Generate source account credentials - The _Generate Bank Account Credentials_ endpoint can be used to generate credentials for QuickBooks Online to use for authentication of the Bank Feed in their portal, each time this is used a new set of credentials will be generated. + The _Generate bank account credentials_ endpoint can be used to generate credentials for QuickBooks Online to authenticate the Bank Feed in the QBO portal. Each time this endpoint is called, a new set of credentials will be generated. The old credentials will still be valid until the revoke credentials endpoint is used, which will revoke all credentials associated to the data connection. + > **For QuickBooks Online only** + > + > Only call this endpoint when onboarding SMBs that use QuickBooks Online. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -815,15 +830,17 @@ def generate_credentials( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -840,10 +857,13 @@ async def generate_credentials_async( ) -> Optional[shared.BankAccountCredentials]: r"""Generate source account credentials - The _Generate Bank Account Credentials_ endpoint can be used to generate credentials for QuickBooks Online to use for authentication of the Bank Feed in their portal, each time this is used a new set of credentials will be generated. + The _Generate bank account credentials_ endpoint can be used to generate credentials for QuickBooks Online to authenticate the Bank Feed in the QBO portal. Each time this endpoint is called, a new set of credentials will be generated. The old credentials will still be valid until the revoke credentials endpoint is used, which will revoke all credentials associated to the data connection. + > **For QuickBooks Online only** + > + > Only call this endpoint when onboarding SMBs that use QuickBooks Online. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -930,15 +950,17 @@ async def generate_credentials_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -957,7 +979,7 @@ def list( The _List source accounts_ endpoint returns a list of [source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) for a given company's connection. - [source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) are the bank's bank account within Codat's domain from which transactions are synced into the accounting platform. + [Source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) are the bank's bank account within Codat's domain from which transactions are synced into the accounting platform. > ### Versioning > If you are integrating the Bank Feeds API with Codat after August 1, 2024, please use the v2 version of the API, as detailed in the schema below. For integrations completed before August 1, 2024, select the v1 version from the schema dropdown below. @@ -1040,15 +1062,17 @@ def list( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -1067,7 +1091,7 @@ async def list_async( The _List source accounts_ endpoint returns a list of [source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) for a given company's connection. - [source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) are the bank's bank account within Codat's domain from which transactions are synced into the accounting platform. + [Source accounts](https://docs.codat.io/bank-feeds-api#/schemas/BankFeedAccount) are the bank's bank account within Codat's domain from which transactions are synced into the accounting platform. > ### Versioning > If you are integrating the Bank Feeds API with Codat after August 1, 2024, please use the v2 version of the API, as detailed in the schema below. For integrations completed before August 1, 2024, select the v1 version from the schema dropdown below. @@ -1150,15 +1174,17 @@ async def list_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -1266,15 +1292,17 @@ def update( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -1382,14 +1410,16 @@ async def update_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/sync.py b/bank-feeds/src/codat_bankfeeds/sync.py index 64ed32329..ba147f38b 100644 --- a/bank-feeds/src/codat_bankfeeds/sync.py +++ b/bank-feeds/src/codat_bankfeeds/sync.py @@ -104,15 +104,17 @@ def get_last_successful_sync( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -209,14 +211,16 @@ async def get_last_successful_sync_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/transactions.py b/bank-feeds/src/codat_bankfeeds/transactions.py index 5a2811b68..bc861a051 100644 --- a/bank-feeds/src/codat_bankfeeds/transactions.py +++ b/bank-feeds/src/codat_bankfeeds/transactions.py @@ -32,8 +32,6 @@ def create( Required data may vary by integration. To see what data to post, first call [Get create bank transaction model](https://docs.codat.io/bank-feeds-api#/operations/get-create-bankTransactions-model). - Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankTransactions) for integrations that support creating a bank account transactions. - :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -121,15 +119,17 @@ def create( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -154,8 +154,6 @@ async def create_async( Required data may vary by integration. To see what data to post, first call [Get create bank transaction model](https://docs.codat.io/bank-feeds-api#/operations/get-create-bankTransactions-model). - Check out our [coverage explorer](https://knowledge.codat.io/supported-features/accounting?view=tab-by-data-type&dataType=bankTransactions) for integrations that support creating a bank account transactions. - :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -243,15 +241,17 @@ async def create_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -268,7 +268,11 @@ def get_create_operation( ) -> Optional[shared.PushOperation]: r"""Get create operation - Retrieve push operation. + The **Get create operation** endpoint returns a specific [write operation](/using-the-api/push) identified by the `pushOperationKey` that was performed on the company. + + Write operations are actions that send requests to Codat, enabling the creation, updating, deletion of records, or uploading attachments in the connected accounting software. + + For bank feeds, your push operations will only relate to the `bankTransactions` data type. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -346,15 +350,17 @@ def get_create_operation( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -371,7 +377,11 @@ async def get_create_operation_async( ) -> Optional[shared.PushOperation]: r"""Get create operation - Retrieve push operation. + The **Get create operation** endpoint returns a specific [write operation](/using-the-api/push) identified by the `pushOperationKey` that was performed on the company. + + Write operations are actions that send requests to Codat, enabling the creation, updating, deletion of records, or uploading attachments in the connected accounting software. + + For bank feeds, your push operations will only relate to the `bankTransactions` data type. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -449,15 +459,17 @@ async def get_create_operation_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -474,7 +486,11 @@ def list_create_operations( ) -> Optional[shared.PushOperations]: r"""List create operations - List create operations. + The **List create operations** endpoint returns a list of [write operations](/using-the-api/push) performed on the company. + + Write operations are actions that send requests to Codat, enabling the creation, updating, deletion of records, or uploading attachments in the connected accounting software. + + For bank feeds, use this endpoint to view write operations related to the `bankTransactions` data type. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -553,15 +569,17 @@ def list_create_operations( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = utils.stream_to_text(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) @@ -578,7 +596,11 @@ async def list_create_operations_async( ) -> Optional[shared.PushOperations]: r"""List create operations - List create operations. + The **List create operations** endpoint returns a list of [write operations](/using-the-api/push) performed on the company. + + Write operations are actions that send requests to Codat, enabling the creation, updating, deletion of records, or uploading attachments in the connected accounting software. + + For bank feeds, use this endpoint to view write operations related to the `bankTransactions` data type. :param request: The request object to send. :param retries: Override the default retry configuration for this method @@ -657,14 +679,16 @@ async def list_create_operations_async( data = utils.unmarshal_json(http_res.text, errors.ErrorMessageData) raise errors.ErrorMessage(data=data) if utils.match_response(http_res, ["4XX", "5XX"], "*"): + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( - "API error occurred", http_res.status_code, http_res.text, http_res + "API error occurred", http_res.status_code, http_res_text, http_res ) content_type = http_res.headers.get("Content-Type") + http_res_text = await utils.stream_to_text_async(http_res) raise errors.SDKError( f"Unexpected response received (code: {http_res.status_code}, type: {content_type})", http_res.status_code, - http_res.text, + http_res_text, http_res, ) diff --git a/bank-feeds/src/codat_bankfeeds/utils/__init__.py b/bank-feeds/src/codat_bankfeeds/utils/__init__.py index 6c26aeb9c..26d51ae8f 100644 --- a/bank-feeds/src/codat_bankfeeds/utils/__init__.py +++ b/bank-feeds/src/codat_bankfeeds/utils/__init__.py @@ -27,6 +27,10 @@ serialize_float, serialize_int, stream_to_text, + stream_to_text_async, + stream_to_bytes, + stream_to_bytes_async, + validate_const, validate_decimal, validate_float, validate_int, @@ -79,10 +83,14 @@ "serialize_request_body", "SerializedRequestBody", "stream_to_text", + "stream_to_text_async", + "stream_to_bytes", + "stream_to_bytes_async", "template_url", "unmarshal", "unmarshal_json", "validate_decimal", + "validate_const", "validate_float", "validate_int", "validate_open_enum", diff --git a/bank-feeds/src/codat_bankfeeds/utils/annotations.py b/bank-feeds/src/codat_bankfeeds/utils/annotations.py index 0d17472b3..5b3bbb027 100644 --- a/bank-feeds/src/codat_bankfeeds/utils/annotations.py +++ b/bank-feeds/src/codat_bankfeeds/utils/annotations.py @@ -1,5 +1,6 @@ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.""" +from enum import Enum from typing import Any def get_discriminator(model: Any, fieldname: str, key: str) -> str: @@ -10,10 +11,20 @@ def get_discriminator(model: Any, fieldname: str, key: str) -> str: raise ValueError(f'Could not find discriminator key {key} in {model}') from e if hasattr(model, fieldname): - return f'{getattr(model, fieldname)}' + attr = getattr(model, fieldname) + + if isinstance(attr, Enum): + return f'{attr.value}' + + return f'{attr}' fieldname = fieldname.upper() if hasattr(model, fieldname): - return f'{getattr(model, fieldname)}' + attr = getattr(model, fieldname) + + if isinstance(attr, Enum): + return f'{attr.value}' + + return f'{attr}' raise ValueError(f'Could not find discriminator field {fieldname} in {model}') diff --git a/bank-feeds/src/codat_bankfeeds/utils/serializers.py b/bank-feeds/src/codat_bankfeeds/utils/serializers.py index 85d57f436..c5eb36597 100644 --- a/bank-feeds/src/codat_bankfeeds/utils/serializers.py +++ b/bank-feeds/src/codat_bankfeeds/utils/serializers.py @@ -116,6 +116,19 @@ def validate(e): return validate +def validate_const(v): + def validate(c): + if is_optional_type(type(c)) and c is None: + return None + + if v != c: + raise ValueError(f"Expected {v}") + + return c + + return validate + + def unmarshal_json(raw, typ: Any) -> Any: return unmarshal(from_json(raw), typ) @@ -172,6 +185,18 @@ def stream_to_text(stream: httpx.Response) -> str: return "".join(stream.iter_text()) +async def stream_to_text_async(stream: httpx.Response) -> str: + return "".join([chunk async for chunk in stream.aiter_text()]) + + +def stream_to_bytes(stream: httpx.Response) -> bytes: + return stream.content + + +async def stream_to_bytes_async(stream: httpx.Response) -> bytes: + return await stream.aread() + + def get_pydantic_model(data: Any, typ: Any) -> Any: if not _contains_pydantic_model(data): return unmarshal(data, typ)