From 62488389e2f023f05129e6f8e136b5b24e2a7563 Mon Sep 17 00:00:00 2001 From: Biplab Bera <123734227+bishalbera@users.noreply.github.com> Date: Thu, 24 Oct 2024 01:55:26 +0530 Subject: [PATCH] source-zoho-books contribution from bishalbera (#46907) Co-authored-by: Marcos Marx --- .../connectors/source-zoho-books/README.md | 33 + .../acceptance-test-config.yml | 17 + .../connectors/source-zoho-books/icon.svg | 187 + .../source-zoho-books/manifest.yaml | 3369 +++++++++++++++++ .../source-zoho-books/metadata.yaml | 35 + docs/integrations/sources/zoho-books.md | 43 + 6 files changed, 3684 insertions(+) create mode 100644 airbyte-integrations/connectors/source-zoho-books/README.md create mode 100644 airbyte-integrations/connectors/source-zoho-books/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-zoho-books/icon.svg create mode 100644 airbyte-integrations/connectors/source-zoho-books/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-zoho-books/metadata.yaml create mode 100644 docs/integrations/sources/zoho-books.md diff --git a/airbyte-integrations/connectors/source-zoho-books/README.md b/airbyte-integrations/connectors/source-zoho-books/README.md new file mode 100644 index 000000000000..6545418d4723 --- /dev/null +++ b/airbyte-integrations/connectors/source-zoho-books/README.md @@ -0,0 +1,33 @@ +# Zoho Books +This directory contains the manifest-only connector for `source-zoho-books`. + +The Zoho Books connector enables seamless integration of financial data, automating the flow of invoices, payments, expenses, and bank transactions into your data systems. With this connector, businesses can streamline bookkeeping processes, ensuring accurate financial reporting and real-time insights. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-zoho-books:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-zoho-books build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-zoho-books test +``` + diff --git a/airbyte-integrations/connectors/source-zoho-books/acceptance-test-config.yml b/airbyte-integrations/connectors/source-zoho-books/acceptance-test-config.yml new file mode 100644 index 000000000000..5bde6d1d42b8 --- /dev/null +++ b/airbyte-integrations/connectors/source-zoho-books/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-zoho-books:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-zoho-books/icon.svg b/airbyte-integrations/connectors/source-zoho-books/icon.svg new file mode 100644 index 000000000000..26369837a265 --- /dev/null +++ b/airbyte-integrations/connectors/source-zoho-books/icon.svg @@ -0,0 +1,187 @@ + + + + + + + + + + + + diff --git a/airbyte-integrations/connectors/source-zoho-books/manifest.yaml b/airbyte-integrations/connectors/source-zoho-books/manifest.yaml new file mode 100644 index 000000000000..a11b878a5962 --- /dev/null +++ b/airbyte-integrations/connectors/source-zoho-books/manifest.yaml @@ -0,0 +1,3369 @@ +version: 5.14.0 + +type: DeclarativeSource + +description: >- + The Zoho Books connector enables seamless integration of financial data, + automating the flow of invoices, payments, expenses, and bank transactions + into your data systems. With this connector, businesses can streamline + bookkeeping processes, ensuring accurate financial reporting and real-time + insights. + +check: + type: CheckStream + stream_names: + - users + +definitions: + streams: + users: + type: DeclarativeStream + name: users + primary_key: + - user_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /users + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - users + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/users" + banking: + type: DeclarativeStream + name: banking + primary_key: + - account_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /bankaccounts + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - bankaccounts + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 200 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/banking" + organizations: + type: DeclarativeStream + name: organizations + primary_key: + - organization_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizations + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - organizations + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/organizations" + contacts: + type: DeclarativeStream + name: contacts + primary_key: + - contact_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /contacts + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - contacts + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/contacts" + bills: + type: DeclarativeStream + name: bills + primary_key: + - bill_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /bills + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - bills + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: last_modified_time + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S%z" + datetime_format: "%Y-%m-%dT%H:%M:%S%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: last_modified_time + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/bills" + estimates: + type: DeclarativeStream + name: estimates + primary_key: + - estimate_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /estimates + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - estimates + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: last_modified_time + cursor_datetime_formats: + - "%Y-%m-%dT%H:%M:%S%z" + datetime_format: "%Y-%m-%dT%H:%M:%S%z" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: last_modified_time + inject_into: request_parameter + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/estimates" + items: + type: DeclarativeStream + name: items + primary_key: + - item_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /items + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - items + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/items" + invoices: + type: DeclarativeStream + name: invoices + primary_key: + - invoice_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /invoices + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - invoices + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/invoices" + expenses: + type: DeclarativeStream + name: expenses + primary_key: + - expense_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /expenses + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - expenses + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/expenses" + creditnotes: + type: DeclarativeStream + name: creditnotes + primary_key: + - creditnote_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /creditnotes + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - creditnotes + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/creditnotes" + customer_payments: + type: DeclarativeStream + name: customer_payments + primary_key: + - payment_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /customerpayments + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - customerpayments + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/customer_payments" + purchase_orders: + type: DeclarativeStream + name: purchase_orders + primary_key: + - purchaseorder_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /purchaseorders + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - purchaseorders + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/purchase_orders" + sales_orders: + type: DeclarativeStream + name: sales_orders + primary_key: + - salesorder_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /salesorders + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - salesorders + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/sales_orders" + journals: + type: DeclarativeStream + name: journals + primary_key: + - journal_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /journals + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - journals + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: journal_date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/journals" + taxes: + type: DeclarativeStream + name: taxes + primary_key: + - tax_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /settings/taxes + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - taxes + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/taxes" + transactions: + type: DeclarativeStream + name: transactions + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /banktransactions + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - banktransactions + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: per_page + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 200 + start_from_page: 1 + inject_on_first_request: true + incremental_sync: + type: DatetimeBasedCursor + cursor_field: date + cursor_datetime_formats: + - "%Y-%m-%d" + datetime_format: "%Y-%m-%d" + start_datetime: + type: MinMaxDatetime + datetime: "{{ config[\"start_date\"] }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + start_time_option: + type: RequestOption + field_name: date_start + inject_into: request_parameter + end_time_option: + type: RequestOption + field_name: date_end + inject_into: request_parameter + end_datetime: + type: MinMaxDatetime + datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" + datetime_format: "%Y-%m-%dT%H:%M:%SZ" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/transactions" + base_requester: + type: HttpRequester + url_base: https://www.zohoapis.{{ config['region'] }}/books/v3 + authenticator: + type: OAuthAuthenticator + client_id: "{{ config[\"client_id\"] }}" + grant_type: refresh_token + client_secret: "{{ config[\"client_secret\"] }}" + refresh_token: "{{ config[\"refresh_token\"] }}" + expires_in_name: expires_in + access_token_name: access_token + refresh_request_body: {} + token_refresh_endpoint: https://accounts.zoho.{{ config['region'] }}/oauth/v2/token + +streams: + - $ref: "#/definitions/streams/users" + - $ref: "#/definitions/streams/banking" + - $ref: "#/definitions/streams/organizations" + - $ref: "#/definitions/streams/contacts" + - $ref: "#/definitions/streams/bills" + - $ref: "#/definitions/streams/estimates" + - $ref: "#/definitions/streams/items" + - $ref: "#/definitions/streams/invoices" + - $ref: "#/definitions/streams/expenses" + - $ref: "#/definitions/streams/creditnotes" + - $ref: "#/definitions/streams/customer_payments" + - $ref: "#/definitions/streams/purchase_orders" + - $ref: "#/definitions/streams/sales_orders" + - $ref: "#/definitions/streams/journals" + - $ref: "#/definitions/streams/taxes" + - $ref: "#/definitions/streams/transactions" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - region + - client_id + - client_secret + - refresh_token + - start_date + properties: + region: + type: string + description: >- + The region code for the Zoho Books API, such as 'com', 'eu', 'in', + etc. + enum: + - com + - eu + - in + - com.cn + - com.au + - jp + - sa + - ca + name: region + order: 0 + title: Region + client_id: + type: string + name: client_id + order: 1 + title: OAuth Client ID + airbyte_secret: true + client_secret: + type: string + name: client_secret + order: 2 + title: OAuth Client Secret + airbyte_secret: true + refresh_token: + type: string + name: refresh_token + order: 3 + title: OAuth Refresh Token + airbyte_secret: true + start_date: + type: string + order: 4 + title: Start date + format: date-time + pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$ + additionalProperties: true + +metadata: + autoImportSchema: + users: true + banking: true + organizations: true + contacts: true + bills: true + estimates: true + items: true + invoices: true + expenses: true + creditnotes: true + customer_payments: true + purchase_orders: true + sales_orders: true + journals: true + taxes: true + transactions: true + testedStreams: + users: + streamHash: d9e629edcb34b446eba2791a5da393207e63fc89 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + banking: + streamHash: b9e2bba3f33f77fdb7679c25b6ccdd31599ea3cb + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + organizations: + streamHash: c8362c3568b1d928f77ce5a4a607abc297c8361b + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + contacts: + streamHash: 7901712effab6980f241021ec0b0e2abd725cfb9 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + bills: + streamHash: f32be4adf271ec4446edec3a21a494c642260c09 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + estimates: + streamHash: 29acba17bd66daafdf1e8a5ee674874117415ee0 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + items: + streamHash: b432a8da76131ebcec07befdf4edbdd6700b8ee0 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + invoices: + streamHash: e45a16d5f233f3d740017fb56dca2d020eacfe02 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + expenses: + streamHash: e59abf3239bebc32abdbf2bb0d1513b1fc494d2b + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + creditnotes: + streamHash: 179731853fba7d13c3aff8566b8b728fc6460173 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + customer_payments: + streamHash: a4ec9ba1058e97ec38f538add490b148ba563293 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + purchase_orders: + streamHash: f1476c3d92db25a37518202311d32ea94ef9a3de + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + sales_orders: + streamHash: 929bab9131c4e3c24e3a846a7b0246cf72504be3 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + journals: + hasRecords: true + streamHash: 7985c065327def0ea9d95f2b9080d2cae62bace7 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + taxes: + hasRecords: true + streamHash: 03400ffd24119641df67f723ed0cfab3ae533bb9 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + transactions: + hasRecords: true + streamHash: a1d1a53548470258884121ee2e377455fe041bee + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + assist: + docsUrl: https://www.zoho.com/books/api/v3/introduction/#organization-id + +schemas: + users: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + email: + type: + - string + - "null" + invitation_type: + type: + - string + - "null" + is_current_user: + type: + - boolean + - "null" + is_customer_segmented: + type: + - boolean + - "null" + is_employee: + type: + - boolean + - "null" + is_super_admin: + type: + - boolean + - "null" + is_vendor_segmented: + type: + - boolean + - "null" + mobile: + type: + - string + - "null" + name: + type: + - string + - "null" + photo_url: + type: + - string + - "null" + role_id: + type: + - string + - "null" + status: + type: + - string + - "null" + user_id: + type: string + user_role: + type: + - string + - "null" + user_type: + type: + - string + - "null" + required: + - user_id + banking: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + account_code: + type: + - string + - "null" + account_id: + type: string + account_name: + type: + - string + - "null" + account_number: + type: + - string + - "null" + account_type: + type: + - string + - "null" + balance: + type: + - number + - "null" + bank_balance: + type: + - number + - "null" + bank_name: + type: + - string + - "null" + bcy_balance: + type: + - number + - "null" + consent_info: + type: + - object + - "null" + properties: + consent_remaining_days: + type: + - string + - "null" + is_consent_expired: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + feed_status: + type: + - string + - "null" + feeds_last_refresh_date: + type: + - string + - "null" + is_active: + type: + - boolean + - "null" + is_beta_feed: + type: + - boolean + - "null" + is_direct_paypal: + type: + - boolean + - "null" + is_paypal_account: + type: + - boolean + - "null" + is_primary_account: + type: + - boolean + - "null" + partner_bank_source: + type: + - string + - "null" + partner_bank_source_formatted: + type: + - string + - "null" + routing_number: + type: + - string + - "null" + statement_suggestion_count: + type: + - number + - "null" + total_unprinted_checks: + type: + - number + - "null" + uncategorized_transactions: + type: + - number + - "null" + required: + - account_id + organizations: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + version: + type: + - string + - "null" + AppList: + type: + - array + - "null" + items: + type: + - string + - "null" + account_created_date: + type: + - string + - "null" + account_created_date_formatted: + type: + - string + - "null" + can_change_timezone: + type: + - boolean + - "null" + can_show_document_tab: + type: + - boolean + - "null" + can_sign_invoice: + type: + - boolean + - "null" + contact_name: + type: + - string + - "null" + country: + type: + - string + - "null" + country_code: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_format: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + currency_symbol: + type: + - string + - "null" + custom_field_type: + type: + - number + - "null" + custom_fields: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + index: + type: + - number + - "null" + label: + type: + - string + - "null" + value: + type: + - string + - "null" + digital_signature_mode: + type: + - string + - "null" + email: + type: + - string + - "null" + field_separator: + type: + - string + - "null" + fiscal_year_start_month: + type: + - number + - "null" + isOrgActive: + type: + - boolean + - "null" + isOrgNotSupported: + type: + - boolean + - "null" + is_default_org: + type: + - boolean + - "null" + is_designated_zone: + type: + - boolean + - "null" + is_dsign_required: + type: + - boolean + - "null" + is_export_with_payment_enabled: + type: + - boolean + - "null" + is_free_zone: + type: + - boolean + - "null" + is_gst_india_version: + type: + - boolean + - "null" + is_hsn_or_sac_enabled: + type: + - boolean + - "null" + is_international_trade_enabled: + type: + - boolean + - "null" + is_invoice_pmt_tds_allowed: + type: + - boolean + - "null" + is_org_active: + type: + - boolean + - "null" + is_quick_setup_completed: + type: + - boolean + - "null" + is_registered_for_composite_scheme: + type: + - boolean + - "null" + is_registered_for_gst: + type: + - boolean + - "null" + is_registered_for_tax: + type: + - boolean + - "null" + is_sales_inclusive_tax_enabled: + type: + - boolean + - "null" + is_sales_reverse_charge_enabled: + type: + - boolean + - "null" + is_scan_preference_enabled: + type: + - boolean + - "null" + is_search360_enabled: + type: + - string + - "null" + is_sku_enabled: + type: + - boolean + - "null" + is_solo_org: + type: + - boolean + - "null" + is_tax_registered: + type: + - boolean + - "null" + is_trial_expired: + type: + - boolean + - "null" + is_trial_period_extended: + type: + - boolean + - "null" + is_user_accountant: + type: + - boolean + - "null" + is_user_dsign_mandatory: + type: + - boolean + - "null" + is_ziedition: + type: + - boolean + - "null" + is_zpayroll_grid: + type: + - boolean + - "null" + language_code: + type: + - string + - "null" + mode: + type: + - string + - "null" + name: + type: + - string + - "null" + org_action: + type: + - string + - "null" + org_created_app_source: + type: + - number + - "null" + org_joined_app_list: + type: + - array + - "null" + items: + type: + - string + - "null" + org_settings: + type: + - boolean + - "null" + org_type: + type: + - string + - "null" + organization_id: + type: string + partners_domain: + type: + - string + - "null" + phone: + type: + - string + - "null" + plan_name: + type: + - string + - "null" + plan_period: + type: + - string + - "null" + plan_type: + type: + - number + - "null" + price_precision: + type: + - number + - "null" + sales_tax_type: + type: + - string + - "null" + source: + type: + - number + - "null" + state: + type: + - string + - "null" + state_code: + type: + - string + - "null" + tax_group_enabled: + type: + - boolean + - "null" + time_zone: + type: + - string + - "null" + time_zone_formatted: + type: + - string + - "null" + user_status: + type: + - number + - "null" + user_status_formatted: + type: + - string + - "null" + version_formatted: + type: + - string + - "null" + zi_zb_client: + type: + - number + - "null" + zi_zb_edition: + type: + - number + - "null" + zoho_one_org: + type: + - string + - "null" + required: + - organization_id + contacts: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + ach_supported: + type: + - boolean + - "null" + company_name: + type: + - string + - "null" + contact_id: + type: string + contact_name: + type: + - string + - "null" + contact_type: + type: + - string + - "null" + contact_type_formatted: + type: + - string + - "null" + created_time: + type: + - string + - "null" + created_time_formatted: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + custom_field_hash: + type: + - object + - "null" + custom_fields: + type: + - array + - "null" + customer_name: + type: + - string + - "null" + customer_sub_type: + type: + - string + - "null" + email: + type: + - string + - "null" + facebook: + type: + - string + - "null" + first_name: + type: + - string + - "null" + has_attachment: + type: + - boolean + - "null" + is_linked_with_zohocrm: + type: + - boolean + - "null" + language_code: + type: + - string + - "null" + language_code_formatted: + type: + - string + - "null" + last_modified_time: + type: + - string + - "null" + last_modified_time_formatted: + type: + - string + - "null" + last_name: + type: + - string + - "null" + mobile: + type: + - string + - "null" + outstanding_payable_amount: + type: + - number + - "null" + outstanding_payable_amount_bcy: + type: + - number + - "null" + outstanding_receivable_amount: + type: + - number + - "null" + outstanding_receivable_amount_bcy: + type: + - number + - "null" + pan_no: + type: + - string + - "null" + payment_terms: + type: + - number + - "null" + payment_terms_label: + type: + - string + - "null" + phone: + type: + - string + - "null" + portal_status: + type: + - string + - "null" + portal_status_formatted: + type: + - string + - "null" + source: + type: + - string + - "null" + status: + type: + - string + - "null" + twitter: + type: + - string + - "null" + unused_credits_payable_amount: + type: + - number + - "null" + unused_credits_payable_amount_bcy: + type: + - number + - "null" + unused_credits_receivable_amount: + type: + - number + - "null" + unused_credits_receivable_amount_bcy: + type: + - number + - "null" + vendor_name: + type: + - string + - "null" + website: + type: + - string + - "null" + required: + - contact_id + bills: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + attachment_name: + type: + - string + - "null" + balance: + type: + - number + - "null" + bill_id: + type: string + bill_number: + type: + - string + - "null" + client_viewed_time: + type: + - string + - "null" + color_code: + type: + - string + - "null" + created_time: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + current_sub_status: + type: + - string + - "null" + current_sub_status_id: + type: + - string + - "null" + date: + type: + - string + - "null" + due_date: + type: + - string + - "null" + due_days: + type: + - string + - "null" + entity_type: + type: + - string + - "null" + exchange_rate: + type: + - number + - "null" + has_attachment: + type: + - boolean + - "null" + is_bill_reconciliation_violated: + type: + - boolean + - "null" + is_tally_bill: + type: + - boolean + - "null" + is_uber_bill: + type: + - boolean + - "null" + is_viewed_by_client: + type: + - boolean + - "null" + last_modified_time: + type: string + price_precision: + type: + - number + - "null" + reference_number: + type: + - string + - "null" + status: + type: + - string + - "null" + tds_total: + type: + - number + - "null" + total: + type: + - number + - "null" + unprocessed_payment_amount: + type: + - number + - "null" + vendor_id: + type: + - string + - "null" + vendor_name: + type: + - string + - "null" + required: + - bill_id + - last_modified_time + estimates: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + accepted_date: + type: + - string + - "null" + client_viewed_time: + type: + - string + - "null" + color_code: + type: + - string + - "null" + company_name: + type: + - string + - "null" + created_time: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + current_sub_status: + type: + - string + - "null" + current_sub_status_id: + type: + - string + - "null" + customer_id: + type: + - string + - "null" + customer_name: + type: + - string + - "null" + date: + type: + - string + - "null" + declined_date: + type: + - string + - "null" + estimate_id: + type: string + estimate_number: + type: + - string + - "null" + expiry_date: + type: + - string + - "null" + has_attachment: + type: + - boolean + - "null" + is_emailed: + type: + - boolean + - "null" + is_viewed_by_client: + type: + - boolean + - "null" + last_modified_time: + type: string + reference_number: + type: + - string + - "null" + salesperson_id: + type: + - string + - "null" + salesperson_name: + type: + - string + - "null" + status: + type: + - string + - "null" + template_id: + type: + - string + - "null" + template_type: + type: + - string + - "null" + total: + type: + - number + - "null" + zcrm_potential_id: + type: + - string + - "null" + zcrm_potential_name: + type: + - string + - "null" + required: + - estimate_id + - last_modified_time + items: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + account_id: + type: + - string + - "null" + account_name: + type: + - string + - "null" + actual_available_stock: + type: + - number + - "null" + available_stock: + type: + - number + - "null" + created_time: + type: + - string + - "null" + has_attachment: + type: + - boolean + - "null" + image_document_id: + type: + - string + - "null" + image_name: + type: + - string + - "null" + image_type: + type: + - string + - "null" + is_linked_with_zohocrm: + type: + - boolean + - "null" + item_id: + type: string + item_name: + type: + - string + - "null" + item_type: + type: + - string + - "null" + last_modified_time: + type: + - string + - "null" + name: + type: + - string + - "null" + product_type: + type: + - string + - "null" + purchase_account_id: + type: + - string + - "null" + purchase_account_name: + type: + - string + - "null" + purchase_description: + type: + - string + - "null" + purchase_rate: + type: + - number + - "null" + rate: + type: + - number + - "null" + reorder_level: + type: + - string + - "null" + sku: + type: + - string + - "null" + source: + type: + - string + - "null" + status: + type: + - string + - "null" + stock_on_hand: + type: + - number + - "null" + tax_id: + type: + - string + - "null" + tax_name: + type: + - string + - "null" + tax_percentage: + type: + - number + - "null" + unit: + type: + - string + - "null" + zcrm_product_id: + type: + - string + - "null" + required: + - item_id + invoices: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + ach_payment_initiated: + type: + - boolean + - "null" + adjustment: + type: + - number + - "null" + balance: + type: + - number + - "null" + billing_address: + type: + - object + - "null" + properties: + address: + type: + - string + - "null" + attention: + type: + - string + - "null" + city: + type: + - string + - "null" + country: + type: + - string + - "null" + fax: + type: + - string + - "null" + phone: + type: + - string + - "null" + state: + type: + - string + - "null" + street2: + type: + - string + - "null" + zipcode: + type: + - string + - "null" + client_viewed_time: + type: + - string + - "null" + color_code: + type: + - string + - "null" + company_name: + type: + - string + - "null" + country: + type: + - string + - "null" + created_by: + type: + - string + - "null" + created_time: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + currency_symbol: + type: + - string + - "null" + current_sub_status: + type: + - string + - "null" + current_sub_status_id: + type: + - string + - "null" + custom_field_hash: + type: + - object + - "null" + custom_fields: + type: + - array + - "null" + customer_id: + type: + - string + - "null" + customer_name: + type: + - string + - "null" + date: + type: string + documents: + type: + - string + - "null" + due_date: + type: + - string + - "null" + due_days: + type: + - string + - "null" + email: + type: + - string + - "null" + exchange_rate: + type: + - number + - "null" + has_attachment: + type: + - boolean + - "null" + invoice_id: + type: string + invoice_number: + type: + - string + - "null" + invoice_url: + type: + - string + - "null" + is_emailed: + type: + - boolean + - "null" + is_pre_gst: + type: + - boolean + - "null" + is_viewed_by_client: + type: + - boolean + - "null" + last_modified_time: + type: + - string + - "null" + last_payment_date: + type: + - string + - "null" + last_reminder_sent_date: + type: + - string + - "null" + no_of_copies: + type: + - number + - "null" + payment_expected_date: + type: + - string + - "null" + phone: + type: + - string + - "null" + project_name: + type: + - string + - "null" + reference_number: + type: + - string + - "null" + reminders_sent: + type: + - number + - "null" + salesperson_id: + type: + - string + - "null" + salesperson_name: + type: + - string + - "null" + schedule_time: + type: + - string + - "null" + shipping_address: + type: + - object + - "null" + properties: + address: + type: + - string + - "null" + attention: + type: + - string + - "null" + city: + type: + - string + - "null" + country: + type: + - string + - "null" + fax: + type: + - string + - "null" + phone: + type: + - string + - "null" + state: + type: + - string + - "null" + street2: + type: + - string + - "null" + zipcode: + type: + - string + - "null" + shipping_charge: + type: + - number + - "null" + show_no_of_copies: + type: + - boolean + - "null" + status: + type: + - string + - "null" + template_id: + type: + - string + - "null" + template_type: + type: + - string + - "null" + total: + type: + - number + - "null" + transaction_type: + type: + - string + - "null" + unprocessed_payment_amount: + type: + - number + - "null" + updated_time: + type: + - string + - "null" + write_off_amount: + type: + - number + - "null" + zcrm_potential_id: + type: + - string + - "null" + zcrm_potential_name: + type: + - string + - "null" + required: + - invoice_id + - date + expenses: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + account_name: + type: + - string + - "null" + bcy_total: + type: + - number + - "null" + bcy_total_without_tax: + type: + - number + - "null" + created_time: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + custom_fields_list: + type: + - string + - "null" + customer_id: + type: + - string + - "null" + customer_name: + type: + - string + - "null" + date: + type: string + distance: + type: + - number + - "null" + end_reading: + type: + - string + - "null" + exchange_rate: + type: + - number + - "null" + expense_id: + type: string + expense_receipt_name: + type: + - string + - "null" + expense_type: + type: + - string + - "null" + has_attachment: + type: + - boolean + - "null" + is_billable: + type: + - boolean + - "null" + is_personal: + type: + - boolean + - "null" + last_modified_time: + type: + - string + - "null" + mileage_rate: + type: + - number + - "null" + mileage_type: + type: + - string + - "null" + mileage_unit: + type: + - string + - "null" + paid_through_account_name: + type: + - string + - "null" + reference_number: + type: + - string + - "null" + report_id: + type: + - string + - "null" + report_name: + type: + - string + - "null" + report_number: + type: + - string + - "null" + start_reading: + type: + - string + - "null" + status: + type: + - string + - "null" + total: + type: + - number + - "null" + total_without_tax: + type: + - number + - "null" + user_name: + type: + - string + - "null" + vendor_id: + type: + - string + - "null" + vendor_name: + type: + - string + - "null" + required: + - expense_id + - date + creditnotes: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + applied_invoices: + type: + - string + - "null" + balance: + type: + - number + - "null" + client_viewed_time: + type: + - string + - "null" + color_code: + type: + - string + - "null" + created_time: + type: + - string + - "null" + creditnote_id: + type: string + creditnote_number: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + current_sub_status: + type: + - string + - "null" + current_sub_status_id: + type: + - string + - "null" + customer_id: + type: + - string + - "null" + customer_name: + type: + - string + - "null" + date: + type: string + exchange_rate: + type: + - number + - "null" + has_attachment: + type: + - boolean + - "null" + is_emailed: + type: + - boolean + - "null" + is_viewed_by_client: + type: + - boolean + - "null" + item_price: + type: + - number + - "null" + item_quantity: + type: + - number + - "null" + item_total: + type: + - number + - "null" + item_total_price: + type: + - number + - "null" + item_total_without_tax: + type: + - number + - "null" + last_modified_time: + type: + - string + - "null" + price_precision: + type: + - number + - "null" + reference_number: + type: + - string + - "null" + salesperson_id: + type: + - string + - "null" + salesperson_name: + type: + - string + - "null" + status: + type: + - string + - "null" + template_id: + type: + - string + - "null" + template_type: + type: + - string + - "null" + total: + type: + - number + - "null" + required: + - creditnote_id + - date + customer_payments: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + account_id: + type: + - string + - "null" + account_name: + type: + - string + - "null" + amount: + type: + - number + - "null" + applied_invoices: + type: + - array + - "null" + bcy_amount: + type: + - number + - "null" + bcy_refunded_amount: + type: + - number + - "null" + bcy_unused_amount: + type: + - number + - "null" + created_time: + type: + - string + - "null" + custom_fields_list: + type: + - string + - "null" + customer_id: + type: + - string + - "null" + customer_name: + type: + - string + - "null" + date: + type: string + documents: + type: + - string + - "null" + gateway_transaction_id: + type: + - string + - "null" + has_attachment: + type: + - boolean + - "null" + invoice_numbers: + type: + - string + - "null" + last_four_digits: + type: + - string + - "null" + last_modified_time: + type: + - string + - "null" + payment_gateway: + type: + - string + - "null" + payment_id: + type: string + payment_mode: + type: + - string + - "null" + payment_mode_formatted: + type: + - string + - "null" + payment_number: + type: + - string + - "null" + payment_status: + type: + - string + - "null" + payment_type: + type: + - string + - "null" + product_description: + type: + - string + - "null" + reference_number: + type: + - string + - "null" + settlement_status: + type: + - string + - "null" + tax_account_id: + type: + - string + - "null" + tax_account_name: + type: + - string + - "null" + tax_amount_withheld: + type: + - number + - "null" + unused_amount: + type: + - number + - "null" + required: + - payment_id + - date + purchase_orders: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + billed_status: + type: + - string + - "null" + client_viewed_time: + type: + - string + - "null" + color_code: + type: + - string + - "null" + company_name: + type: + - string + - "null" + created_time: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + current_sub_status: + type: + - string + - "null" + current_sub_status_id: + type: + - string + - "null" + date: + type: string + delivery_date: + type: + - string + - "null" + delivery_days: + type: + - string + - "null" + due_by_days: + type: + - string + - "null" + due_in_days: + type: + - string + - "null" + has_attachment: + type: + - boolean + - "null" + is_viewed_by_client: + type: + - boolean + - "null" + last_modified_time: + type: + - string + - "null" + order_status: + type: + - string + - "null" + price_precision: + type: + - string + - "null" + purchaseorder_id: + type: string + purchaseorder_number: + type: + - string + - "null" + quantity_marked_as_received: + type: + - number + - "null" + quantity_yet_to_receive: + type: + - number + - "null" + receives: + type: + - array + - "null" + reference_number: + type: + - string + - "null" + status: + type: + - string + - "null" + total: + type: + - number + - "null" + vendor_id: + type: + - string + - "null" + vendor_name: + type: + - string + - "null" + required: + - purchaseorder_id + - date + sales_orders: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + bcy_total: + type: + - number + - "null" + color_code: + type: + - string + - "null" + company_name: + type: + - string + - "null" + created_time: + type: + - string + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + current_sub_status: + type: + - string + - "null" + current_sub_status_id: + type: + - string + - "null" + custom_fields_list: + type: + - string + - "null" + customer_id: + type: + - string + - "null" + customer_name: + type: + - string + - "null" + date: + type: string + delivery_date: + type: + - string + - "null" + delivery_method: + type: + - string + - "null" + delivery_method_id: + type: + - string + - "null" + due_by_days: + type: + - string + - "null" + due_in_days: + type: + - string + - "null" + email: + type: + - string + - "null" + has_attachment: + type: + - boolean + - "null" + invoiced_status: + type: + - string + - "null" + is_emailed: + type: + - boolean + - "null" + last_modified_time: + type: + - string + - "null" + order_fulfillment_type: + type: + - string + - "null" + order_status: + type: + - string + - "null" + paid_status: + type: + - string + - "null" + pickup_location_id: + type: + - string + - "null" + quantity_invoiced: + type: + - number + - "null" + reference_number: + type: + - string + - "null" + salesorder_id: + type: string + salesorder_number: + type: + - string + - "null" + salesperson_name: + type: + - string + - "null" + shipment_date: + type: + - string + - "null" + shipment_days: + type: + - string + - "null" + source: + type: + - string + - "null" + status: + type: + - string + - "null" + total: + type: + - number + - "null" + total_invoiced_amount: + type: + - number + - "null" + zcrm_potential_id: + type: + - string + - "null" + zcrm_potential_name: + type: + - string + - "null" + required: + - salesorder_id + - date + journals: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + bcy_total: + type: + - number + - "null" + created_by_id: + type: + - string + - "null" + created_by_name: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + entity_type: + type: + - string + - "null" + entry_number: + type: + - string + - "null" + journal_date: + type: string + journal_id: + type: string + journal_type: + type: + - string + - "null" + notes: + type: + - string + - "null" + reference_number: + type: + - string + - "null" + status: + type: + - string + - "null" + total: + type: + - number + - "null" + required: + - journal_id + - journal_date + taxes: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + diff_rate_reason: + type: + - string + - "null" + end_date: + type: + - string + - "null" + is_default_tax: + type: + - boolean + - "null" + is_editable: + type: + - boolean + - "null" + is_inactive: + type: + - boolean + - "null" + last_modified_time: + type: + - string + - "null" + output_tax_account_name: + type: + - string + - "null" + start_date: + type: + - string + - "null" + status: + type: + - string + - "null" + tax_account_id: + type: + - string + - "null" + tax_id: + type: string + tax_name: + type: + - string + - "null" + tax_percentage: + type: + - number + - "null" + tax_specific_type: + type: + - string + - "null" + tax_specification: + type: + - string + - "null" + tax_type: + type: + - string + - "null" + required: + - tax_id + transactions: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - string + - "null" + account_id: + type: + - string + - "null" + account_name: + type: + - string + - "null" + account_type: + type: + - string + - "null" + amount: + type: + - number + - "null" + currency_code: + type: + - string + - "null" + currency_id: + type: + - string + - "null" + currency_symbol: + type: + - string + - "null" + customer_id: + type: + - string + - "null" + date: + type: string + debit_or_credit: + type: + - string + - "null" + exclude_description: + type: + - string + - "null" + imported_transaction_id: + type: + - string + - "null" + is_auto_categorized: + type: + - boolean + - "null" + is_excluded_by_system: + type: + - boolean + - "null" + is_offsetaccount_matched: + type: + - boolean + - "null" + is_paid_via_print_check: + type: + - boolean + - "null" + is_rule_exist: + type: + - boolean + - "null" + offset_account_code: + type: + - string + - "null" + offset_account_name: + type: + - string + - "null" + payee: + type: + - string + - "null" + payroll_tax_group_formatted: + type: + - string + - "null" + price_precision: + type: + - number + - "null" + reconcile_status: + type: + - string + - "null" + reference_number: + type: + - string + - "null" + rule_details: + type: + - object + - "null" + rule_id: + type: + - string + - "null" + rule_name: + type: + - string + - "null" + running_balance: + type: + - string + - "null" + running_balance_formatted: + type: + - string + - "null" + source: + type: + - string + - "null" + status: + type: + - string + - "null" + transaction_id: + type: + - string + - "null" + transaction_type: + type: + - string + - "null" + required: + - date diff --git a/airbyte-integrations/connectors/source-zoho-books/metadata.yaml b/airbyte-integrations/connectors/source-zoho-books/metadata.yaml new file mode 100644 index 000000000000..3767234b6b52 --- /dev/null +++ b/airbyte-integrations/connectors/source-zoho-books/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "https://www.zohoapis.*" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-zoho-books + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:5.14.0@sha256:accdf6c1bbcabd45b40f836692e4f3b1a1e1f0b28267973802ee212cd9c2c16a + connectorSubtype: api + connectorType: source + definitionId: b67f9de8-177d-4d48-9c5c-8a767d845885 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-zoho-books + githubIssueLabel: source-zoho-books + icon: icon.svg + license: MIT + name: Zoho Books + releaseDate: 2024-10-19 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/zoho-books + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/zoho-books.md b/docs/integrations/sources/zoho-books.md new file mode 100644 index 000000000000..1e6974b9aa96 --- /dev/null +++ b/docs/integrations/sources/zoho-books.md @@ -0,0 +1,43 @@ +# Zoho Books +The Zoho Books connector enables seamless integration of financial data, automating the flow of invoices, payments, expenses, and bank transactions into your data systems. With this connector, businesses can streamline bookkeeping processes, ensuring accurate financial reporting and real-time insights. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `region` | `string` | Region. The region code for the Zoho Books API, such as `com`, `eu`, `in`, etc. | | +| `client_id` | `string` | OAuth Client ID. | | +| `client_secret` | `string` | OAuth Client Secret. | | +| `refresh_token` | `string` | OAuth Refresh Token. | | +| `start_date` | `string` | Start date. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| users | user_id | DefaultPaginator | ✅ | ❌ | +| banking | account_id | DefaultPaginator | ✅ | ❌ | +| organizations | organization_id | DefaultPaginator | ✅ | ❌ | +| contacts | contact_id | DefaultPaginator | ✅ | ❌ | +| bills | bill_id | DefaultPaginator | ✅ | ✅ | +| estimates | estimate_id | DefaultPaginator | ✅ | ✅ | +| items | item_id | DefaultPaginator | ✅ | ❌ | +| invoices | invoice_id | DefaultPaginator | ✅ | ✅ | +| expenses | expense_id | DefaultPaginator | ✅ | ✅ | +| creditnotes | creditnote_id | DefaultPaginator | ✅ | ✅ | +| customerpayments | payment_id | DefaultPaginator | ✅ | ✅ | +| purchaseorders | purchaseorder_id | DefaultPaginator | ✅ | ✅ | +| salesorders | salesorder_id | DefaultPaginator | ✅ | ✅ | +| journals | journal_id | DefaultPaginator | ✅ | ✅ | +| taxes | tax_id | DefaultPaginator | ✅ | ❌ | +| transactions | | DefaultPaginator | ✅ | ✅ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-10-19 | | Initial release by [@bishalbera](https://github.com/bishalbera) via Connector Builder | + +