1
0
mirror of synced 2025-12-25 02:09:19 -05:00

Source Quickbooks: migrate to low-code (#24324)

* Source Quickbooks: migrate to low-code

* Source Quickbooks: add oauth flow

* #24658 Lowcode CDK: implement single use refresh token oauth authenticator

* #23498 source Quickbooks: set up CATs

* #24658 lowcode cdk: review fixes

* upd manifest version + airbyte cdk version

* delete source-quickbooks-singer along with seed

* Automated Change

* update docs and spec.json

* revert data type map in docs

* Automated Change

* quickbooks: review fixes

* quickbooks: more review fixes

* quickbooks: modify spec

* quickbooks: rename icon

* quickbooks: generate definitions

---------

Co-authored-by: Denys Davydov <davydov.den18@gmail.com>
Co-authored-by: davydov-d <davydov-d@users.noreply.github.com>
This commit is contained in:
Roman Yermilov [GL]
2023-04-11 09:52:00 +04:00
committed by GitHub
parent a26bd9284a
commit a992167f90
69 changed files with 9773 additions and 8542 deletions

View File

Before

Width:  |  Height:  |  Size: 643 B

After

Width:  |  Height:  |  Size: 643 B

View File

@@ -21693,58 +21693,84 @@
"custom": false,
"releaseStage": "alpha"
}, {
"sourceDefinitionId": "29b409d9-30a5-4cc8-ad50-886eb846fea3",
"sourceDefinitionId": "cf9c4355-b171-4477-8f2d-6c5cc5fc8b7e",
"name": "QuickBooks",
"dockerRepository": "airbyte/source-quickbooks-singer",
"dockerImageTag": "0.1.5",
"documentationUrl": "https://docs.airbyte.com/integrations/sources/quickbooks-singer",
"icon": "qb.svg",
"dockerRepository": "airbyte/source-quickbooks",
"dockerImageTag": "1.0.0",
"documentationUrl": "https://docs.airbyte.com/integrations/sources/quickbooks",
"icon": "quickbooks.svg",
"sourceType": "api",
"spec": {
"documentationUrl": "https://docs.airbyte.com/integrations/sources/quickbooks-singer",
"documentationUrl": "https://docs.airbyte.com/integrations/sources/quickbooks",
"connectionSpecification": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Source QuickBooks Singer Spec",
"title": "Source QuickBooks Spec",
"type": "object",
"required": [ "client_id", "client_secret", "refresh_token", "realm_id", "user_agent", "start_date", "sandbox" ],
"additionalProperties": false,
"required": [ "credentials", "start_date", "sandbox" ],
"additionalProperties": true,
"properties": {
"client_id": {
"type": "string",
"title": "Client ID",
"description": "Identifies which app is making the request. Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production."
},
"client_secret": {
"description": " Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production.",
"title": "Client Secret",
"type": "string",
"airbyte_secret": true
},
"refresh_token": {
"description": "A token used when refreshing the access token.",
"title": "Refresh Token",
"type": "string",
"airbyte_secret": true
},
"realm_id": {
"description": "Labeled Company ID. The Make API Calls panel is populated with the realm id and the current access token.",
"title": "Realm ID",
"type": "string",
"airbyte_secret": true
},
"user_agent": {
"type": "string",
"title": "User Agent",
"description": "Process and email for API logging purposes. Example: tap-quickbooks <api_user_email@your_company.com>."
"credentials": {
"title": "Authorization Method",
"type": "object",
"order": 0,
"oneOf": [ {
"type": "object",
"title": "OAuth2.0",
"required": [ "client_id", "client_secret", "refresh_token", "access_token", "token_expiry_date", "realm_id" ],
"properties": {
"auth_type": {
"type": "string",
"const": "oauth2.0"
},
"client_id": {
"type": "string",
"title": "Client ID",
"description": "Identifies which app is making the request. Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production."
},
"client_secret": {
"description": " Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production.",
"title": "Client Secret",
"type": "string",
"airbyte_secret": true
},
"refresh_token": {
"description": "A token used when refreshing the access token.",
"title": "Refresh Token",
"type": "string",
"airbyte_secret": true
},
"access_token": {
"description": "Access token fot making authenticated requests.",
"title": "Access Token",
"type": "string",
"airbyte_secret": true
},
"token_expiry_date": {
"type": "string",
"title": "Token Expiry Date",
"description": "The date-time when the access token should be refreshed.",
"format": "date-time"
},
"realm_id": {
"description": "Labeled Company ID. The Make API Calls panel is populated with the realm id and the current access token.",
"title": "Realm ID",
"type": "string",
"airbyte_secret": true
}
}
} ]
},
"start_date": {
"description": "The default value to use if no bookmark exists for an endpoint (rfc3339 date string). E.g, 2021-03-20T00:00:00Z. Any data before this date will not be replicated.",
"order": 1,
"description": "The default value to use if no bookmark exists for an endpoint (rfc3339 date string). E.g, 2021-03-20T00:00:00+00:00. Any data before this date will not be replicated.",
"title": "Start Date",
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$",
"examples": [ "2021-03-20T00:00:00Z" ]
"format": "date-time",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}",
"examples": [ "2021-03-20T00:00:00+00:00" ]
},
"sandbox": {
"order": 2,
"description": "Determines whether to use the sandbox or production environment.",
"title": "Sandbox",
"type": "boolean",
@@ -21754,12 +21780,71 @@
},
"supportsNormalization": false,
"supportsDBT": false,
"supported_destination_sync_modes": [ ]
"supported_destination_sync_modes": [ ],
"advanced_auth": {
"auth_flow_type": "oauth2.0",
"predicate_key": [ "credentials", "auth_type" ],
"predicate_value": "oauth2.0",
"oauth_config_specification": {
"complete_oauth_output_specification": {
"type": "object",
"additionalProperties": true,
"properties": {
"access_token": {
"type": "string",
"path_in_connector_config": [ "credentials", "access_token" ]
},
"refresh_token": {
"type": "string",
"path_in_connector_config": [ "credentials", "refresh_token" ]
},
"token_expiry_date": {
"type": "string",
"format": "date-time",
"path_in_connector_config": [ "credentials", "token_expiry_date" ]
},
"realm_id": {
"type": "string",
"path_in_connector_config": [ "credentials", "realm_id" ]
}
}
},
"complete_oauth_server_input_specification": {
"type": "object",
"additionalProperties": true,
"properties": {
"client_id": {
"type": "string"
},
"client_secret": {
"type": "string"
}
}
},
"complete_oauth_server_output_specification": {
"type": "object",
"additionalProperties": true,
"properties": {
"client_id": {
"type": "string",
"path_in_connector_config": [ "credentials", "client_id" ]
},
"client_secret": {
"type": "string",
"path_in_connector_config": [ "credentials", "client_secret" ]
}
}
}
}
}
},
"tombstone": false,
"public": true,
"custom": false,
"releaseStage": "alpha"
"releaseStage": "alpha",
"allowedHosts": {
"hosts": [ "sandbox-quickbooks.api.intuit.com", "quickbooks.api.intuit.com", "oauth.platform.intuit.com" ]
}
}, {
"sourceDefinitionId": "9b6cc0c0-da81-4103-bbfd-5279e18a849a",
"name": "Railz",

View File

@@ -1678,13 +1678,18 @@
sourceType: api
releaseStage: alpha
- name: QuickBooks
sourceDefinitionId: 29b409d9-30a5-4cc8-ad50-886eb846fea3
dockerRepository: airbyte/source-quickbooks-singer
dockerImageTag: 0.1.5
documentationUrl: https://docs.airbyte.com/integrations/sources/quickbooks-singer
icon: qb.svg
sourceDefinitionId: cf9c4355-b171-4477-8f2d-6c5cc5fc8b7e
dockerRepository: airbyte/source-quickbooks
dockerImageTag: 1.0.0
documentationUrl: https://docs.airbyte.com/integrations/sources/quickbooks
icon: quickbooks.svg
sourceType: api
releaseStage: alpha
allowedHosts:
hosts:
- "sandbox-quickbooks.api.intuit.com"
- "quickbooks.api.intuit.com"
- "oauth.platform.intuit.com"
- name: Railz
sourceDefinitionId: 9b6cc0c0-da81-4103-bbfd-5279e18a849a
dockerRepository: airbyte/source-railz

View File

@@ -12748,62 +12748,85 @@
oauthFlowOutputParameters:
- - "token"
- - "key"
- dockerImage: "airbyte/source-quickbooks-singer:0.1.5"
- dockerImage: "airbyte/source-quickbooks:1.0.0"
spec:
documentationUrl: "https://docs.airbyte.com/integrations/sources/quickbooks-singer"
documentationUrl: "https://docs.airbyte.com/integrations/sources/quickbooks"
connectionSpecification:
$schema: "http://json-schema.org/draft-07/schema#"
title: "Source QuickBooks Singer Spec"
title: "Source QuickBooks Spec"
type: "object"
required:
- "client_id"
- "client_secret"
- "refresh_token"
- "realm_id"
- "user_agent"
- "credentials"
- "start_date"
- "sandbox"
additionalProperties: false
additionalProperties: true
properties:
client_id:
type: "string"
title: "Client ID"
description: "Identifies which app is making the request. Obtain this value\
\ from the Keys tab on the app profile via My Apps on the developer site.\
\ There are two versions of this key: development and production."
client_secret:
description: " Obtain this value from the Keys tab on the app profile via\
\ My Apps on the developer site. There are two versions of this key: development\
\ and production."
title: "Client Secret"
type: "string"
airbyte_secret: true
refresh_token:
description: "A token used when refreshing the access token."
title: "Refresh Token"
type: "string"
airbyte_secret: true
realm_id:
description: "Labeled Company ID. The Make API Calls panel is populated\
\ with the realm id and the current access token."
title: "Realm ID"
type: "string"
airbyte_secret: true
user_agent:
type: "string"
title: "User Agent"
description: "Process and email for API logging purposes. Example: tap-quickbooks\
\ <api_user_email@your_company.com>."
credentials:
title: "Authorization Method"
type: "object"
order: 0
oneOf:
- type: "object"
title: "OAuth2.0"
required:
- "client_id"
- "client_secret"
- "refresh_token"
- "access_token"
- "token_expiry_date"
- "realm_id"
properties:
auth_type:
type: "string"
const: "oauth2.0"
client_id:
type: "string"
title: "Client ID"
description: "Identifies which app is making the request. Obtain this\
\ value from the Keys tab on the app profile via My Apps on the\
\ developer site. There are two versions of this key: development\
\ and production."
client_secret:
description: " Obtain this value from the Keys tab on the app profile\
\ via My Apps on the developer site. There are two versions of this\
\ key: development and production."
title: "Client Secret"
type: "string"
airbyte_secret: true
refresh_token:
description: "A token used when refreshing the access token."
title: "Refresh Token"
type: "string"
airbyte_secret: true
access_token:
description: "Access token fot making authenticated requests."
title: "Access Token"
type: "string"
airbyte_secret: true
token_expiry_date:
type: "string"
title: "Token Expiry Date"
description: "The date-time when the access token should be refreshed."
format: "date-time"
realm_id:
description: "Labeled Company ID. The Make API Calls panel is populated\
\ with the realm id and the current access token."
title: "Realm ID"
type: "string"
airbyte_secret: true
start_date:
order: 1
description: "The default value to use if no bookmark exists for an endpoint\
\ (rfc3339 date string). E.g, 2021-03-20T00:00:00Z. Any data before this\
\ date will not be replicated."
\ (rfc3339 date string). E.g, 2021-03-20T00:00:00+00:00. Any data before\
\ this date will not be replicated."
title: "Start Date"
type: "string"
pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$"
format: "date-time"
pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}"
examples:
- "2021-03-20T00:00:00Z"
- "2021-03-20T00:00:00+00:00"
sandbox:
order: 2
description: "Determines whether to use the sandbox or production environment."
title: "Sandbox"
type: "boolean"
@@ -12811,6 +12834,60 @@
supportsNormalization: false
supportsDBT: false
supported_destination_sync_modes: []
advanced_auth:
auth_flow_type: "oauth2.0"
predicate_key:
- "credentials"
- "auth_type"
predicate_value: "oauth2.0"
oauth_config_specification:
complete_oauth_output_specification:
type: "object"
additionalProperties: true
properties:
access_token:
type: "string"
path_in_connector_config:
- "credentials"
- "access_token"
refresh_token:
type: "string"
path_in_connector_config:
- "credentials"
- "refresh_token"
token_expiry_date:
type: "string"
format: "date-time"
path_in_connector_config:
- "credentials"
- "token_expiry_date"
realm_id:
type: "string"
path_in_connector_config:
- "credentials"
- "realm_id"
complete_oauth_server_input_specification:
type: "object"
additionalProperties: true
properties:
client_id:
type: "string"
client_secret:
type: "string"
complete_oauth_server_output_specification:
type: "object"
additionalProperties: true
properties:
client_id:
type: "string"
path_in_connector_config:
- "credentials"
- "client_id"
client_secret:
type: "string"
path_in_connector_config:
- "credentials"
- "client_secret"
- dockerImage: "airbyte/source-railz:0.1.1"
spec:
documentationUrl: "https://docsurl.com"

View File

@@ -1,7 +0,0 @@
*
!Dockerfile
!Dockerfile.test
!main.py
!source_quickbooks_singer
!setup.py
!secrets

View File

@@ -1 +0,0 @@
NEW_SOURCE_CHECKLIST.md

View File

@@ -1,128 +0,0 @@
# Source QuickBooks Singer
This is the repository for the QuickBooks source connector, based on a Singer tap.
For information about how to use this connector within Airbyte, see [the User Documentation](https://docs.airbyte.io/integrations/sources/quickbooks-singer).
## Local development
### Prerequisites
**To iterate on this connector, make sure to complete this prerequisites section.**
#### Minimum Python version required `= 3.7.0`
#### Build & Activate Virtual Environment and install dependencies
From this connector directory, create a virtual environment:
```
python3 -m venv .venv
```
This will generate a virtualenv for this module in `.venv/`. Make sure this venv is active in your
development environment of choice. To activate it from the terminal, run:
```
source .venv/bin/activate
pip install -r requirements.txt
```
If you are in an IDE, follow your IDE's instructions to activate the virtualenv.
Note that while we are installing dependencies from `requirements.txt`, you should only edit `setup.py` for your dependencies. `requirements.txt` is
used for editable installs (`pip install -e`) to pull in Python dependencies from the monorepo and will call `setup.py`.
If this is mumbo jumbo to you, don't worry about it, just put your deps in `setup.py` but install using `pip install -r requirements.txt` and everything
should work as you expect.
#### Building via Gradle
From the Airbyte repository root, run:
```
./gradlew :airbyte-integrations:connectors:source-quickbooks:build
```
#### Create credentials
**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.io/integrations/sources/quickbooks-singer)
to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_quickbooks_singer/spec.json` file.
Note that the `secrets` directory is gitignored by default, so there is no danger of accidentally checking in sensitive information.
See `sample_files/sample_config.json` for a sample config file.
**If you are an Airbyte core member**, copy the credentials in Lastpass under the secret name `source quickbooks test creds`
and place them into `secrets/config.json`.
### Locally running the connector
```
python main.py spec
python main.py check --config secrets/config.json
python main.py discover --config secrets/config.json
python main.py read --config secrets/config.json --catalog integration_tests/configured_catalog.json
```
### Unit Tests
To run unit tests locally, from the connector root run:
```
pytest unit_tests
```
### Unit Tests
To run unit tests locally, from the connector directory run:
```
python3 -m pytest unit_tests
```
### Locally running the connector docker image
#### Build
First, make sure you build the latest Docker image:
```
docker build . -t airbyte/source-quickbooks-singer:dev
```
You can also build the connector image via Gradle:
```
./gradlew :airbyte-integrations:connectors:source-quickbooks:airbyteDocker
```
When building via Gradle, the docker image name and tag, respectively, are the values of the `io.airbyte.name` and `io.airbyte.version` `LABEL`s in
the Dockerfile.
#### Run
Then run any of the connector commands as follows:
```
docker run --rm airbyte/source-quickbooks-singer:dev spec
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-quickbooks-singer:dev check --config /secrets/config.json
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-quickbooks-singer:dev discover --config /secrets/config.json
docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-quickbooks-singer:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json
```
### Integration Tests
1. From the airbyte project root, run `./gradlew :airbyte-integrations:connectors:source-quickbooks-singer:integrationTest` to run the standard integration test suite.
1. To run additional integration tests, create a directory `integration_tests` which contain your tests and run them with `pytest integration_tests`.
Make sure to familiarize yourself with [pytest test discovery](https://docs.pytest.org/en/latest/goodpractices.html#test-discovery) to know how your test files and methods should be named.
## Dependency Management
All of your dependencies should go in `setup.py`, NOT `requirements.txt`. The requirements file is only used to connect internal Airbyte dependencies in the monorepo for local development.
### Publishing a new version of the connector
You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what?
1. Make sure your changes are passing unit and integration tests
1. Bump the connector version in `Dockerfile` -- just increment the value of the `LABEL io.airbyte.version` appropriately (we use SemVer).
1. Create a Pull Request
1. Pat yourself on the back for being an awesome contributor
1. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master

View File

@@ -1,53 +0,0 @@
# 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-quickbooks-singer:dev
tests:
spec:
- spec_path: "source_quickbooks_singer/spec.json"
connection:
- config_path: "secrets/config.json"
status: "succeed"
- config_path: "integration_tests/invalid_config.json"
status: "failed"
discovery:
- config_path: "secrets/config.json"
basic_read:
- config_path: "secrets/config.json"
configured_catalog_path: "integration_tests/configured_catalog.json"
empty_streams: ["budgets", "classes", "departments", "payment_methods", "transfers", "vendor_credits"]
incremental:
- config_path: "secrets/config.json"
configured_catalog_path: "integration_tests/configured_catalog.json"
future_state_path: "integration_tests/abnormal_state.json"
cursor_paths:
accounts: [ "bookmarks", "accounts", "LastUpdatedTime"]
bill_payments: [ "bookmarks", "bill_payments", "LastUpdatedTime"]
bills: [ "bookmarks", "bills", "LastUpdatedTime"]
budgets: [ "bookmarks", "budgets", "LastUpdatedTime"]
classes: [ "bookmarks", "classes", "LastUpdatedTime"]
credit_memos: [ "bookmarks", "credit_memos", "LastUpdatedTime"]
customers: [ "bookmarks", "customers", "LastUpdatedTime"]
departments: [ "bookmarks", "departments", "LastUpdatedTime"]
deposits: [ "bookmarks", "deposits", "LastUpdatedTime"]
employees: [ "bookmarks", "employees", "LastUpdatedTime"]
estimates: [ "bookmarks", "estimates", "LastUpdatedTime"]
invoices: [ "bookmarks", "invoices", "LastUpdatedTime"]
items: [ "bookmarks", "items", "LastUpdatedTime"]
journal_entries: [ "bookmarks", "journal_entries", "LastUpdatedTime"]
payment_methods: [ "bookmarks", "payment_methods", "LastUpdatedTime"]
payments: [ "bookmarks", "payments", "LastUpdatedTime"]
purchase_orders: [ "bookmarks", "purchase_orders", "LastUpdatedTime"]
purchases: [ "bookmarks", "purchases", "LastUpdatedTime"]
refund_receipts: [ "bookmarks", "refund_receipts", "LastUpdatedTime"]
sales_receipts: [ "bookmarks", "sales_receipts", "LastUpdatedTime"]
tax_agencies: [ "bookmarks", "tax_agencies", "LastUpdatedTime"]
tax_codes: [ "bookmarks", "tax_codes", "LastUpdatedTime"]
tax_rates: [ "bookmarks", "tax_rates", "LastUpdatedTime"]
terms: [ "bookmarks", "terms", "LastUpdatedTime"]
time_activities: [ "bookmarks", "time_activities", "LastUpdatedTime"]
transfers: [ "bookmarks", "transfers", "LastUpdatedTime"]
vendor_credits: [ "bookmarks", "vendor_credits", "LastUpdatedTime"]
vendors: [ "bookmarks", "vendors", "LastUpdatedTime"]
full_refresh:
- config_path: "secrets/config.json"
configured_catalog_path: "integration_tests/configured_catalog.json"

View File

@@ -1,88 +0,0 @@
{
"bookmarks": {
"accounts": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"bill_payments": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"bills": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"budgets": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"classes": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"credit_memos": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"customers": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"departments": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"deposits": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"employees": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"estimates": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"invoices": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"items": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"journal_entries": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"payment_methods": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"payments": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"purchase_orders": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"purchases": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"refund_receipts": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"sales_receipts": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"tax_agencies": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"tax_codes": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"tax_rates": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"terms": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"time_activities": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"transfers": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"vendor_credits": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
},
"vendors": {
"LastUpdatedTime": "2121-04-16T22:59:57-07:00"
}
}
}

View File

@@ -1,340 +0,0 @@
{
"streams": [
{
"stream": {
"name": "accounts",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "bill_payments",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "bills",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "budgets",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "classes",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "credit_memos",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "customers",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "departments",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "deposits",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "employees",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "estimates",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "invoices",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "items",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "journal_entries",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "payment_methods",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "payments",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "purchase_orders",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "purchases",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "refund_receipts",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "sales_receipts",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "tax_agencies",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "tax_codes",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "tax_rates",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "terms",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "time_activities",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "transfers",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "vendor_credits",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
},
{
"stream": {
"name": "vendors",
"json_schema": {},
"supported_sync_modes": ["incremental"],
"source_defined_cursor": true,
"default_cursor_field": ["MetaData", "LastUpdatedTime"]
},
"sync_mode": "incremental",
"cursor_field": ["MetaData", "LastUpdatedTime"],
"destination_sync_mode": "append"
}
]
}

View File

@@ -1,9 +0,0 @@
{
"client_id": "<invalid_client_id>",
"client_secret": "<invalid_client_secret>",
"refresh_token": "<invalid_refresh_token>",
"realm_id": "<invalid_realm_id>",
"user_agent": "invalid invalid@invalid.com",
"start_date": "2021-01-01T00:00:00Z",
"sandbox": true
}

View File

@@ -1,16 +0,0 @@
{
"bookmarks": {
"accounts": {
"LastUpdatedTime": "2021-04-16T22:59:57-07:00"
},
"bill_payments": {
"LastUpdatedTime": "2021-02-14T12:56:17-08:00"
},
"bills": {
"LastUpdatedTime": "2021-02-14T13:10:36-08:00"
},
"credit_memos": {
"LastUpdatedTime": "2021-02-13T12:51:28-08:00"
}
}
}

View File

@@ -1,2 +0,0 @@
# This file is autogenerated -- only edit if you know what you are doing. Use setup.py for declaring dependencies.
-e .

View File

@@ -1,3 +0,0 @@
from .source import SourceQuickbooksSinger
__all__ = ["SourceQuickbooksSinger"]

View File

@@ -1,60 +0,0 @@
#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
import json
from airbyte_cdk.logger import AirbyteLogger
from airbyte_cdk.models import AirbyteConnectionStatus, Status
from airbyte_cdk.sources.singer import SingerSource
from requests_oauthlib import OAuth2Session
from tap_quickbooks.client import PROD_ENDPOINT_BASE, SANDBOX_ENDPOINT_BASE, TOKEN_REFRESH_URL
class SourceQuickbooksSinger(SingerSource):
TAP_CMD = "tap-quickbooks"
def _write_config(self, token):
logger = AirbyteLogger()
logger.info("Credentials Refreshed")
def check_config(self, logger: AirbyteLogger, config_path: str, config: json) -> AirbyteConnectionStatus:
token = {"refresh_token": config["refresh_token"], "token_type": "Bearer", "access_token": "wrong", "expires_in": "-30"}
extra = {"client_id": config["client_id"], "client_secret": config["client_secret"]}
sandbox = bool(config.get("sandbox", False))
user_agent = config["user_agent"]
realm_id = config["realm_id"]
session = OAuth2Session(
config["client_id"],
token=token,
auto_refresh_url=TOKEN_REFRESH_URL,
auto_refresh_kwargs=extra,
token_updater=self._write_config,
)
endpoint = f"/v3/company/{realm_id}/query"
params = {"query": "SELECT * FROM CompanyInfo"}
headers = {"Accept": "application/json", "User-Agent": user_agent}
if sandbox:
full_url = SANDBOX_ENDPOINT_BASE + endpoint
else:
full_url = PROD_ENDPOINT_BASE + endpoint
try:
session.request("GET", full_url, headers=headers, params=params)
return AirbyteConnectionStatus(status=Status.SUCCEEDED)
except Exception as e:
return AirbyteConnectionStatus(status=Status.FAILED, message=f"An exception occurred: {str(e)}")
def discover_cmd(self, logger: AirbyteLogger, config_path: str) -> str:
return f"{self.TAP_CMD} --config {config_path} --discover"
def read_cmd(self, logger: AirbyteLogger, config_path: str, catalog_path: str, state_path: str = None) -> str:
config_option = f"--config {config_path}"
properties_option = f"--catalog {catalog_path}"
state_option = f"--state {state_path}" if state_path else ""
return f"{self.TAP_CMD} {config_option} {properties_option} {state_option}"

View File

@@ -1,61 +0,0 @@
{
"documentationUrl": "https://docs.airbyte.com/integrations/sources/quickbooks-singer",
"connectionSpecification": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Source QuickBooks Singer Spec",
"type": "object",
"required": [
"client_id",
"client_secret",
"refresh_token",
"realm_id",
"user_agent",
"start_date",
"sandbox"
],
"additionalProperties": false,
"properties": {
"client_id": {
"type": "string",
"title": "Client ID",
"description": "Identifies which app is making the request. Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production."
},
"client_secret": {
"description": " Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production.",
"title": "Client Secret",
"type": "string",
"airbyte_secret": true
},
"refresh_token": {
"description": "A token used when refreshing the access token.",
"title": "Refresh Token",
"type": "string",
"airbyte_secret": true
},
"realm_id": {
"description": "Labeled Company ID. The Make API Calls panel is populated with the realm id and the current access token.",
"title": "Realm ID",
"type": "string",
"airbyte_secret": true
},
"user_agent": {
"type": "string",
"title": "User Agent",
"description": "Process and email for API logging purposes. Example: tap-quickbooks <api_user_email@your_company.com>."
},
"start_date": {
"description": "The default value to use if no bookmark exists for an endpoint (rfc3339 date string). E.g, 2021-03-20T00:00:00Z. Any data before this date will not be replicated.",
"title": "Start Date",
"type": "string",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$",
"examples": ["2021-03-20T00:00:00Z"]
},
"sandbox": {
"description": "Determines whether to use the sandbox or production environment.",
"title": "Sandbox",
"type": "boolean",
"default": false
}
}
}
}

View File

@@ -0,0 +1,6 @@
*
!Dockerfile
!main.py
!source_quickbooks
!setup.py
!secrets

View File

@@ -7,9 +7,7 @@ WORKDIR /airbyte/integration_code
# upgrade pip to the latest version
RUN apk --no-cache upgrade \
&& pip install --upgrade pip \
&& apk --no-cache add tzdata \
&& apk --no-cache add git \
&& apk --no-cache add build-base
&& apk --no-cache add tzdata build-base
COPY setup.py ./
@@ -31,11 +29,10 @@ RUN apk --no-cache add bash
# copy payload code only
COPY main.py ./
COPY source_quickbooks_singer ./source_quickbooks_singer
COPY source_quickbooks ./source_quickbooks
ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py"
ENTRYPOINT ["python", "/airbyte/integration_code/main.py"]
LABEL io.airbyte.version=0.1.5
LABEL io.airbyte.name=airbyte/source-quickbooks-singer
LABEL io.airbyte.version=1.0.0
LABEL io.airbyte.name=airbyte/source-quickbooks

View File

@@ -0,0 +1,82 @@
# Quickbooks Source
This is the repository for the Quickbooks configuration based source connector.
For information about how to use this connector within Airbyte, see [the documentation](https://docs.airbyte.com/integrations/sources/quickbooks).
## Local development
#### Building via Gradle
You can also build the connector in Gradle. This is typically used in CI and not needed for your development workflow.
To build using Gradle, from the Airbyte repository root, run:
```
./gradlew :airbyte-integrations:connectors:source-quickbooks:build
```
#### Create credentials
**If you are a community contributor**, follow the instructions in the [documentation](https://docs.airbyte.com/integrations/sources/quickbooks)
to generate the necessary credentials. Then create a file `secrets/config.json` conforming to the `source_quickbooks/spec.yaml` file.
Note that any directory named `secrets` is gitignored across the entire Airbyte repo, so there is no danger of accidentally checking in sensitive information.
See `integration_tests/sample_config.json` for a sample config file.
**If you are an Airbyte core member**, copy the credentials in Lastpass under the secret name `source quickbooks test creds`
and place them into `secrets/config.json`.
### Locally running the connector docker image
#### Build
First, make sure you build the latest Docker image:
```
docker build . -t airbyte/source-quickbooks:dev
```
You can also build the connector image via Gradle:
```
./gradlew :airbyte-integrations:connectors:source-quickbooks:airbyteDocker
```
When building via Gradle, the docker image name and tag, respectively, are the values of the `io.airbyte.name` and `io.airbyte.version` `LABEL`s in
the Dockerfile.
#### Run
Then run any of the connector commands as follows:
```
docker run --rm airbyte/source-quickbooks:dev spec
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-quickbooks:dev check --config /secrets/config.json
docker run --rm -v $(pwd)/secrets:/secrets airbyte/source-quickbooks:dev discover --config /secrets/config.json
docker run --rm -v $(pwd)/secrets:/secrets -v $(pwd)/integration_tests:/integration_tests airbyte/source-quickbooks:dev read --config /secrets/config.json --catalog /integration_tests/configured_catalog.json
```
## Testing
#### Acceptance Tests
Customize `acceptance-test-config.yml` file to configure tests. See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) for more information.
If your connector requires to create or destroy resources for use during acceptance tests create fixtures for it and place them inside integration_tests/acceptance.py.
To run your integration tests with Docker, run:
```
./acceptance-test-docker.sh
```
### Using gradle to run tests
All commands should be run from airbyte project root.
To run unit tests:
```
./gradlew :airbyte-integrations:connectors:source-quickbooks:unitTest
```
To run acceptance and custom integration tests:
```
./gradlew :airbyte-integrations:connectors:source-quickbooks:integrationTest
```
## Dependency Management
All of your dependencies should go in `setup.py`, NOT `requirements.txt`. The requirements file is only used to connect internal Airbyte dependencies in the monorepo for local development.
We split dependencies between two groups, dependencies that are:
* required for your connector to work need to go to `MAIN_REQUIREMENTS` list.
* required for the testing need to go to `TEST_REQUIREMENTS` list
### Publishing a new version of the connector
You've checked out the repo, implemented a million dollar feature, and you're ready to share your changes with the world. Now what?
1. Make sure your changes are passing unit and integration tests.
1. Bump the connector version in `Dockerfile` -- just increment the value of the `LABEL io.airbyte.version` appropriately (we use [SemVer](https://semver.org/)).
1. Create a Pull Request.
1. Pat yourself on the back for being an awesome contributor.
1. Someone from Airbyte will take a look at your PR and iterate with you to merge it into master.

View File

@@ -1,7 +1,3 @@
#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
def test_example_method():
assert True

View File

@@ -0,0 +1,46 @@
# 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-quickbooks:dev
test_strictness_level: "high"
acceptance_tests:
spec:
tests:
- spec_path: "source_quickbooks/spec.json"
connection:
tests:
- config_path: "secrets/config.json"
status: "succeed"
- config_path: "integration_tests/invalid_config.json"
status: "failed"
discovery:
tests:
- config_path: "secrets/config.json"
basic_read:
tests:
- config_path: "secrets/config.json"
empty_streams:
- name: vendor_credits
bypass_reason: "unable to populate"
- name: vendors
bypass_reason: "unable to populate"
- name: classes
bypass_reason: "unable to populate"
- name: budgets
bypass_reason: "unable to populate"
- name: transfers
bypass_reason: "unable to populate"
- name: departments
bypass_reason: "unable to populate"
expect_records:
path: "integration_tests/expected_records.jsonl"
extra_fields: no
exact_order: no
extra_records: yes
incremental:
tests:
- config_path: "secrets/config.json"
future_state:
future_state_path: "integration_tests/abnormal_state.json"
full_refresh:
tests:
- config_path: "secrets/config.json"

View File

@@ -1,2 +1,3 @@
#!/usr/bin/env sh
source "$(git rev-parse --show-toplevel)/airbyte-integrations/bases/connector-acceptance-test/acceptance-test-docker.sh"

View File

@@ -5,5 +5,5 @@ plugins {
}
airbytePython {
moduleDirectory 'source_quickbooks_singer'
moduleDirectory 'source_quickbooks'
}

View File

@@ -0,0 +1,3 @@
#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#

View File

@@ -0,0 +1,254 @@
[
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:35:37-08:00"
},
"stream_descriptor": {"name": "budgets"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:35:37-08:00"
},
"stream_descriptor": {"name": "bills"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:35:37-08:00"
},
"stream_descriptor": {"name": "classes"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:35:37-08:00"
},
"stream_descriptor": {"name": "departments"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:35:37-08:00"
},
"stream_descriptor": {"name": "vendor_credits"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:35:37-08:00"
},
"stream_descriptor": {"name": "transfers"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:35:37-08:00"
},
"stream_descriptor": {"name": "accounts"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-17T12:51:28-08:00"
},
"stream_descriptor": {"name": "credit_memos"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T12:56:17-08:00"
},
"stream_descriptor": {"name": "bill_payments"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-16T11:40:52-08:00"
},
"stream_descriptor": {"name": "sales_receipts"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-15T14:04:25-07:00"
},
"stream_descriptor": {"name": "purchases"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T13:13:33-08:00"
},
"stream_descriptor": {"name": "payments"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T13:10:36-08:00"
},
"stream_descriptor": {"name": "purchase_orders"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-10T14:42:05-08:00"
},
"stream_descriptor": {"name": "payment_methods"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-15T10:04:24-08:00"
},
"stream_descriptor": {"name": "journal_entries"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T13:16:17-08:00"
},
"stream_descriptor": {"name": "items"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T13:16:17-08:00"
},
"stream_descriptor": {"name": "invoices"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T13:16:17-08:00"
},
"stream_descriptor": {"name": "customers"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-16T15:35:07-08:00"
},
"stream_descriptor": {"name": "refund_receipts"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T13:00:56-08:00"
},
"stream_descriptor": {"name": "deposits"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-16T11:46:26-08:00"
},
"stream_descriptor": {"name": "employees"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-18T13:16:17-08:00"
},
"stream_descriptor": {"name": "estimates"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-17T12:17:04-08:00"
},
"stream_descriptor": {"name": "tax_agencies"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-17T12:17:04-08:00"
},
"stream_descriptor": {"name": "tax_codes"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-17T12:17:04-08:00"
},
"stream_descriptor": {"name": "tax_rates"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-15T15:24:26-08:00"
},
"stream_descriptor": {"name": "terms"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-02-16T11:55:25-08:00"
},
"stream_descriptor": {"name": "time_activities"}
}
},
{
"type": "STREAM",
"stream": {
"stream_state": {
"airbyte_cursor": "2050-03-04T14:29:35-08:00"
},
"stream_descriptor": {"name": "vendors"}
}
}
]

View File

@@ -11,4 +11,6 @@ pytest_plugins = ("connector_acceptance_test.plugin",)
@pytest.fixture(scope="session", autouse=True)
def connector_setup():
"""This fixture is a placeholder for external resources that acceptance test might require."""
# TODO: setup test dependencies if needed. otherwise remove the TODO comments
yield
# TODO: clean up test dependencies

View File

@@ -0,0 +1,85 @@
{"stream": "accounts", "data": {"Name": "Undeposited Funds", "SubAccount": false, "FullyQualifiedName": "Undeposited Funds", "Active": true, "Classification": "Asset", "AccountType": "Other Current Asset", "AccountSubType": "UndepositedFunds", "CurrentBalance": 2062.52, "CurrentBalanceWithSubAccounts": 2062.52, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "domain": "QBO", "sparse": false, "Id": "4", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:42:07-08:00", "LastUpdatedTime": "2023-02-18T13:13:33-08:00"}, "airbyte_cursor": "2023-02-18T13:13:33-08:00"}, "emitted_at": 1679578441954}
{"stream": "accounts", "data": {"Name": "Board of Equalization Payable", "SubAccount": false, "FullyQualifiedName": "Board of Equalization Payable", "Active": true, "Classification": "Liability", "AccountType": "Other Current Liability", "AccountSubType": "GlobalTaxPayable", "CurrentBalance": -370.94, "CurrentBalanceWithSubAccounts": -370.94, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "domain": "QBO", "sparse": false, "Id": "90", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578441960}
{"stream": "accounts", "data": {"Name": "Accounts Receivable (A/R)", "SubAccount": false, "FullyQualifiedName": "Accounts Receivable (A/R)", "Active": true, "Classification": "Asset", "AccountType": "Accounts Receivable", "AccountSubType": "AccountsReceivable", "CurrentBalance": 5281.52, "CurrentBalanceWithSubAccounts": 5281.52, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "domain": "QBO", "sparse": false, "Id": "84", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-15T14:49:29-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578441964}
{"stream": "accounts", "data": {"Name": "Inventory Asset", "SubAccount": false, "FullyQualifiedName": "Inventory Asset", "Active": true, "Classification": "Asset", "AccountType": "Other Current Asset", "AccountSubType": "Inventory", "CurrentBalance": 596.25, "CurrentBalanceWithSubAccounts": 596.25, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "domain": "QBO", "sparse": false, "Id": "81", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-15T10:36:05-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578441968}
{"stream": "accounts", "data": {"Name": "Checking", "SubAccount": false, "FullyQualifiedName": "Checking", "Active": true, "Classification": "Asset", "AccountType": "Bank", "AccountSubType": "Checking", "CurrentBalance": 1201.0, "CurrentBalanceWithSubAccounts": 1201.0, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "domain": "QBO", "sparse": false, "Id": "35", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-14T12:08:20-08:00", "LastUpdatedTime": "2023-03-04T14:35:37-08:00"}, "airbyte_cursor": "2023-03-04T14:35:37-08:00"}, "emitted_at": 1679578442632}
{"stream": "credit_memos", "data": {"RemainingCredit": 0, "domain": "QBO", "sparse": false, "Id": "73", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-17T12:51:27-08:00", "LastUpdatedTime": "2023-02-17T12:51:28-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1026", "TxnDate": "2023-02-01", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "LineNum": 1, "Description": "Pest Control Services", "Amount": 100.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "10", "name": "Pest Control"}, "UnitPrice": 100, "Qty": 1, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 100.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "1", "name": "Amy's Bird Sanctuary"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "79", "Line1": "Amy Lauterbach", "Line2": "Amy's Bird Sanctuary", "Line3": "4581 Finch St.", "Line4": "Bayshore, CA 94326", "Lat": "INVALID", "Long": "INVALID"}, "ShipAddr": {"Id": "2", "Line1": "4581 Finch St.", "City": "Bayshore", "CountrySubDivisionCode": "CA", "PostalCode": "94326", "Lat": "INVALID", "Long": "INVALID"}, "TotalAmt": 100.0, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Birds@Intuit.com"}, "Balance": 0, "airbyte_cursor": "2023-02-17T12:51:28-08:00"}, "emitted_at": 1679578450494}
{"stream": "bills", "data": {"SalesTermRef": {"value": "3"}, "DueDate": "2023-03-04", "Balance": 0, "domain": "QBO", "sparse": false, "Id": "24", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-15T15:31:20-08:00", "LastUpdatedTime": "2023-02-17T13:43:08-08:00"}, "TxnDate": "2023-02-02", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "104", "TxnType": "BillPaymentCheck"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Building Lease", "Amount": 900.0, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "17", "name": "Rent or Lease"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "40", "name": "Hall Properties"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 900.0, "airbyte_cursor": "2023-02-17T13:43:08-08:00"}, "emitted_at": 1679578453574}
{"stream": "bills", "data": {"DueDate": "2023-02-18", "Balance": 315.0, "domain": "QBO", "sparse": false, "Id": "108", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T12:36:59-08:00", "LastUpdatedTime": "2023-02-18T12:36:59-08:00"}, "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "LineNum": 1, "Amount": 315.0, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "69", "name": "Legal & Professional Fees:Accounting"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "49", "name": "Robertson & Associates"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 315.0, "airbyte_cursor": "2023-02-18T12:36:59-08:00"}, "emitted_at": 1679578453579}
{"stream": "bills", "data": {"SalesTermRef": {"value": "1"}, "DueDate": "2023-01-03", "Balance": 0, "domain": "QBO", "sparse": false, "Id": "105", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-17T13:43:56-08:00", "LastUpdatedTime": "2023-02-18T12:55:23-08:00"}, "TxnDate": "2023-01-03", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "117", "TxnType": "BillPaymentCheck"}], "Line": [{"Id": "1", "LineNum": 1, "Amount": 56.5, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "77", "name": "Utilities:Telephone"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "32", "name": "Cal Telephone"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 56.5, "airbyte_cursor": "2023-02-18T12:55:23-08:00"}, "emitted_at": 1679578453584}
{"stream": "bills", "data": {"SalesTermRef": {"value": "3"}, "DueDate": "2023-03-17", "Balance": 0, "domain": "QBO", "sparse": false, "Id": "25", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-15T15:37:25-08:00", "LastUpdatedTime": "2023-02-18T12:56:17-08:00"}, "TxnDate": "2023-02-15", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "118", "TxnType": "BillPaymentCheck"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Lumber", "Amount": 103.55, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"CustomerRef": {"value": "26", "name": "Travis Waldron"}, "AccountRef": {"value": "64", "name": "Job Expenses:Job Materials:Decks and Patios"}, "BillableStatus": "HasBeenBilled", "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "46", "name": "Norton Lumber and Building Materials"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 103.55, "airbyte_cursor": "2023-02-18T12:56:17-08:00"}, "emitted_at": 1679578453589}
{"stream": "bills", "data": {"DueDate": "2023-02-18", "Balance": 205.0, "domain": "QBO", "sparse": false, "Id": "126", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T13:10:36-08:00", "LastUpdatedTime": "2023-02-18T13:10:36-08:00"}, "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "LineNum": 1, "Description": "Fountain Pump", "Amount": 80.0, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"BillableStatus": "NotBillable", "ItemRef": {"value": "11", "name": "Pump"}, "UnitPrice": 10, "Qty": 8, "TaxCodeRef": {"value": "NON"}}}, {"Id": "2", "LineNum": 2, "Description": "Rock Fountain", "Amount": 125.0, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"BillableStatus": "NotBillable", "ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 125, "Qty": 1, "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "46", "name": "Norton Lumber and Building Materials"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 205.0, "airbyte_cursor": "2023-02-18T13:10:36-08:00"}, "emitted_at": 1679578453594}
{"stream": "bill_payments", "data": {"VendorRef": {"value": "51", "name": "Tim Philip Masonry"}, "PayType": "Check", "CheckPayment": {"BankAccountRef": {"value": "35", "name": "Checking"}, "PrintStatus": "NotSet"}, "TotalAmt": 666.0, "domain": "QBO", "sparse": false, "Id": "82", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T13:06:58-08:00", "LastUpdatedTime": "2023-02-17T13:06:58-08:00"}, "DocNumber": "45", "TxnDate": "2023-02-17", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 666.0, "LinkedTxn": [{"TxnId": "3", "TxnType": "Bill"}]}], "airbyte_cursor": "2023-02-17T13:06:58-08:00"}, "emitted_at": 1679578456621}
{"stream": "bill_payments", "data": {"VendorRef": {"value": "49", "name": "Robertson & Associates"}, "PayType": "Check", "CheckPayment": {"BankAccountRef": {"value": "35", "name": "Checking"}, "PrintStatus": "NotSet"}, "TotalAmt": 300.0, "domain": "QBO", "sparse": false, "Id": "91", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T13:19:24-08:00", "LastUpdatedTime": "2023-02-17T13:19:24-08:00"}, "DocNumber": "10", "TxnDate": "2022-11-16", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 300.0, "LinkedTxn": [{"TxnId": "90", "TxnType": "Bill"}]}], "airbyte_cursor": "2023-02-17T13:19:24-08:00"}, "emitted_at": 1679578456625}
{"stream": "bill_payments", "data": {"VendorRef": {"value": "40", "name": "Hall Properties"}, "PayType": "Check", "CheckPayment": {"BankAccountRef": {"value": "35", "name": "Checking"}, "PrintStatus": "NotSet"}, "TotalAmt": 900.0, "domain": "QBO", "sparse": false, "Id": "104", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T13:43:08-08:00", "LastUpdatedTime": "2023-02-17T13:43:08-08:00"}, "DocNumber": "11", "TxnDate": "2023-02-11", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 900.0, "LinkedTxn": [{"TxnId": "24", "TxnType": "Bill"}]}], "airbyte_cursor": "2023-02-17T13:43:08-08:00"}, "emitted_at": 1679578456629}
{"stream": "bill_payments", "data": {"VendorRef": {"value": "32", "name": "Cal Telephone"}, "PayType": "CreditCard", "CreditCardPayment": {"CCAccountRef": {"value": "41", "name": "Mastercard"}}, "TotalAmt": 56.5, "domain": "QBO", "sparse": false, "Id": "117", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T12:55:23-08:00", "LastUpdatedTime": "2023-02-18T12:55:23-08:00"}, "DocNumber": "1", "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 56.5, "LinkedTxn": [{"TxnId": "105", "TxnType": "Bill"}]}], "airbyte_cursor": "2023-02-18T12:55:23-08:00"}, "emitted_at": 1679578456634}
{"stream": "bill_payments", "data": {"VendorRef": {"value": "46", "name": "Norton Lumber and Building Materials"}, "PayType": "CreditCard", "CreditCardPayment": {"CCAccountRef": {"value": "41", "name": "Mastercard"}}, "TotalAmt": 103.55, "domain": "QBO", "sparse": false, "Id": "118", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T12:56:17-08:00", "LastUpdatedTime": "2023-02-18T12:56:17-08:00"}, "DocNumber": "1", "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 103.55, "LinkedTxn": [{"TxnId": "25", "TxnType": "Bill"}]}], "airbyte_cursor": "2023-02-18T12:56:17-08:00"}, "emitted_at": 1679578456640}
{"stream": "sales_receipts", "data": {"domain": "QBO", "sparse": false, "Id": "11", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-15T14:59:48-08:00", "LastUpdatedTime": "2023-02-15T14:59:48-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1003", "TxnDate": "2023-02-13", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "LineNum": 1, "Description": "Custom Design", "Amount": 337.5, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "4", "name": "Design"}, "UnitPrice": 75, "Qty": 4.5, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 337.5, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "6", "name": "Dylan Sollfrank"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "49", "Line1": "Dylan Sollfrank", "Lat": "INVALID", "Long": "INVALID"}, "TotalAmt": 337.5, "ApplyTaxAfterDiscount": false, "PrintStatus": "NotSet", "EmailStatus": "NotSet", "Balance": 0, "PaymentMethodRef": {"value": "2", "name": "Check"}, "PaymentRefNum": "10264", "DepositToAccountRef": {"value": "35", "name": "Checking"}, "airbyte_cursor": "2023-02-15T14:59:48-08:00"}, "emitted_at": 1679578460138}
{"stream": "sales_receipts", "data": {"domain": "QBO", "sparse": false, "Id": "17", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-15T15:12:39-08:00", "LastUpdatedTime": "2023-02-15T15:12:39-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1008", "TxnDate": "2023-01-24", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "LineNum": 1, "Description": "Custom Design", "Amount": 225.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "4", "name": "Design"}, "UnitPrice": 75, "Qty": 3, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 225.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "14", "name": "Kate Whelan"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "54", "Line1": "Kate Whelan", "Line2": "45 First St.", "Line3": "Menlo Park, CA 94304 USA", "Lat": "37.3813444", "Long": "-122.1802812"}, "ShipAddr": {"Id": "14", "Line1": "45 First St.", "City": "Menlo Park", "Country": "USA", "CountrySubDivisionCode": "CA", "PostalCode": "94304", "Lat": "37.4585825", "Long": "-122.1352789"}, "TotalAmt": 225.0, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Kate@Whelan.com"}, "Balance": 0, "DepositToAccountRef": {"value": "35", "name": "Checking"}, "airbyte_cursor": "2023-02-15T15:12:39-08:00"}, "emitted_at": 1679578460147}
{"stream": "sales_receipts", "data": {"domain": "QBO", "sparse": false, "Id": "38", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:15:46-08:00", "LastUpdatedTime": "2023-02-16T11:15:46-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1011", "TxnDate": "2023-02-16", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "62", "TxnType": "Deposit"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Pest Control Services", "Amount": 87.5, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "10", "name": "Pest Control"}, "UnitPrice": 35, "Qty": 2.5, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 87.5, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}, {"Amount": 8.75, "DetailType": "DiscountLineDetail", "DiscountLineDetail": {"PercentBased": true, "DiscountPercent": 10, "DiscountAccountRef": {"value": "86", "name": "Discounts given"}}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "15", "name": "Pye's Cakes"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "57", "Line1": "Karen Pye", "Line2": "Pye's Cakes", "Line3": "350 Mountain View Dr.", "Line4": "South Orange, NJ 07079", "Lat": "40.7489277", "Long": "-74.2609903"}, "ShipAddr": {"Id": "15", "Line1": "350 Mountain View Dr.", "City": "South Orange", "CountrySubDivisionCode": "NJ", "PostalCode": "07079", "Lat": "40.7633073", "Long": "-74.2426072"}, "TotalAmt": 78.75, "ApplyTaxAfterDiscount": false, "PrintStatus": "NotSet", "EmailStatus": "NotSet", "BillEmail": {"Address": "karen@pye.com"}, "Balance": 0, "PaymentMethodRef": {"value": "1", "name": "Cash"}, "DepositToAccountRef": {"value": "4", "name": "Undeposited Funds"}, "airbyte_cursor": "2023-02-16T11:15:46-08:00"}, "emitted_at": 1679578460175}
{"stream": "sales_receipts", "data": {"domain": "QBO", "sparse": false, "Id": "47", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:40:52-08:00", "LastUpdatedTime": "2023-02-16T11:40:52-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1014", "TxnDate": "2023-02-14", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "62", "TxnType": "Deposit"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Weekly Gardening Service", "Amount": 140.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "6", "name": "Gardening"}, "UnitPrice": 35, "Qty": 4, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 140.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "4", "name": "Diego Rodriguez"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "66", "Line1": "Diego Rodriguez", "Line2": "321 Channing", "Line3": "Palo Alto, CA 94303", "Lat": "37.4530553", "Long": "-122.1178261"}, "TotalAmt": 140.0, "ApplyTaxAfterDiscount": false, "PrintStatus": "NotSet", "EmailStatus": "NotSet", "BillEmail": {"Address": "Diego@Rodriguez.com"}, "Balance": 0, "DepositToAccountRef": {"value": "4", "name": "Undeposited Funds"}, "airbyte_cursor": "2023-02-16T11:40:52-08:00"}, "emitted_at": 1679578460180}
{"stream": "purchases", "data": {"AccountRef": {"value": "41", "name": "Mastercard"}, "PaymentType": "CreditCard", "EntityRef": {"value": "56", "name": "Bob's Burger Joint", "type": "Vendor"}, "Credit": false, "TotalAmt": 18.97, "PurchaseEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "TxnType", "Value": "1"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}, "domain": "QBO", "sparse": false, "Id": "140", "SyncToken": "0", "MetaData": {"CreateTime": "2023-03-04T14:36:37-08:00", "LastUpdatedTime": "2023-03-04T14:36:37-08:00"}, "TxnDate": "2023-02-23", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PrivateNote": "Bought lunch for crew 102", "Line": [{"Id": "1", "Amount": 18.97, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "13", "name": "Meals and Entertainment"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "airbyte_cursor": "2023-03-04T14:36:37-08:00"}, "emitted_at": 1679578464111}
{"stream": "purchases", "data": {"AccountRef": {"value": "41", "name": "Mastercard"}, "PaymentType": "CreditCard", "EntityRef": {"value": "57", "name": "Squeaky Kleen Car Wash", "type": "Vendor"}, "Credit": false, "TotalAmt": 19.99, "PurchaseEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "TxnType", "Value": "1"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}, "domain": "QBO", "sparse": false, "Id": "141", "SyncToken": "0", "MetaData": {"CreateTime": "2023-03-04T14:37:27-08:00", "LastUpdatedTime": "2023-03-04T14:37:27-08:00"}, "TxnDate": "2023-02-23", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "Amount": 19.99, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "55", "name": "Automobile"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "airbyte_cursor": "2023-03-04T14:37:27-08:00"}, "emitted_at": 1679578464116}
{"stream": "purchases", "data": {"AccountRef": {"value": "41", "name": "Mastercard"}, "PaymentType": "CreditCard", "EntityRef": {"value": "57", "name": "Squeaky Kleen Car Wash", "type": "Vendor"}, "Credit": false, "TotalAmt": 19.99, "PurchaseEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "TxnType", "Value": "1"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}, "domain": "QBO", "sparse": false, "Id": "142", "SyncToken": "0", "MetaData": {"CreateTime": "2023-03-04T14:37:54-08:00", "LastUpdatedTime": "2023-03-04T14:37:54-08:00"}, "TxnDate": "2023-03-02", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "Amount": 19.99, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "55", "name": "Automobile"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "airbyte_cursor": "2023-03-04T14:37:54-08:00"}, "emitted_at": 1679578464122}
{"stream": "purchases", "data": {"AccountRef": {"value": "41", "name": "Mastercard"}, "PaymentType": "CreditCard", "EntityRef": {"value": "41", "name": "Hicks Hardware", "type": "Vendor"}, "Credit": false, "TotalAmt": 42.4, "PurchaseEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "TxnType", "Value": "1"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}, "domain": "QBO", "sparse": false, "Id": "143", "SyncToken": "0", "MetaData": {"CreateTime": "2023-03-04T14:45:20-08:00", "LastUpdatedTime": "2023-03-04T14:45:20-08:00"}, "TxnDate": "2023-02-24", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "Amount": 42.4, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "64", "name": "Job Expenses:Job Materials:Decks and Patios"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "airbyte_cursor": "2023-03-04T14:45:20-08:00"}, "emitted_at": 1679578464128}
{"stream": "purchases", "data": {"AccountRef": {"value": "41", "name": "Mastercard"}, "PaymentType": "CreditCard", "Credit": false, "TotalAmt": 34.0, "PurchaseEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "TxnType", "Value": "1"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}, "domain": "QBO", "sparse": false, "Id": "144", "SyncToken": "0", "MetaData": {"CreateTime": "2023-03-15T14:04:25-07:00", "LastUpdatedTime": "2023-03-15T14:04:25-07:00"}, "TxnDate": "2023-03-15", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "Amount": 34.0, "DetailType": "AccountBasedExpenseLineDetail", "AccountBasedExpenseLineDetail": {"AccountRef": {"value": "55", "name": "Automobile"}, "BillableStatus": "NotBillable", "TaxCodeRef": {"value": "NON"}}}], "airbyte_cursor": "2023-03-15T14:04:25-07:00"}, "emitted_at": 1679578464133}
{"stream": "payments", "data": {"CustomerRef": {"value": "26", "name": "Travis Waldron"}, "DepositToAccountRef": {"value": "4"}, "TotalAmt": 81.0, "UnappliedAmt": 0, "ProcessPayment": false, "domain": "QBO", "sparse": false, "Id": "98", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T13:35:42-08:00", "LastUpdatedTime": "2023-02-17T13:35:42-08:00"}, "TxnDate": "2023-02-17", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "121", "TxnType": "Deposit"}], "Line": [{"Amount": 81.0, "LinkedTxn": [{"TxnId": "42", "TxnType": "Invoice"}], "LineEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnId", "Value": "42"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnOpenBalance", "Value": "81.00"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnReferenceNumber", "Value": "1013"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}}], "airbyte_cursor": "2023-02-17T13:35:42-08:00"}, "emitted_at": 1679578467082}
{"stream": "payments", "data": {"CustomerRef": {"value": "1", "name": "Amy's Bird Sanctuary"}, "DepositToAccountRef": {"value": "4"}, "PaymentMethodRef": {"value": "2"}, "TotalAmt": 220.0, "UnappliedAmt": 0, "ProcessPayment": false, "domain": "QBO", "sparse": false, "Id": "101", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T13:39:32-08:00", "LastUpdatedTime": "2023-02-17T13:39:32-08:00"}, "TxnDate": "2023-02-17", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "121", "TxnType": "Deposit"}], "Line": [{"Amount": 220.0, "LinkedTxn": [{"TxnId": "67", "TxnType": "Invoice"}], "LineEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnId", "Value": "67"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnOpenBalance", "Value": "459.00"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnReferenceNumber", "Value": "1021"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}}], "airbyte_cursor": "2023-02-17T13:39:32-08:00"}, "emitted_at": 1679578467089}
{"stream": "payments", "data": {"CustomerRef": {"value": "25", "name": "Sushi by Katsuyuki"}, "DepositToAccountRef": {"value": "4"}, "TotalAmt": 80.0, "UnappliedAmt": 0, "ProcessPayment": false, "domain": "QBO", "sparse": false, "Id": "116", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T12:52:44-08:00", "LastUpdatedTime": "2023-02-18T12:52:44-08:00"}, "TxnDate": "2023-02-14", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "121", "TxnType": "Deposit"}], "Line": [{"Amount": 80.0, "LinkedTxn": [{"TxnId": "63", "TxnType": "Invoice"}], "LineEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnId", "Value": "63"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnOpenBalance", "Value": "80.00"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnReferenceNumber", "Value": "1017"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}}], "airbyte_cursor": "2023-02-18T12:52:44-08:00"}, "emitted_at": 1679578467093}
{"stream": "payments", "data": {"CustomerRef": {"value": "3", "name": "Cool Cars"}, "DepositToAccountRef": {"value": "4"}, "TotalAmt": 1675.52, "UnappliedAmt": 0, "ProcessPayment": false, "domain": "QBO", "sparse": false, "Id": "120", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T12:59:21-08:00", "LastUpdatedTime": "2023-02-18T12:59:21-08:00"}, "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 1675.52, "LinkedTxn": [{"TxnId": "12", "TxnType": "Invoice"}], "LineEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnId", "Value": "12"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnOpenBalance", "Value": "1675.52"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnReferenceNumber", "Value": "1004"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}}], "airbyte_cursor": "2023-02-18T12:59:21-08:00"}, "emitted_at": 1679578467098}
{"stream": "payments", "data": {"CustomerRef": {"value": "8", "name": "0969 Ocean View Road"}, "DepositToAccountRef": {"value": "4"}, "TotalAmt": 387.0, "UnappliedAmt": 0, "ProcessPayment": false, "domain": "QBO", "sparse": false, "Id": "128", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T13:13:33-08:00", "LastUpdatedTime": "2023-02-18T13:13:33-08:00"}, "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 387.0, "LinkedTxn": [{"TxnId": "96", "TxnType": "Invoice"}], "LineEx": {"any": [{"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnId", "Value": "96"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnOpenBalance", "Value": "387.00"}, "nil": false, "globalScope": true, "typeSubstituted": false}, {"name": "{http://schema.intuit.com/finance/v3}NameValue", "declaredType": "com.intuit.schema.finance.v3.NameValue", "scope": "javax.xml.bind.JAXBElement$GlobalScope", "value": {"Name": "txnReferenceNumber", "Value": "1031"}, "nil": false, "globalScope": true, "typeSubstituted": false}]}}], "airbyte_cursor": "2023-02-18T13:13:33-08:00"}, "emitted_at": 1679578467104}
{"stream": "purchase_orders", "data": {"VendorAddr": {"Id": "63", "Line1": "Tim Philip", "Line2": "Tim Philip Masonry", "Line3": "3948 Elm St.", "Line4": "Middlefield, CA 94482", "Lat": "INVALID", "Long": "INVALID"}, "ShipAddr": {"Id": "64", "Line1": "Craig's Design and Landscaping Services", "Line2": "123 Sierra Way", "Line3": "San Pablo, CA 87999", "Lat": "INVALID", "Long": "INVALID"}, "POStatus": "Open", "domain": "QBO", "sparse": false, "Id": "45", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:33:16-08:00", "LastUpdatedTime": "2023-02-16T11:33:16-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}, {"DefinitionId": "2", "Name": "Sales Rep", "Type": "StringType"}], "DocNumber": "1002", "TxnDate": "2023-02-16", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [], "Line": [{"Id": "1", "LineNum": 1, "Description": "Rock Fountain", "Amount": 125.0, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"BillableStatus": "NotBillable", "ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 125, "Qty": 1, "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "51", "name": "Tim Philip Masonry"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 125.0, "airbyte_cursor": "2023-02-16T11:33:16-08:00"}, "emitted_at": 1679578470100}
{"stream": "purchase_orders", "data": {"VendorAddr": {"Id": "89", "Line1": "Geoff Hicks", "Line2": "Hicks Hardware", "Line3": "42 Main St.", "Line4": "Middlefield, CA 94303", "Lat": "37.4530553", "Long": "-122.1178261"}, "ShipAddr": {"Id": "90", "Line1": "Craig's Design and Landscaping Services", "Line2": "123 Sierra Way", "Line3": "San Pablo, CA 87999", "Lat": "INVALID", "Long": "INVALID"}, "POStatus": "Closed", "domain": "QBO", "sparse": false, "Id": "114", "SyncToken": "2", "MetaData": {"CreateTime": "2023-02-18T12:50:05-08:00", "LastUpdatedTime": "2023-02-18T12:51:47-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}, {"DefinitionId": "2", "Name": "Sales Rep", "Type": "StringType"}], "DocNumber": "1003", "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "115", "TxnType": "Purchase"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Rock Fountain", "Amount": 125.0, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"CustomerRef": {"value": "25", "name": "Sushi by Katsuyuki"}, "BillableStatus": "NotBillable", "ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 125, "Qty": 1, "TaxCodeRef": {"value": "NON"}}}, {"Id": "2", "LineNum": 2, "Description": "Sprinkler Heads", "Amount": 11.25, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"CustomerRef": {"value": "25", "name": "Sushi by Katsuyuki"}, "BillableStatus": "NotBillable", "ItemRef": {"value": "16", "name": "Sprinkler Heads"}, "UnitPrice": 0.75, "Qty": 15, "TaxCodeRef": {"value": "NON"}}}, {"Id": "3", "LineNum": 3, "Description": "Sprinkler Pipes", "Amount": 62.5, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"CustomerRef": {"value": "25", "name": "Sushi by Katsuyuki"}, "BillableStatus": "NotBillable", "ItemRef": {"value": "17", "name": "Sprinkler Pipes"}, "UnitPrice": 2.5, "Qty": 25, "TaxCodeRef": {"value": "NON"}}}, {"Id": "4", "LineNum": 4, "Description": "Fountain Pump", "Amount": 30.0, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"BillableStatus": "NotBillable", "ItemRef": {"value": "11", "name": "Pump"}, "UnitPrice": 10, "Qty": 3, "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "41", "name": "Hicks Hardware"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 228.75, "airbyte_cursor": "2023-02-18T12:51:47-08:00"}, "emitted_at": 1679578470111}
{"stream": "purchase_orders", "data": {"VendorAddr": {"Id": "92", "Line1": "Julie Norton", "Line2": "Norton Lumber and Building Materials", "Line3": "4528 Country Road", "Line4": "Middlefield, CA 94303", "Lat": "37.4530553", "Long": "-122.1178261"}, "ShipAddr": {"Id": "93", "Line1": "Craig's Design and Landscaping Services", "Line2": "123 Sierra Way", "Line3": "San Pablo, CA 87999", "Lat": "INVALID", "Long": "INVALID"}, "POStatus": "Closed", "domain": "QBO", "sparse": false, "Id": "125", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-18T13:10:14-08:00", "LastUpdatedTime": "2023-02-18T13:10:36-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}, {"DefinitionId": "2", "Name": "Sales Rep", "Type": "StringType"}], "DocNumber": "1004", "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "126", "TxnType": "Bill"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Fountain Pump", "Amount": 80.0, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"BillableStatus": "NotBillable", "ItemRef": {"value": "11", "name": "Pump"}, "UnitPrice": 10, "Qty": 8, "TaxCodeRef": {"value": "NON"}}}, {"Id": "2", "LineNum": 2, "Description": "Rock Fountain", "Amount": 125.0, "DetailType": "ItemBasedExpenseLineDetail", "ItemBasedExpenseLineDetail": {"BillableStatus": "NotBillable", "ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 125, "Qty": 1, "TaxCodeRef": {"value": "NON"}}}], "VendorRef": {"value": "46", "name": "Norton Lumber and Building Materials"}, "APAccountRef": {"value": "33", "name": "Accounts Payable (A/P)"}, "TotalAmt": 205.0, "airbyte_cursor": "2023-02-18T13:10:36-08:00"}, "emitted_at": 1679578470121}
{"stream": "payment_methods", "data": {"Name": "Discover", "Active": true, "Type": "CREDIT_CARD", "domain": "QBO", "sparse": false, "Id": "5", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:42:05-08:00", "LastUpdatedTime": "2023-02-10T14:42:05-08:00"}, "airbyte_cursor": "2023-02-10T14:42:05-08:00"}, "emitted_at": 1679578472922}
{"stream": "payment_methods", "data": {"Name": "MasterCard", "Active": true, "Type": "CREDIT_CARD", "domain": "QBO", "sparse": false, "Id": "4", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:42:05-08:00", "LastUpdatedTime": "2023-02-10T14:42:05-08:00"}, "airbyte_cursor": "2023-02-10T14:42:05-08:00"}, "emitted_at": 1679578472927}
{"stream": "payment_methods", "data": {"Name": "Visa", "Active": true, "Type": "CREDIT_CARD", "domain": "QBO", "sparse": false, "Id": "3", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:42:05-08:00", "LastUpdatedTime": "2023-02-10T14:42:05-08:00"}, "airbyte_cursor": "2023-02-10T14:42:05-08:00"}, "emitted_at": 1679578472931}
{"stream": "payment_methods", "data": {"Name": "Check", "Active": true, "Type": "NON_CREDIT_CARD", "domain": "QBO", "sparse": false, "Id": "2", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:42:05-08:00", "LastUpdatedTime": "2023-02-10T14:42:05-08:00"}, "airbyte_cursor": "2023-02-10T14:42:05-08:00"}, "emitted_at": 1679578472938}
{"stream": "payment_methods", "data": {"Name": "Cash", "Active": true, "Type": "NON_CREDIT_CARD", "domain": "QBO", "sparse": false, "Id": "1", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:42:05-08:00", "LastUpdatedTime": "2023-02-10T14:42:05-08:00"}, "airbyte_cursor": "2023-02-10T14:42:05-08:00"}, "emitted_at": 1679578472942}
{"stream": "journal_entries", "data": {"Adjustment": false, "domain": "QBO", "sparse": false, "Id": "6", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-14T12:11:06-08:00", "LastUpdatedTime": "2023-02-14T12:11:06-08:00"}, "TxnDate": "2023-02-02", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PrivateNote": "Opening Balance", "Line": [{"Id": "0", "Description": "Opening Balance", "Amount": 13495.0, "DetailType": "JournalEntryLineDetail", "JournalEntryLineDetail": {"PostingType": "Debit", "AccountRef": {"value": "38", "name": "Truck:Original Cost"}}}, {"Id": "1", "Description": "Opening Balance", "Amount": 13495.0, "DetailType": "JournalEntryLineDetail", "JournalEntryLineDetail": {"PostingType": "Credit", "AccountRef": {"value": "34", "name": "Opening Balance Equity"}}}], "TxnTaxDetail": {}, "airbyte_cursor": "2023-02-14T12:11:06-08:00"}, "emitted_at": 1679578475893}
{"stream": "journal_entries", "data": {"Adjustment": false, "domain": "QBO", "sparse": false, "Id": "7", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-15T10:03:25-08:00", "LastUpdatedTime": "2023-02-15T10:03:25-08:00"}, "TxnDate": "2023-02-15", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PrivateNote": "Opening Balance", "Line": [{"Id": "0", "Description": "Opening Balance", "Amount": 4000.0, "DetailType": "JournalEntryLineDetail", "JournalEntryLineDetail": {"PostingType": "Credit", "AccountRef": {"value": "43", "name": "Loan Payable"}}}, {"Id": "1", "Description": "Opening Balance", "Amount": 4000.0, "DetailType": "JournalEntryLineDetail", "JournalEntryLineDetail": {"PostingType": "Debit", "AccountRef": {"value": "34", "name": "Opening Balance Equity"}}}], "TxnTaxDetail": {}, "airbyte_cursor": "2023-02-15T10:03:25-08:00"}, "emitted_at": 1679578475898}
{"stream": "journal_entries", "data": {"Adjustment": false, "domain": "QBO", "sparse": false, "Id": "8", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-15T10:04:24-08:00", "LastUpdatedTime": "2023-02-15T10:04:24-08:00"}, "TxnDate": "2023-02-15", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PrivateNote": "Opening Balance", "Line": [{"Id": "0", "Description": "Opening Balance", "Amount": 25000.0, "DetailType": "JournalEntryLineDetail", "JournalEntryLineDetail": {"PostingType": "Credit", "AccountRef": {"value": "44", "name": "Notes Payable"}}}, {"Id": "1", "Description": "Opening Balance", "Amount": 25000.0, "DetailType": "JournalEntryLineDetail", "JournalEntryLineDetail": {"PostingType": "Debit", "AccountRef": {"value": "34", "name": "Opening Balance Equity"}}}], "TxnTaxDetail": {}, "airbyte_cursor": "2023-02-15T10:04:24-08:00"}, "emitted_at": 1679578475904}
{"stream": "items", "data": {"Name": "Concrete", "Description": "Concrete for fountain installation", "Active": true, "FullyQualifiedName": "Concrete", "Taxable": true, "UnitPrice": 0, "Type": "Service", "IncomeAccountRef": {"value": "48", "name": "Fountains and Garden Lighting"}, "PurchaseCost": 0, "TrackQtyOnHand": false, "domain": "QBO", "sparse": false, "Id": "3", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-15T10:36:03-08:00", "LastUpdatedTime": "2023-02-18T12:47:47-08:00"}, "airbyte_cursor": "2023-02-18T12:47:47-08:00"}, "emitted_at": 1679578478817}
{"stream": "items", "data": {"Name": "Sprinkler Heads", "Description": "Sprinkler Heads", "Active": true, "FullyQualifiedName": "Sprinkler Heads", "Taxable": true, "UnitPrice": 2, "Type": "Inventory", "IncomeAccountRef": {"value": "79", "name": "Sales of Product Income"}, "PurchaseDesc": "Sprinkler Heads", "PurchaseCost": 0.75, "ExpenseAccountRef": {"value": "80", "name": "Cost of Goods Sold"}, "AssetAccountRef": {"value": "81", "name": "Inventory Asset"}, "TrackQtyOnHand": true, "QtyOnHand": 25, "InvStartDate": "2023-02-18", "domain": "QBO", "sparse": false, "Id": "16", "SyncToken": "3", "MetaData": {"CreateTime": "2023-02-15T10:51:50-08:00", "LastUpdatedTime": "2023-02-18T12:51:47-08:00"}, "airbyte_cursor": "2023-02-18T12:51:47-08:00"}, "emitted_at": 1679578478823}
{"stream": "items", "data": {"Name": "Sprinkler Pipes", "Description": "Sprinkler Pipes", "Active": true, "FullyQualifiedName": "Sprinkler Pipes", "Taxable": true, "UnitPrice": 4, "Type": "Inventory", "IncomeAccountRef": {"value": "79", "name": "Sales of Product Income"}, "PurchaseDesc": "Sprinkler Pipes", "PurchaseCost": 2.5, "ExpenseAccountRef": {"value": "80", "name": "Cost of Goods Sold"}, "AssetAccountRef": {"value": "81", "name": "Inventory Asset"}, "TrackQtyOnHand": true, "QtyOnHand": 31, "InvStartDate": "2023-02-18", "domain": "QBO", "sparse": false, "Id": "17", "SyncToken": "3", "MetaData": {"CreateTime": "2023-02-15T10:52:07-08:00", "LastUpdatedTime": "2023-02-18T12:57:24-08:00"}, "airbyte_cursor": "2023-02-18T12:57:24-08:00"}, "emitted_at": 1679578478827}
{"stream": "items", "data": {"Name": "Pump", "Description": "Fountain Pump", "Active": true, "FullyQualifiedName": "Pump", "Taxable": true, "UnitPrice": 15, "Type": "Inventory", "IncomeAccountRef": {"value": "79", "name": "Sales of Product Income"}, "PurchaseDesc": "Fountain Pump", "PurchaseCost": 10, "ExpenseAccountRef": {"value": "80", "name": "Cost of Goods Sold"}, "AssetAccountRef": {"value": "81", "name": "Inventory Asset"}, "TrackQtyOnHand": true, "QtyOnHand": 25, "InvStartDate": "2023-02-18", "domain": "QBO", "sparse": false, "Id": "11", "SyncToken": "3", "MetaData": {"CreateTime": "2023-02-15T10:46:45-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578478831}
{"stream": "items", "data": {"Name": "Rock Fountain", "Description": "Rock Fountain", "Active": true, "FullyQualifiedName": "Rock Fountain", "Taxable": true, "UnitPrice": 275, "Type": "Inventory", "IncomeAccountRef": {"value": "79", "name": "Sales of Product Income"}, "PurchaseDesc": "Rock Fountain", "PurchaseCost": 125, "ExpenseAccountRef": {"value": "80", "name": "Cost of Goods Sold"}, "AssetAccountRef": {"value": "81", "name": "Inventory Asset"}, "TrackQtyOnHand": true, "QtyOnHand": 2, "InvStartDate": "2023-02-18", "domain": "QBO", "sparse": false, "Id": "5", "SyncToken": "2", "MetaData": {"CreateTime": "2023-02-15T10:42:19-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578478838}
{"stream": "invoices", "data": {"AllowIPNPayment": false, "AllowOnlinePayment": false, "AllowOnlineCreditCardPayment": false, "AllowOnlineACHPayment": false, "domain": "QBO", "sparse": false, "Id": "119", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T12:57:24-08:00", "LastUpdatedTime": "2023-02-18T12:57:24-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType", "StringValue": "104"}], "DocNumber": "1035", "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [], "Line": [{"Id": "1", "LineNum": 1, "Description": "Rock Fountain", "Amount": 275.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 275, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "2", "LineNum": 2, "Description": "Sprinkler Pipes", "Amount": 16.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "17", "name": "Sprinkler Pipes"}, "UnitPrice": 4, "Qty": 4, "TaxCodeRef": {"value": "TAX"}}}, {"Amount": 291.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TxnTaxCodeRef": {"value": "2"}, "TotalTax": 23.28, "TaxLine": [{"Amount": 23.28, "DetailType": "TaxLineDetail", "TaxLineDetail": {"TaxRateRef": {"value": "3"}, "PercentBased": true, "TaxPercent": 8, "NetAmountTaxable": 291.0}}]}, "CustomerRef": {"value": "17", "name": "Mark Cho"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "91", "Line1": "Mark Cho", "Line2": "36 Willow Rd", "Line3": "Menlo Park, CA 94304", "Lat": "37.3813444", "Long": "-122.1802812"}, "ShipAddr": {"Id": "17", "Line1": "36 Willow Rd", "City": "Menlo Park", "CountrySubDivisionCode": "CA", "PostalCode": "94304", "Lat": "37.450412", "Long": "-122.170593"}, "SalesTermRef": {"value": "3", "name": "Net 30"}, "DueDate": "2023-03-20", "TotalAmt": 314.28, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Mark@Cho.com"}, "Balance": 314.28, "airbyte_cursor": "2023-02-18T12:57:24-08:00"}, "emitted_at": 1679578482341}
{"stream": "invoices", "data": {"AllowIPNPayment": false, "AllowOnlinePayment": false, "AllowOnlineCreditCardPayment": false, "AllowOnlineACHPayment": false, "domain": "QBO", "sparse": false, "Id": "12", "SyncToken": "3", "MetaData": {"CreateTime": "2023-02-15T15:04:04-08:00", "LastUpdatedTime": "2023-02-18T12:59:21-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1004", "TxnDate": "2023-02-06", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "120", "TxnType": "Payment"}, {"TxnId": "61", "TxnType": "Payment"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Sprinkler Heads", "Amount": 20.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "16", "name": "Sprinkler Heads"}, "UnitPrice": 2, "Qty": 10, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "2", "LineNum": 2, "Description": "Sprinkler Pipes", "Amount": 24.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "17", "name": "Sprinkler Pipes"}, "UnitPrice": 4, "Qty": 6, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "3", "LineNum": 3, "Description": "Sod", "Amount": 1750.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "14", "name": "Sod"}, "UnitPrice": 35, "Qty": 50, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "4", "LineNum": 4, "Description": "Installation Hours", "Amount": 400.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "1", "name": "Services"}, "UnitPrice": 50, "Qty": 8, "TaxCodeRef": {"value": "TAX"}}}, {"Amount": 2194.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TxnTaxCodeRef": {"value": "2"}, "TotalTax": 175.52, "TaxLine": [{"Amount": 175.52, "DetailType": "TaxLineDetail", "TaxLineDetail": {"TaxRateRef": {"value": "3"}, "PercentBased": true, "TaxPercent": 8, "NetAmountTaxable": 2194.0}}]}, "CustomerRef": {"value": "3", "name": "Cool Cars"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "50", "Line1": "Grace Pariente", "Line2": "Cool Cars", "Line3": "65 Ocean Dr.", "Line4": "Half Moon Bay, CA 94213", "Lat": "INVALID", "Long": "INVALID"}, "SalesTermRef": {"value": "3", "name": "Net 30"}, "DueDate": "2023-03-08", "TotalAmt": 2369.52, "ApplyTaxAfterDiscount": false, "PrintStatus": "NotSet", "EmailStatus": "NotSet", "BillEmail": {"Address": "Cool_Cars@intuit.com"}, "Balance": 0, "airbyte_cursor": "2023-02-18T12:59:21-08:00"}, "emitted_at": 1679578482348}
{"stream": "invoices", "data": {"AllowIPNPayment": false, "AllowOnlinePayment": false, "AllowOnlineCreditCardPayment": false, "AllowOnlineACHPayment": false, "domain": "QBO", "sparse": false, "Id": "96", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-17T13:30:49-08:00", "LastUpdatedTime": "2023-02-18T13:13:33-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType", "StringValue": "101"}], "DocNumber": "1031", "TxnDate": "2022-12-04", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "128", "TxnType": "Payment"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Weekly Gardening Service", "Amount": 90.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "6", "name": "Gardening"}, "UnitPrice": 30, "Qty": 3, "TaxCodeRef": {"value": "NON"}}}, {"Id": "2", "LineNum": 2, "Description": "Rock Fountain", "Amount": 275.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 275, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Amount": 365.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TxnTaxCodeRef": {"value": "2"}, "TotalTax": 22.0, "TaxLine": [{"Amount": 22.0, "DetailType": "TaxLineDetail", "TaxLineDetail": {"TaxRateRef": {"value": "3"}, "PercentBased": true, "TaxPercent": 8, "NetAmountTaxable": 275.0}}]}, "CustomerRef": {"value": "8", "name": "0969 Ocean View Road"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "84", "Line1": "Sasha Tillou", "Line2": "Freeman Sporting Goods", "Line3": "370 Easy St.", "Line4": "Middlefield, CA 94482", "Lat": "INVALID", "Long": "INVALID"}, "ShipAddr": {"Id": "8", "Line1": "370 Easy St.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94482", "Lat": "37.4031672", "Long": "-122.0642815"}, "SalesTermRef": {"value": "3", "name": "Net 30"}, "DueDate": "2023-01-03", "TotalAmt": 387.0, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Sporting_goods@intuit.com"}, "Balance": 0, "airbyte_cursor": "2023-02-18T13:13:33-08:00"}, "emitted_at": 1679578482358}
{"stream": "invoices", "data": {"AllowIPNPayment": false, "AllowOnlinePayment": false, "AllowOnlineCreditCardPayment": false, "AllowOnlineACHPayment": false, "domain": "QBO", "sparse": false, "Id": "129", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T13:15:36-08:00", "LastUpdatedTime": "2023-02-18T13:15:36-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType", "StringValue": "105"}], "DocNumber": "1036", "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [], "Line": [{"Id": "1", "LineNum": 1, "Description": "Sod", "Amount": 50.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "14", "name": "Sod"}, "UnitPrice": 10, "Qty": 5, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "2", "LineNum": 2, "Description": "2 cubic ft. bag", "Amount": 50.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "15", "name": "Soil"}, "UnitPrice": 10, "Qty": 5, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "3", "LineNum": 3, "Description": "Weekly Gardening Service", "Amount": 87.5, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "6", "name": "Gardening"}, "UnitPrice": 25, "Qty": 3.5, "TaxCodeRef": {"value": "NON"}}}, {"Id": "4", "LineNum": 4, "Description": "Rock Fountain", "Amount": 275.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 275, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "5", "LineNum": 5, "Description": "Fountain Pump", "Amount": 15.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "11", "name": "Pump"}, "UnitPrice": 15, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Amount": 477.5, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "8", "name": "0969 Ocean View Road"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "94", "Line1": "Sasha Tillou", "Line2": "Freeman Sporting Goods", "Line3": "370 Easy St.", "Line4": "Middlefield, CA 94482", "Lat": "INVALID", "Long": "INVALID"}, "ShipAddr": {"Id": "8", "Line1": "370 Easy St.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94482", "Lat": "37.4031672", "Long": "-122.0642815"}, "SalesTermRef": {"value": "3", "name": "Net 30"}, "DueDate": "2023-03-20", "TotalAmt": 477.5, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Sporting_goods@intuit.com"}, "Balance": 477.5, "airbyte_cursor": "2023-02-18T13:15:36-08:00"}, "emitted_at": 1679578482364}
{"stream": "invoices", "data": {"AllowIPNPayment": false, "AllowOnlinePayment": false, "AllowOnlineCreditCardPayment": false, "AllowOnlineACHPayment": false, "domain": "QBO", "sparse": false, "Id": "130", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T13:16:17-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType", "StringValue": "102"}], "DocNumber": "1037", "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "LinkedTxn": [{"TxnId": "100", "TxnType": "Estimate"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Rock Fountain", "Amount": 275.0, "LinkedTxn": [{"TxnId": "100", "TxnType": "Estimate"}], "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 275, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "2", "LineNum": 2, "Description": "Fountain Pump", "Amount": 12.75, "LinkedTxn": [{"TxnId": "100", "TxnType": "Estimate"}], "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "11", "name": "Pump"}, "UnitPrice": 12.75, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "3", "LineNum": 3, "Description": "Concrete for fountain installation", "Amount": 47.5, "LinkedTxn": [{"TxnId": "100", "TxnType": "Estimate"}], "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "3", "name": "Concrete"}, "UnitPrice": 9.5, "Qty": 5, "TaxCodeRef": {"value": "TAX"}}}, {"Amount": 335.25, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TxnTaxCodeRef": {"value": "2"}, "TotalTax": 26.82, "TaxLine": [{"Amount": 26.82, "DetailType": "TaxLineDetail", "TaxLineDetail": {"TaxRateRef": {"value": "3"}, "PercentBased": true, "TaxPercent": 8, "NetAmountTaxable": 335.25}}]}, "CustomerRef": {"value": "24", "name": "Sonnenschein Family Store"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "95", "Line1": "Russ Sonnenschein", "Line2": "Sonnenschein Family Store", "Line3": "5647 Cypress Hill Ave.", "Line4": "Middlefield, CA 94303", "Lat": "37.4238562", "Long": "-122.1141681"}, "ShipAddr": {"Id": "25", "Line1": "5647 Cypress Hill Ave.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94303", "Lat": "37.4238562", "Long": "-122.1141681"}, "SalesTermRef": {"value": "3", "name": "Net 30"}, "DueDate": "2023-03-20", "TotalAmt": 362.07, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Familiystore@intuit.com"}, "Balance": 362.07, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578482375}
{"stream": "customers", "data": {"Taxable": false, "BillAddr": {"Id": "17", "Line1": "36 Willow Rd", "City": "Menlo Park", "CountrySubDivisionCode": "CA", "PostalCode": "94304", "Lat": "37.450412", "Long": "-122.170593"}, "ShipAddr": {"Id": "17", "Line1": "36 Willow Rd", "City": "Menlo Park", "CountrySubDivisionCode": "CA", "PostalCode": "94304", "Lat": "37.450412", "Long": "-122.170593"}, "Job": false, "BillWithParent": false, "Balance": 314.28, "BalanceWithJobs": 314.28, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PreferredDeliveryMethod": "Print", "domain": "QBO", "sparse": false, "Id": "17", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T17:12:16-08:00", "LastUpdatedTime": "2023-02-18T12:57:24-08:00"}, "GivenName": "Mark", "FamilyName": "Cho", "FullyQualifiedName": "Mark Cho", "DisplayName": "Mark Cho", "PrintOnCheckName": "Mark Cho", "Active": true, "PrimaryPhone": {"FreeFormNumber": "(650) 554-1479"}, "PrimaryEmailAddr": {"Address": "Mark@Cho.com"}, "airbyte_cursor": "2023-02-18T12:57:24-08:00"}, "emitted_at": 1679578485796}
{"stream": "customers", "data": {"Taxable": false, "BillAddr": {"Id": "4", "Line1": "65 Ocean Dr.", "City": "Half Moon Bay", "CountrySubDivisionCode": "CA", "PostalCode": "94213", "Lat": "37.4300318", "Long": "-122.4336537"}, "Job": false, "BillWithParent": false, "Balance": 0, "BalanceWithJobs": 0, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PreferredDeliveryMethod": "Print", "domain": "QBO", "sparse": false, "Id": "3", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T16:51:22-08:00", "LastUpdatedTime": "2023-02-18T12:59:21-08:00"}, "GivenName": "Grace", "FamilyName": "Pariente", "FullyQualifiedName": "Cool Cars", "CompanyName": "Cool Cars", "DisplayName": "Cool Cars", "PrintOnCheckName": "Cool Cars", "Active": true, "PrimaryPhone": {"FreeFormNumber": "(415) 555-9933"}, "PrimaryEmailAddr": {"Address": "Cool_Cars@intuit.com"}, "airbyte_cursor": "2023-02-18T12:59:21-08:00"}, "emitted_at": 1679578485802}
{"stream": "customers", "data": {"Taxable": false, "BillAddr": {"Id": "8", "Line1": "370 Easy St.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94482", "Lat": "37.4031672", "Long": "-122.0642815"}, "ShipAddr": {"Id": "8", "Line1": "370 Easy St.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94482", "Lat": "37.4031672", "Long": "-122.0642815"}, "Job": true, "BillWithParent": false, "ParentRef": {"value": "7"}, "Level": 1, "Balance": 477.5, "BalanceWithJobs": 477.5, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PreferredDeliveryMethod": "Print", "domain": "QBO", "sparse": false, "Id": "8", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T17:00:01-08:00", "LastUpdatedTime": "2023-02-18T13:15:36-08:00"}, "GivenName": "Sasha", "FamilyName": "Tillou", "FullyQualifiedName": "Freeman Sporting Goods:0969 Ocean View Road", "CompanyName": "Freeman Sporting Goods", "DisplayName": "0969 Ocean View Road", "PrintOnCheckName": "Freeman Sporting Goods", "Active": true, "PrimaryPhone": {"FreeFormNumber": "(415) 555-9933"}, "Mobile": {"FreeFormNumber": "(973) 555-8849"}, "Fax": {"FreeFormNumber": "(520) 555-7894"}, "PrimaryEmailAddr": {"Address": "Sporting_goods@intuit.com"}, "WebAddr": {"URI": "http://sportinggoods.intuit.com"}, "airbyte_cursor": "2023-02-18T13:15:36-08:00"}, "emitted_at": 1679578485808}
{"stream": "customers", "data": {"Taxable": false, "BillAddr": {"Id": "7", "Line1": "370 Easy St.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94482", "Lat": "37.4031672", "Long": "-122.0642815"}, "ShipAddr": {"Id": "7", "Line1": "370 Easy St.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94482", "Lat": "37.4031672", "Long": "-122.0642815"}, "Job": false, "BillWithParent": false, "Balance": 0, "BalanceWithJobs": 562.5, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PreferredDeliveryMethod": "Print", "domain": "QBO", "sparse": false, "Id": "7", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T16:57:10-08:00", "LastUpdatedTime": "2023-02-18T13:15:36-08:00"}, "GivenName": "Kirby", "FamilyName": "Freeman", "FullyQualifiedName": "Freeman Sporting Goods", "CompanyName": "Freeman Sporting Goods", "DisplayName": "Freeman Sporting Goods", "PrintOnCheckName": "Freeman Sporting Goods", "Active": true, "PrimaryPhone": {"FreeFormNumber": "(650) 555-0987"}, "Mobile": {"FreeFormNumber": "(973) 555-8849"}, "Fax": {"FreeFormNumber": "(520) 555-7894"}, "PrimaryEmailAddr": {"Address": "Sporting_goods@intuit.com"}, "WebAddr": {"URI": "http://sportinggoods.intuit.com"}, "airbyte_cursor": "2023-02-18T13:15:36-08:00"}, "emitted_at": 1679578485813}
{"stream": "customers", "data": {"Taxable": false, "BillAddr": {"Id": "25", "Line1": "5647 Cypress Hill Ave.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94303", "Lat": "37.4238562", "Long": "-122.1141681"}, "ShipAddr": {"Id": "25", "Line1": "5647 Cypress Hill Ave.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94303", "Lat": "37.4238562", "Long": "-122.1141681"}, "Job": false, "BillWithParent": false, "Balance": 362.07, "BalanceWithJobs": 362.07, "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PreferredDeliveryMethod": "Print", "domain": "QBO", "sparse": false, "Id": "24", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T17:23:24-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "GivenName": "Russ", "FamilyName": "Sonnenschein", "FullyQualifiedName": "Sonnenschein Family Store", "CompanyName": "Sonnenschein Family Store", "DisplayName": "Sonnenschein Family Store", "PrintOnCheckName": "Sonnenschein Family Store", "Active": true, "PrimaryPhone": {"FreeFormNumber": "(650) 557-8463"}, "PrimaryEmailAddr": {"Address": "Familiystore@intuit.com"}, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578485819}
{"stream": "refund_receipts", "data": {"domain": "QBO", "sparse": false, "Id": "66", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T15:35:07-08:00", "LastUpdatedTime": "2023-02-16T15:35:07-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1020", "TxnDate": "2023-02-16", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Id": "1", "LineNum": 1, "Description": "Refund - Pest control was ineffective", "Amount": 87.5, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "10", "name": "Pest Control"}, "UnitPrice": 35, "Qty": 2.5, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 87.5, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "15", "name": "Pye's Cakes"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "73", "Line1": "Karen Pye", "Line2": "Pye's Cakes", "Line3": "350 Mountain View Dr.", "Line4": "South Orange, NJ 07079", "Lat": "40.7489277", "Long": "-74.2609903"}, "TotalAmt": 87.5, "ApplyTaxAfterDiscount": false, "PrintStatus": "NotSet", "BillEmail": {"Address": "pyescakes@intuit.com"}, "Balance": 0, "PaymentMethodRef": {"value": "2", "name": "Check"}, "DepositToAccountRef": {"value": "35", "name": "Checking"}, "airbyte_cursor": "2023-02-16T15:35:07-08:00"}, "emitted_at": 1679578488891}
{"stream": "deposits", "data": {"DepositToAccountRef": {"value": "36", "name": "Savings"}, "TotalAmt": 600.0, "domain": "QBO", "sparse": false, "Id": "5", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-14T12:09:00-08:00", "LastUpdatedTime": "2023-02-14T12:09:00-08:00"}, "TxnDate": "2023-02-14", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PrivateNote": "Opening Balance", "Line": [{"Id": "1", "LineNum": 1, "Amount": 600.0, "DetailType": "DepositLineDetail", "DepositLineDetail": {"AccountRef": {"value": "34", "name": "Opening Balance Equity"}}}], "airbyte_cursor": "2023-02-14T12:09:00-08:00"}, "emitted_at": 1679578491883}
{"stream": "deposits", "data": {"DepositToAccountRef": {"value": "35", "name": "Checking"}, "TotalAmt": 218.75, "domain": "QBO", "sparse": false, "Id": "62", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T15:22:31-08:00", "LastUpdatedTime": "2023-02-16T15:22:31-08:00"}, "TxnDate": "2023-02-16", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 140.0, "LinkedTxn": [{"TxnId": "47", "TxnType": "SalesReceipt", "TxnLineId": "0"}]}, {"Amount": 78.75, "LinkedTxn": [{"TxnId": "38", "TxnType": "SalesReceipt", "TxnLineId": "0"}], "DepositLineDetail": {"PaymentMethodRef": {"value": "1"}}}], "airbyte_cursor": "2023-02-16T15:22:31-08:00"}, "emitted_at": 1679578491890}
{"stream": "deposits", "data": {"DepositToAccountRef": {"value": "35", "name": "Checking"}, "TotalAmt": 5000.0, "domain": "QBO", "sparse": false, "Id": "4", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-14T12:08:20-08:00", "LastUpdatedTime": "2023-02-17T13:33:24-08:00"}, "TxnDate": "2022-10-05", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "PrivateNote": "Opening Balance", "Line": [{"Id": "1", "LineNum": 1, "Amount": 5000.0, "DetailType": "DepositLineDetail", "DepositLineDetail": {"AccountRef": {"value": "34", "name": "Opening Balance Equity"}}}], "airbyte_cursor": "2023-02-17T13:33:24-08:00"}, "emitted_at": 1679578491897}
{"stream": "deposits", "data": {"DepositToAccountRef": {"value": "35", "name": "Checking"}, "TotalAmt": 408.0, "domain": "QBO", "sparse": false, "Id": "102", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T13:40:31-08:00", "LastUpdatedTime": "2023-02-17T13:40:31-08:00"}, "TxnDate": "2023-02-17", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 108.0, "LinkedTxn": [{"TxnId": "31", "TxnType": "Payment", "TxnLineId": "0"}], "DepositLineDetail": {"PaymentMethodRef": {"value": "2"}, "CheckNum": "6552"}}, {"Amount": 300.0, "LinkedTxn": [{"TxnId": "32", "TxnType": "Payment", "TxnLineId": "0"}], "DepositLineDetail": {"PaymentMethodRef": {"value": "2"}, "CheckNum": "5421"}}], "airbyte_cursor": "2023-02-17T13:40:31-08:00"}, "emitted_at": 1679578491903}
{"stream": "deposits", "data": {"DepositToAccountRef": {"value": "35", "name": "Checking"}, "CashBack": {"AccountRef": {"value": "36", "name": "Savings"}, "Amount": 200.0, "Memo": "Money to savings"}, "TotalAmt": 868.15, "domain": "QBO", "sparse": false, "Id": "121", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-18T13:00:56-08:00", "LastUpdatedTime": "2023-02-18T13:00:56-08:00"}, "TxnDate": "2023-02-18", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "Line": [{"Amount": 226.75, "LinkedTxn": [{"TxnId": "97", "TxnType": "Payment", "TxnLineId": "0"}]}, {"Amount": 460.4, "LinkedTxn": [{"TxnId": "94", "TxnType": "Payment", "TxnLineId": "0"}]}, {"Amount": 80.0, "LinkedTxn": [{"TxnId": "116", "TxnType": "Payment", "TxnLineId": "0"}]}, {"Amount": 81.0, "LinkedTxn": [{"TxnId": "98", "TxnType": "Payment", "TxnLineId": "0"}]}, {"Amount": 220.0, "LinkedTxn": [{"TxnId": "101", "TxnType": "Payment", "TxnLineId": "0"}], "DepositLineDetail": {"PaymentMethodRef": {"value": "2"}}}], "airbyte_cursor": "2023-02-18T13:00:56-08:00"}, "emitted_at": 1679578491908}
{"stream": "employees", "data": {"BillableTime": false, "domain": "QBO", "sparse": false, "Id": "55", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:21:48-08:00", "LastUpdatedTime": "2023-02-16T11:21:48-08:00"}, "GivenName": "Emily", "FamilyName": "Platt", "DisplayName": "Emily Platt", "PrintOnCheckName": "Emily Platt", "Active": true, "airbyte_cursor": "2023-02-16T11:21:48-08:00"}, "emitted_at": 1679578497667}
{"stream": "employees", "data": {"BillableTime": false, "HiredDate": "2023-01-18", "domain": "QBO", "sparse": false, "Id": "54", "SyncToken": "1", "MetaData": {"CreateTime": "2023-02-16T11:21:28-08:00", "LastUpdatedTime": "2023-02-16T11:46:26-08:00"}, "GivenName": "John", "FamilyName": "Johnson", "DisplayName": "John Johnson", "PrintOnCheckName": "John Johnson", "Active": true, "PrimaryPhone": {"FreeFormNumber": "(540) 555-9645"}, "airbyte_cursor": "2023-02-16T11:46:26-08:00"}, "emitted_at": 1679578497675}
{"stream": "estimates", "data": {"domain": "QBO", "sparse": false, "Id": "48", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:42:38-08:00", "LastUpdatedTime": "2023-02-16T11:43:20-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1001", "TxnDate": "2023-02-14", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "TxnStatus": "Closed", "LinkedTxn": [{"TxnId": "49", "TxnType": "Invoice"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Custom Design", "Amount": 300.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "4", "name": "Design"}, "UnitPrice": 75, "Qty": 4, "TaxCodeRef": {"value": "NON"}}}, {"Id": "2", "LineNum": 2, "Description": "Installation of landscape design", "Amount": 250.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "7", "name": "Installation"}, "UnitPrice": 50, "Qty": 5, "TaxCodeRef": {"value": "NON"}}}, {"Id": "3", "LineNum": 3, "Description": "Rock Fountain", "Amount": 275.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 275, "Qty": 1, "TaxCodeRef": {"value": "NON"}}}, {"Id": "4", "LineNum": 4, "Description": "Garden Rocks", "Amount": 180.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "13", "name": "Rocks"}, "UnitPrice": 22.5, "Qty": 8, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 1005.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "18", "name": "Paulsen Medical Supplies"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "67", "Line1": "Kathy Paulsen", "Line2": "Paulsen Medical Supplies", "Line3": "900 Main St.", "Line4": "Middlefield, CA 94303", "Lat": "37.4530553", "Long": "-122.1178261"}, "ShipAddr": {"Id": "19", "Line1": "38921 S. Boise Ave", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94304", "Lat": "37.3989376", "Long": "-122.1443935"}, "TotalAmt": 1005.0, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NeedToSend", "BillEmail": {"Address": "Medical@intuit.com"}, "DeliveryInfo": {"DeliveryType": "Email"}, "airbyte_cursor": "2023-02-16T11:43:20-08:00"}, "emitted_at": 1679578500398}
{"stream": "estimates", "data": {"domain": "QBO", "sparse": false, "Id": "46", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:36:01-08:00", "LastUpdatedTime": "2023-02-17T12:42:59-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1001", "TxnDate": "2023-02-14", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "TxnStatus": "Closed", "LinkedTxn": [{"TxnId": "69", "TxnType": "Invoice"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Pest Control Services", "Amount": 70.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "10", "name": "Pest Control"}, "UnitPrice": 35, "Qty": 2, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 70.0, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "20", "name": "Red Rock Diner"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "65", "Line1": "Stephanie Martini", "Line2": "Red Rock Diner", "Line3": "500 Red Rock Rd.", "Line4": "Bayshore, CA 94326", "Lat": "INVALID", "Long": "INVALID"}, "ShipAddr": {"Id": "21", "Line1": "500 Red Rock Rd.", "City": "Bayshore", "CountrySubDivisionCode": "CA", "PostalCode": "94326", "Lat": "INVALID", "Long": "INVALID"}, "TotalAmt": 70.0, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "qbwebsamplecompany@yahoo.com"}, "airbyte_cursor": "2023-02-17T12:42:59-08:00"}, "emitted_at": 1679578500408}
{"stream": "estimates", "data": {"domain": "QBO", "sparse": false, "Id": "41", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:20:06-08:00", "LastUpdatedTime": "2023-02-17T13:41:59-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1001", "TxnDate": "2023-02-06", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "TxnStatus": "Closed", "LinkedTxn": [{"TxnId": "103", "TxnType": "Invoice"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Rock Fountain", "Amount": 275.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 275, "Qty": 1, "TaxCodeRef": {"value": "NON"}}}, {"Id": "2", "LineNum": 2, "Description": "Custom Design", "Amount": 262.5, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "4", "name": "Design"}, "UnitPrice": 75, "Qty": 3.5, "TaxCodeRef": {"value": "NON"}}}, {"Id": "3", "LineNum": 3, "Description": "Fountain Pump", "Amount": 45.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "11", "name": "Pump"}, "UnitPrice": 22.5, "Qty": 2, "TaxCodeRef": {"value": "NON"}}}, {"Amount": 582.5, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TotalTax": 0}, "CustomerRef": {"value": "10", "name": "Geeta Kalapatapu"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "59", "Line1": "Geeta Kalapatapu", "Line2": "1987 Main St.", "Line3": "Middlefield, CA 94303", "Lat": "37.4530553", "Long": "-122.1178261"}, "ShipAddr": {"Id": "10", "Line1": "1987 Main St.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94303", "Lat": "37.445013", "Long": "-122.1391443"}, "TotalAmt": 582.5, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Geeta@Kalapatapu.com"}, "airbyte_cursor": "2023-02-17T13:41:59-08:00"}, "emitted_at": 1679578500414}
{"stream": "estimates", "data": {"domain": "QBO", "sparse": false, "Id": "100", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T13:37:55-08:00", "LastUpdatedTime": "2023-02-18T13:16:17-08:00"}, "CustomField": [{"DefinitionId": "1", "Name": "Crew #", "Type": "StringType"}], "DocNumber": "1001", "TxnDate": "2023-02-15", "CurrencyRef": {"value": "USD", "name": "United States Dollar"}, "TxnStatus": "Closed", "LinkedTxn": [{"TxnId": "130", "TxnType": "Invoice"}], "Line": [{"Id": "1", "LineNum": 1, "Description": "Rock Fountain", "Amount": 275.0, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "5", "name": "Rock Fountain"}, "UnitPrice": 275, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "2", "LineNum": 2, "Description": "Fountain Pump", "Amount": 12.75, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "11", "name": "Pump"}, "UnitPrice": 12.75, "Qty": 1, "TaxCodeRef": {"value": "TAX"}}}, {"Id": "3", "LineNum": 3, "Description": "Concrete for fountain installation", "Amount": 47.5, "DetailType": "SalesItemLineDetail", "SalesItemLineDetail": {"ItemRef": {"value": "3", "name": "Concrete"}, "UnitPrice": 9.5, "Qty": 5, "TaxCodeRef": {"value": "TAX"}}}, {"Amount": 335.25, "DetailType": "SubTotalLineDetail", "SubTotalLineDetail": {}}], "TxnTaxDetail": {"TxnTaxCodeRef": {"value": "2"}, "TotalTax": 26.82, "TaxLine": [{"Amount": 26.82, "DetailType": "TaxLineDetail", "TaxLineDetail": {"TaxRateRef": {"value": "3"}, "PercentBased": true, "TaxPercent": 8, "NetAmountTaxable": 335.25}}]}, "CustomerRef": {"value": "24", "name": "Sonnenschein Family Store"}, "CustomerMemo": {"value": "Thank you for your business and have a great day!"}, "BillAddr": {"Id": "86", "Line1": "Russ Sonnenschein", "Line2": "Sonnenschein Family Store", "Line3": "5647 Cypress Hill Ave.", "Line4": "Middlefield, CA 94303", "Lat": "37.4238562", "Long": "-122.1141681"}, "ShipAddr": {"Id": "25", "Line1": "5647 Cypress Hill Ave.", "City": "Middlefield", "CountrySubDivisionCode": "CA", "PostalCode": "94303", "Lat": "37.4238562", "Long": "-122.1141681"}, "TotalAmt": 362.07, "ApplyTaxAfterDiscount": false, "PrintStatus": "NeedToPrint", "EmailStatus": "NotSet", "BillEmail": {"Address": "Familiystore@intuit.com"}, "airbyte_cursor": "2023-02-18T13:16:17-08:00"}, "emitted_at": 1679578500424}
{"stream": "tax_agencies", "data": {"TaxTrackedOnPurchases": false, "TaxTrackedOnSales": true, "domain": "QBO", "sparse": false, "Id": "2", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-17T12:17:04-08:00"}, "DisplayName": "Board of Equalization", "airbyte_cursor": "2023-02-17T12:17:04-08:00"}, "emitted_at": 1679578503395}
{"stream": "tax_agencies", "data": {"TaxTrackedOnPurchases": false, "TaxTrackedOnSales": true, "domain": "QBO", "sparse": false, "Id": "1", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-17T12:17:04-08:00"}, "DisplayName": "Arizona Dept. of Revenue", "airbyte_cursor": "2023-02-17T12:17:04-08:00"}, "emitted_at": 1679578503402}
{"stream": "tax_codes", "data": {"Name": "Tucson", "Description": "Tucson", "Active": true, "Taxable": true, "TaxGroup": true, "SalesTaxRateList": {"TaxRateDetail": [{"TaxRateRef": {"value": "1", "name": "AZ State tax"}, "TaxTypeApplicable": "TaxOnAmount", "TaxOrder": 0}, {"TaxRateRef": {"value": "2", "name": "Tucson City"}, "TaxTypeApplicable": "TaxOnAmount", "TaxOrder": 0}]}, "PurchaseTaxRateList": {"TaxRateDetail": []}, "domain": "QBO", "sparse": false, "Id": "3", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-17T12:17:04-08:00"}, "airbyte_cursor": "2023-02-17T12:17:04-08:00"}, "emitted_at": 1679578506063}
{"stream": "tax_codes", "data": {"Name": "California", "Description": "California", "Active": true, "Taxable": true, "TaxGroup": true, "SalesTaxRateList": {"TaxRateDetail": [{"TaxRateRef": {"value": "3", "name": "California"}, "TaxTypeApplicable": "TaxOnAmount", "TaxOrder": 0}]}, "PurchaseTaxRateList": {"TaxRateDetail": []}, "domain": "QBO", "sparse": false, "Id": "2", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-17T12:17:04-08:00"}, "airbyte_cursor": "2023-02-17T12:17:04-08:00"}, "emitted_at": 1679578506073}
{"stream": "tax_rates", "data": {"Name": "California", "Description": "Sales Tax", "Active": true, "RateValue": 8, "AgencyRef": {"value": "2"}, "SpecialTaxType": "NONE", "DisplayType": "ReadOnly", "domain": "QBO", "sparse": false, "Id": "3", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-17T12:17:04-08:00"}, "airbyte_cursor": "2023-02-17T12:17:04-08:00"}, "emitted_at": 1679578508863}
{"stream": "tax_rates", "data": {"Name": "Tucson City", "Description": "Sales Tax", "Active": true, "RateValue": 2, "AgencyRef": {"value": "1"}, "SpecialTaxType": "NONE", "DisplayType": "ReadOnly", "domain": "QBO", "sparse": false, "Id": "2", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-17T12:17:04-08:00"}, "airbyte_cursor": "2023-02-17T12:17:04-08:00"}, "emitted_at": 1679578508872}
{"stream": "tax_rates", "data": {"Name": "AZ State tax", "Description": "Sales Tax", "Active": true, "RateValue": 7.1, "AgencyRef": {"value": "1"}, "SpecialTaxType": "NONE", "DisplayType": "ReadOnly", "domain": "QBO", "sparse": false, "Id": "1", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-17T12:17:04-08:00", "LastUpdatedTime": "2023-02-17T12:17:04-08:00"}, "airbyte_cursor": "2023-02-17T12:17:04-08:00"}, "emitted_at": 1679578508878}
{"stream": "terms", "data": {"Name": "Net 60", "Active": true, "Type": "STANDARD", "DueDays": 60, "DiscountDays": 0, "domain": "QBO", "sparse": false, "Id": "4", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:41:49-08:00", "LastUpdatedTime": "2023-02-10T14:41:49-08:00"}, "airbyte_cursor": "2023-02-10T14:41:49-08:00"}, "emitted_at": 1679578511472}
{"stream": "terms", "data": {"Name": "Net 30", "Active": true, "Type": "STANDARD", "DueDays": 30, "DiscountDays": 0, "domain": "QBO", "sparse": false, "Id": "3", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:41:49-08:00", "LastUpdatedTime": "2023-02-10T14:41:49-08:00"}, "airbyte_cursor": "2023-02-10T14:41:49-08:00"}, "emitted_at": 1679578511476}
{"stream": "terms", "data": {"Name": "Net 15", "Active": true, "Type": "STANDARD", "DueDays": 15, "DiscountDays": 0, "domain": "QBO", "sparse": false, "Id": "2", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:41:49-08:00", "LastUpdatedTime": "2023-02-10T14:41:49-08:00"}, "airbyte_cursor": "2023-02-10T14:41:49-08:00"}, "emitted_at": 1679578511479}
{"stream": "terms", "data": {"Name": "Due on receipt", "Active": true, "Type": "STANDARD", "DueDays": 0, "DiscountDays": 0, "domain": "QBO", "sparse": false, "Id": "1", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-10T14:41:49-08:00", "LastUpdatedTime": "2023-02-10T14:41:49-08:00"}, "airbyte_cursor": "2023-02-10T14:41:49-08:00"}, "emitted_at": 1679578511483}
{"stream": "terms", "data": {"Name": "Net 10", "Active": true, "Type": "STANDARD", "DueDays": 10, "domain": "QBO", "sparse": false, "Id": "5", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-15T15:24:26-08:00", "LastUpdatedTime": "2023-02-15T15:24:26-08:00"}, "airbyte_cursor": "2023-02-15T15:24:26-08:00"}, "emitted_at": 1679578511487}
{"stream": "time_activities", "data": {"TxnDate": "2023-02-11", "NameOf": "Employee", "EmployeeRef": {"value": "55", "name": "Emily Platt"}, "CustomerRef": {"value": "17", "name": "Mark Cho"}, "ItemRef": {"value": "2", "name": "Hours"}, "BillableStatus": "NotBillable", "Taxable": false, "HourlyRate": 0, "Hours": 4, "Minutes": 45, "Description": "Designed Garden. Poured Concrete Foundation", "domain": "QBO", "sparse": false, "Id": "1", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:23:26-08:00", "LastUpdatedTime": "2023-02-16T11:23:26-08:00"}, "airbyte_cursor": "2023-02-16T11:23:26-08:00"}, "emitted_at": 1679578514810}
{"stream": "time_activities", "data": {"TxnDate": "2023-02-16", "NameOf": "Employee", "EmployeeRef": {"value": "54", "name": "John Johnson"}, "CustomerRef": {"value": "1", "name": "Amy's Bird Sanctuary"}, "ItemRef": {"value": "2", "name": "Hours"}, "BillableStatus": "NotBillable", "Taxable": false, "HourlyRate": 0, "Hours": 4, "Minutes": 0, "Description": "Gardening", "domain": "QBO", "sparse": false, "Id": "2", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:47:12-08:00", "LastUpdatedTime": "2023-02-16T11:47:12-08:00"}, "airbyte_cursor": "2023-02-16T11:47:12-08:00"}, "emitted_at": 1679578514820}
{"stream": "time_activities", "data": {"TxnDate": "2023-02-15", "NameOf": "Employee", "EmployeeRef": {"value": "54", "name": "John Johnson"}, "CustomerRef": {"value": "1", "name": "Amy's Bird Sanctuary"}, "ItemRef": {"value": "4", "name": "Design"}, "BillableStatus": "Billable", "Taxable": false, "HourlyRate": 75, "Hours": 5, "Minutes": 0, "Description": "Custom Design", "domain": "QBO", "sparse": false, "Id": "3", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:53:15-08:00", "LastUpdatedTime": "2023-02-16T11:53:15-08:00"}, "airbyte_cursor": "2023-02-16T11:53:15-08:00"}, "emitted_at": 1679578514827}
{"stream": "time_activities", "data": {"TxnDate": "2023-02-16", "NameOf": "Employee", "EmployeeRef": {"value": "55", "name": "Emily Platt"}, "CustomerRef": {"value": "21", "name": "Rondonuwu Fruit and Vegi"}, "ItemRef": {"value": "18", "name": "Trimming"}, "BillableStatus": "HasBeenBilled", "Taxable": false, "HourlyRate": 15, "Hours": 2, "Minutes": 0, "Description": "Tree and Shrub Trimming", "domain": "QBO", "sparse": false, "Id": "4", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:54:02-08:00", "LastUpdatedTime": "2023-02-16T11:54:02-08:00"}, "airbyte_cursor": "2023-02-16T11:54:02-08:00"}, "emitted_at": 1679578514832}
{"stream": "time_activities", "data": {"TxnDate": "2023-02-16", "NameOf": "Employee", "EmployeeRef": {"value": "55", "name": "Emily Platt"}, "CustomerRef": {"value": "21", "name": "Rondonuwu Fruit and Vegi"}, "ItemRef": {"value": "8", "name": "Lighting"}, "BillableStatus": "HasBeenBilled", "Taxable": false, "HourlyRate": 15, "Hours": 3, "Minutes": 0, "Description": "Garden Lighting", "domain": "QBO", "sparse": false, "Id": "5", "SyncToken": "0", "MetaData": {"CreateTime": "2023-02-16T11:55:25-08:00", "LastUpdatedTime": "2023-02-16T11:55:25-08:00"}, "airbyte_cursor": "2023-02-16T11:55:25-08:00"}, "emitted_at": 1679578514836}

View File

@@ -0,0 +1,3 @@
{
"todo-wrong-field": "this should be an incomplete config file, used in standard tests"
}

View File

@@ -6,8 +6,8 @@
import sys
from airbyte_cdk.entrypoint import launch
from source_quickbooks_singer import SourceQuickbooksSinger
from source_quickbooks import SourceQuickbooks
if __name__ == "__main__":
source = SourceQuickbooksSinger()
source = SourceQuickbooks()
launch(source, sys.argv[1:])

View File

@@ -0,0 +1,2 @@
-e ../../bases/connector-acceptance-test
-e .

View File

@@ -7,21 +7,22 @@ from setuptools import find_packages, setup
MAIN_REQUIREMENTS = [
"airbyte-cdk",
"tap-quickbooks @ https://github.com/airbytehq//tap-quickbooks/tarball/v1.0.5-airbyte",
]
TEST_REQUIREMENTS = [
"pytest~=6.1",
"pytest~=6.2",
"pytest-mock~=3.6.1",
"connector-acceptance-test",
]
setup(
name="source_quickbooks_singer",
description="Source implementation for QuickBooks, built on the Singer tap implementation.",
name="source_quickbooks",
description="Source implementation for Quickbooks.",
author="Airbyte",
author_email="contact@airbyte.io",
packages=find_packages(),
install_requires=MAIN_REQUIREMENTS,
package_data={"": ["*.json"]},
package_data={"": ["*.json", "*.yaml", "schemas/*.json", "schemas/shared/*.json"]},
extras_require={
"tests": TEST_REQUIREMENTS,
},

View File

@@ -0,0 +1,9 @@
#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
from .source import SourceQuickbooks
from .components import CustomDatetimeBasedCursor
__all__ = ["SourceQuickbooks", "CustomDatetimeBasedCursor"]

View File

@@ -0,0 +1,74 @@
import datetime
import typing
from collections import abc
from dataclasses import dataclass
import dpath.util
from airbyte_cdk.sources.declarative.incremental import DatetimeBasedCursor
from airbyte_cdk.sources.declarative.types import StreamSlice, Record
class LastRecordDictProxy(abc.MutableMapping):
"""
Patch a dict object to be able to get/set/delete/etc... values by path.
Example:
>>> record = LastRecordDictProxy({"root": {"nested": "value"}})
>>> record["root/nested"]
<<< "value"
>>> record.get("root/nested")
<<< "value"
"""
def __init__(self, record: Record, field_mapping: typing.Mapping = None):
self._record: Record = record
self._field_mapping = field_mapping if field_mapping is not None else {}
def __setitem__(self, k: str, v: typing.Any) -> None:
dpath.util.set(self._record, k, v)
def __delitem__(self, v: str) -> None:
dpath.util.delete(self._record, v)
def __getitem__(self, k: str) -> typing.Any:
try:
return dpath.util.get(self._record, k)
except KeyError as e:
if k in self._field_mapping:
return dpath.util.get(self._record, self._field_mapping[k])
raise e
def __len__(self) -> int:
return len(self._record)
def __iter__(self) -> typing.Iterator:
return self._record
def __bool__(self):
return bool(self._record)
@dataclass
class CustomDatetimeBasedCursor(DatetimeBasedCursor):
"""
This class is used to override the default DatetimeBasedCursor behavior in the way the cursor values from the `last_record` are
retrieved, specifically the nested values. In case the last_record looks like follows, there is no way we can get the nested cursor
value for now by means of the base class.
{
"id": "id",
"Metadata": {
"LastUpdatedTime": "<DateTime>"
}
}
To adopt this change to the LowCode CDK, this issue was created - https://github.com/airbytehq/airbyte/issues/25008.
"""
def update_cursor(self, stream_slice: StreamSlice, last_record: typing.Optional[Record] = None):
super(CustomDatetimeBasedCursor, self).update_cursor(
stream_slice=stream_slice,
last_record=LastRecordDictProxy(last_record, {self.cursor_field.eval(self.config): "MetaData/LastUpdatedTime"})
)
def _format_datetime(self, dt: datetime.datetime):
return dt.isoformat('T', 'seconds')
def parse_date(self, date: str) -> datetime.datetime:
return datetime.datetime.strptime(date, self.datetime_format).astimezone(self._timezone)

View File

@@ -0,0 +1,300 @@
version: "0.34.0"
definitions:
schema_loader:
type: JsonFileSchemaLoader
file_path: "./source_quickbooks/schemas/{{ parameters.name }}.json"
selector:
type: RecordSelector
extractor:
type: DpathExtractor
field_path:
- "QueryResponse"
- "{{ parameters.table_name }}"
requester:
type: HttpRequester
url_base: "{{ 'https://sandbox-quickbooks.api.intuit.com' if config.sandbox else 'https://quickbooks.api.intuit.com' }}"
http_method: "GET"
request_parameters:
query: "SELECT * FROM {{ parameters.table_name }} WHERE Metadata.LastUpdatedTime > '{{ stream_slice.start_time }}' AND Metadata.LastUpdatedTime <= '{{ stream_slice.end_time }}' {{ parameters.additional_where }} ORDER BY Metadata.LastUpdatedTime ASC STARTPOSITION {{ (next_page_token.next_page_token or 0) + 1 }} MAXRESULTS {{ (config.max_results or '200') | int }}"
request_headers:
"Accept": "application/json"
"User-Agent": "airbyte-connector"
authenticator:
type: SingleUseRefreshTokenOAuthAuthenticator
token_refresh_endpoint: "https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer"
retriever:
type: SimpleRetriever
record_selector:
$ref: "#/definitions/selector"
paginator:
type: DefaultPaginator
pagination_strategy:
type: OffsetIncrement
page_size: "{{ (config.max_results or '5') | int }}"
requester:
$ref: "#/definitions/requester"
base_stream:
primary_key: "Id"
retriever:
$ref: "#/definitions/retriever"
incremental_sync:
type: CustomIncrementalSync
class_name: "source_quickbooks.CustomDatetimeBasedCursor"
cursor_field: "airbyte_cursor"
start_datetime: "{{ config.start_date }}"
end_datetime: "{{ now_utc().isoformat('T', 'seconds') }}"
datetime_format: "%Y-%m-%dT%H:%M:%S%z"
cursor_granularity: "PT0S"
step: "P30D"
transformations:
- type: AddFields
fields:
- path: [ "airbyte_cursor" ]
value: "{{ record.MetaData.LastUpdatedTime }}"
$parameters:
path: "/v3/company/{{ config.credentials.realm_id }}/query"
table_name: "BillPayment"
accounts:
$ref: "#/definitions/base_stream"
name: "accounts"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Account"
additional_where: "AND Active IN (true, false)"
bill_payments:
$ref: "#/definitions/base_stream"
name: "bill_payments"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "BillPayment"
bills:
$ref: "#/definitions/base_stream"
name: "bills"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Bill"
budgets:
$ref: "#/definitions/base_stream"
name: "budgets"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Budget"
additional_where: "AND Active IN (true, false)"
classes:
$ref: "#/definitions/base_stream"
name: "classes"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Class"
additional_where: "AND Active IN (true, false)"
credit_memos:
$ref: "#/definitions/base_stream"
name: "credit_memos"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "CreditMemo"
customers:
$ref: "#/definitions/base_stream"
name: "customers"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Customer"
additional_where: "AND Active IN (true, false)"
departments:
$ref: "#/definitions/base_stream"
name: "departments"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Department"
additional_where: "AND Active IN (true, false)"
deposits:
$ref: "#/definitions/base_stream"
name: "deposits"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Deposit"
employees:
$ref: "#/definitions/base_stream"
name: "employees"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Employee"
additional_where: "AND Active IN (true, false)"
estimates:
$ref: "#/definitions/base_stream"
name: "estimates"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Estimate"
invoices:
$ref: "#/definitions/base_stream"
name: "invoices"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Invoice"
items:
$ref: "#/definitions/base_stream"
name: "items"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Item"
additional_where: "AND Active IN (true, false)"
journal_entries:
$ref: "#/definitions/base_stream"
name: "journal_entries"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "JournalEntry"
payment_methods:
$ref: "#/definitions/base_stream"
name: "payment_methods"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "PaymentMethod"
additional_where: "AND Active IN (true, false)"
payments:
$ref: "#/definitions/base_stream"
name: "payments"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Payment"
purchase_orders:
$ref: "#/definitions/base_stream"
name: "purchase_orders"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "PurchaseOrder"
purchases:
$ref: "#/definitions/base_stream"
name: "purchases"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Purchase"
refund_receipts:
$ref: "#/definitions/base_stream"
name: "refund_receipts"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "RefundReceipt"
sales_receipts:
$ref: "#/definitions/base_stream"
name: "sales_receipts"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "SalesReceipt"
tax_agencies:
$ref: "#/definitions/base_stream"
name: "tax_agencies"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "TaxAgency"
tax_codes:
$ref: "#/definitions/base_stream"
name: "tax_codes"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "TaxCode"
additional_where: "AND Active IN (true, false)"
tax_rates:
$ref: "#/definitions/base_stream"
name: "tax_rates"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "TaxRate"
additional_where: "AND Active IN (true, false)"
terms:
$ref: "#/definitions/base_stream"
name: "terms"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Term"
additional_where: "AND Active IN (true, false)"
time_activities:
$ref: "#/definitions/base_stream"
name: "time_activities"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "TimeActivity"
transfers:
$ref: "#/definitions/base_stream"
name: "transfers"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Transfer"
vendor_credits:
$ref: "#/definitions/base_stream"
name: "vendor_credits"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "VendorCredit"
vendors:
$ref: "#/definitions/base_stream"
name: "vendors"
$parameters:
$ref: "#/definitions/base_stream/$parameters"
table_name: "Vendor"
additional_where: "AND Active IN (true, false)"
streams:
- "#/definitions/accounts"
- "#/definitions/bill_payments"
- "#/definitions/bills"
- "#/definitions/budgets"
- "#/definitions/classes"
- "#/definitions/credit_memos"
- "#/definitions/customers"
- "#/definitions/departments"
- "#/definitions/deposits"
- "#/definitions/employees"
- "#/definitions/estimates"
- "#/definitions/invoices"
- "#/definitions/items"
- "#/definitions/journal_entries"
- "#/definitions/payment_methods"
- "#/definitions/payments"
- "#/definitions/purchase_orders"
- "#/definitions/purchases"
- "#/definitions/refund_receipts"
- "#/definitions/sales_receipts"
- "#/definitions/tax_agencies"
- "#/definitions/tax_codes"
- "#/definitions/tax_rates"
- "#/definitions/terms"
- "#/definitions/time_activities"
- "#/definitions/transfers"
- "#/definitions/vendor_credits"
- "#/definitions/vendors"
check:
type: CheckStream
stream_names:
- "accounts"

View File

@@ -0,0 +1,155 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"CurrentBalanceWithSubAccounts": {
"type": [
"null",
"number"
]
},
"AcctNum": {
"type": [
"null",
"string"
]
},
"AccountSubType": {
"type": [
"null",
"string"
]
},
"Classification": {
"type": [
"null",
"string"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"FullyQualifiedName": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"AccountType": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CurrentBalance": {
"type": [
"null",
"number"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"SubAccount": {
"type": [
"null",
"boolean"
]
},
"ParentRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,280 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"APAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DepartmentRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CheckPayment": {
"type": [
"null",
"object"
],
"properties": {
"BankAccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"PrintStatus": {
"type": [
"null",
"string"
]
}
}
},
"CurrencyRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"PayType": {
"type": [
"null",
"string"
]
},
"TxnDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"Id": {
"type": [
"null",
"string"
]
},
"MetaData": {
"type": [
"null",
"object"
],
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
}
},
"VendorRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"domain": {
"type": [
"null",
"string"
]
},
"CreditCardPayment": {
"type": [
"null",
"object"
],
"properties": {
"CCAccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
}
}
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Line": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"Amount": {
"type": [
"null",
"number"
]
},
"LinkedTxn": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"TxnType": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
}
}
}
}
}
}
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,403 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"SalesTermRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Balance": {
"type": [
"null",
"number"
]
},
"APAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DueDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"LinkedTxn": {
"items": {
"properties": {
"TxnId": {
"type": [
"null",
"string"
]
},
"TxnType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"Line": {
"items": {
"properties": {
"Id": {
"type": [
"null",
"string"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"ItemBasedExpenseLineDetail": {
"properties": {
"ItemRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Qty": {
"type": [
"null",
"integer"
]
},
"TaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BillableStatus": {
"type": [
"null",
"string"
]
},
"UnitPrice": {
"type": [
"null",
"integer"
]
}
},
"type": [
"null",
"object"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"AccountBasedExpenseLineDetail": {
"properties": {
"BillableStatus": {
"type": [
"null",
"string"
]
},
"AccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CustomerRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"VendorRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"DepartmentRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"PrivateNote": {
"type": [
"null",
"string"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,200 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"BudgetEntryType": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"EndDate": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"StartDate": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"BudgetType": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"BudgetDetail": {
"items": {
"properties": {
"ClassRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DepartmentRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CustomerRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"AccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BudgetDate": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,99 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"ParentRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"SubClass": {
"type": [
"null",
"boolean"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"FullyQualifiedName": {
"type": [
"null",
"string"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,474 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"ClassRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BillEmail": {
"properties": {
"Address": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"EmailStatus": {
"type": [
"null",
"string"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"Balance": {
"type": [
"null",
"integer"
]
},
"CustomerMemo": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PrintStatus": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Line": {
"items": {
"properties": {
"Amount": {
"type": [
"null",
"number"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"SalesItemLineDetail": {
"properties": {
"ItemRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"UnitPrice": {
"type": [
"null",
"integer"
]
},
"TaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Qty": {
"type": [
"null",
"integer"
]
}
},
"type": [
"null",
"object"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"DetailType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"ApplyTaxAfterDiscount": {
"type": [
"null",
"boolean"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"SalesTermRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"ShipAddr": {
"properties": {
"PostalCode": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TxnTaxDetail": {
"properties": {
"TotalTax": {
"type": [
"null",
"integer"
]
}
},
"type": [
"null",
"object"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"CustomField": {
"items": {
"properties": {
"Name": {
"type": [
"null",
"string"
]
},
"Type": {
"type": [
"null",
"string"
]
},
"DefinitionId": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"BillAddr": {
"properties": {
"Line1": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Line3": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"Line2": {
"type": [
"null",
"string"
]
},
"Line4": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CustomerRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"RemainingCredit": {
"type": [
"null",
"integer"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"HomeTotalAmt": {
"type": [
"null",
"number"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,433 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"DefaultTaxCodeRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SalesTermRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PaymentMethodRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"ResaleNum": {
"type": [
"null",
"string"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"MiddleName": {
"type": [
"null",
"string"
]
},
"BillAddr": {
"properties": {
"Lat": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"Country": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"PostalCode": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PrimaryEmailAddr": {
"properties": {
"Address": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Balance": {
"type": [
"null",
"number"
]
},
"CompanyName": {
"type": [
"null",
"string"
]
},
"FamilyName": {
"type": [
"null",
"string"
]
},
"FullyQualifiedName": {
"type": [
"null",
"string"
]
},
"PrimaryPhone": {
"properties": {
"FreeFormNumber": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BalanceWithJobs": {
"type": [
"null",
"number"
]
},
"BillWithParent": {
"type": [
"null",
"boolean"
]
},
"Level": {
"type": [
"null",
"integer"
]
},
"ParentRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PrintOnCheckName": {
"type": [
"null",
"string"
]
},
"Job": {
"type": [
"null",
"boolean"
]
},
"Mobile": {
"properties": {
"FreeFormNumber": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PreferredDeliveryMethod": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Taxable": {
"type": [
"null",
"boolean"
]
},
"DisplayName": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"WebAddr": {
"properties": {
"URI": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"GivenName": {
"type": [
"null",
"string"
]
},
"ShipAddr": {
"properties": {
"Lat": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"Country": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"PostalCode": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Fax": {
"properties": {
"FreeFormNumber": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,99 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"ParentRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"MetaData": {
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
},
"type": [
"null",
"object"
]
},
"FullyQualifiedName": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"SubDepartment": {
"type": [
"null",
"boolean"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,304 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"DepartmentRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CashBack": {
"properties": {
"AccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"Memo": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Line": {
"items": {
"properties": {
"Id": {
"type": [
"null",
"string"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"DepositLineDetail": {
"properties": {
"PaymentMethodRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"AccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CheckNum": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"LinkedTxn": {
"items": {
"properties": {
"TxnLineId": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
},
"TxnType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DepositToAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"PrivateNote": {
"type": [
"null",
"string"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,195 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"HiredDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"PrimaryPhone": {
"properties": {
"FreeFormNumber": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"BillableTime": {
"type": [
"null",
"boolean"
]
},
"DisplayName": {
"type": [
"null",
"string"
]
},
"GivenName": {
"type": [
"null",
"string"
]
},
"FamilyName": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"BirthDate": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"PrintOnCheckName": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PrimaryAddr": {
"type": [
"null",
"object"
],
"properties": {}
},
"PrimaryEmailAddr": {
"type": [
"null",
"object"
],
"properties": {}
},
"Title": {
"type": [
"null",
"string"
]
},
"MiddleName": {
"type": [
"null",
"string"
]
},
"ReleasedDate": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"Mobile": {
"type": [
"null",
"object"
],
"properties": {}
},
"Gender": {
"type": [
"null",
"string"
]
},
"BillRate": {
"type": [
"null",
"number"
]
},
"Suffix": {
"type": [
"null",
"string"
]
},
"EmployeeNumber": {
"type": [
"null",
"string"
]
},
"Organization": {
"type": [
"null",
"boolean"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,548 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"BillEmail": {
"properties": {
"Address": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BillAddr": {
"properties": {
"Lat": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Line2": {
"type": [
"null",
"string"
]
},
"Line4": {
"type": [
"null",
"string"
]
},
"Line3": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TxnStatus": {
"type": [
"null",
"string"
]
},
"EmailStatus": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CustomerRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"DeliveryInfo": {
"properties": {
"DeliveryType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TxnTaxDetail": {
"properties": {
"TotalTax": {
"type": [
"null",
"number"
]
},
"TaxLine": {
"items": {
"properties": {
"Amount": {
"type": [
"null",
"number"
]
},
"TaxLineDetail": {
"properties": {
"PercentBased": {
"type": [
"null",
"boolean"
]
},
"TaxPercent": {
"type": [
"null",
"integer"
]
},
"NetAmountTaxable": {
"type": [
"null",
"number"
]
},
"TaxRateRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"DetailType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"TxnTaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"LinkedTxn": {
"items": {
"properties": {
"TxnId": {
"type": [
"null",
"string"
]
},
"TxnType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"CustomerMemo": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Line": {
"items": {
"properties": {
"Id": {
"type": [
"null",
"string"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"SalesItemLineDetail": {
"properties": {
"ItemRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Qty": {
"type": [
"null",
"number"
]
},
"TaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"UnitPrice": {
"type": [
"null",
"number"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"ApplyTaxAfterDiscount": {
"type": [
"null",
"boolean"
]
},
"PrintStatus": {
"type": [
"null",
"string"
]
},
"CustomField": {
"items": {
"properties": {
"DefinitionId": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"Type": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"HomeTotalAmt": {
"type": [
"null",
"number"
]
},
"ShipAddr": {
"properties": {
"Lat": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"PostalCode": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,716 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"AllowOnlineACHPayment": {
"type": [
"null",
"boolean"
]
},
"CustomerRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BillAddr": {
"properties": {
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
},
"Line3": {
"type": [
"null",
"string"
]
},
"Line2": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"Line4": {
"type": [
"null",
"string"
]
},
"PostalCode": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"DeliveryInfo": {
"properties": {
"DeliveryType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SalesTermRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"AllowIPNPayment": {
"type": [
"null",
"boolean"
]
},
"AllowOnlineCreditCardPayment": {
"type": [
"null",
"boolean"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"CustomerMemo": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CustomField": {
"items": {
"properties": {
"Type": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"StringValue": {
"type": [
"null",
"string"
]
},
"DefinitionId": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"Balance": {
"type": [
"null",
"number"
]
},
"AllowOnlinePayment": {
"type": [
"null",
"boolean"
]
},
"DueDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"HomeTotalAmt": {
"type": [
"null",
"number"
]
},
"Line": {
"items": {
"properties": {
"LinkedTxn": {
"items": {
"properties": {
"TxnType": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"SalesItemLineDetail": {
"properties": {
"ClassRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"TaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"UnitPrice": {
"type": [
"null",
"number"
]
},
"ServiceDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"ItemRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Qty": {
"type": [
"null",
"number"
]
}
},
"type": [
"null",
"object"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"DiscountLineDetail": {
"properties": {
"DiscountAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DiscountPercent": {
"type": [
"null",
"integer"
]
},
"PercentBased": {
"type": [
"null",
"boolean"
]
}
},
"type": [
"null",
"object"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"TxnTaxDetail": {
"properties": {
"TotalTax": {
"type": [
"null",
"number"
]
},
"TaxLine": {
"items": {
"properties": {
"Amount": {
"type": [
"null",
"number"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"TaxLineDetail": {
"properties": {
"NetAmountTaxable": {
"type": [
"null",
"number"
]
},
"TaxPercent": {
"type": [
"null",
"number"
]
},
"TaxRateRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PercentBased": {
"type": [
"null",
"boolean"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"TxnTaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"EmailStatus": {
"type": [
"null",
"string"
]
},
"LinkedTxn": {
"items": {
"properties": {
"TxnType": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"PrintStatus": {
"type": [
"null",
"string"
]
},
"ApplyTaxAfterDiscount": {
"type": [
"null",
"boolean"
]
},
"BillEmail": {
"properties": {
"Address": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"ShipAddr": {
"properties": {
"City": {
"type": [
"null",
"string"
]
},
"PostalCode": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PrivateNote": {
"type": [
"null",
"string"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,194 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"IncomeAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PurchaseDesc": {
"type": [
"null",
"string"
]
},
"ExpenseAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"InvStartDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"FullyQualifiedName": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Taxable": {
"type": [
"null",
"boolean"
]
},
"Type": {
"type": [
"null",
"string"
]
},
"TrackQtyOnHand": {
"type": [
"null",
"boolean"
]
},
"AssetAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"QtyOnHand": {
"type": [
"null",
"integer"
]
},
"UnitPrice": {
"type": [
"null",
"integer"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"PurchaseCost": {
"type": [
"null",
"number"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,322 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"TaxRateRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Line": {
"items": {
"properties": {
"Id": {
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"JournalEntryLineDetail": {
"properties": {
"AccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PostingType": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"TxnTaxDetail": {
"type": [
"null",
"object"
],
"properties": {
"TotalTax": {
"type": [
"null",
"number"
]
},
"TxnTaxCodeRef": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
}
},
"TaxLine": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"DetailType": {
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"TaxLineDetail": {
"type": [
"null",
"object"
],
"properties": {
"TaxPercent": {
"type": [
"null",
"number"
]
},
"OverrideDeltaAmount": {
"type": [
"null",
"number"
]
},
"TaxInclusiveAmount": {
"type": [
"null",
"number"
]
},
"PercentBased": {
"type": [
"null",
"boolean"
]
},
"NetAmountTaxable": {
"type": [
"null",
"number"
]
},
"TaxRateRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
}
}
}
}
}
}
}
},
"PrivateNote": {
"type": [
"null",
"string"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Adjustment": {
"type": [
"null",
"boolean"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,79 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"Name": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"MetaData": {
"type": [
"null",
"object"
],
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
}
},
"Id": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Type": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,342 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"DepositToAccountRef": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
}
}
},
"CurrencyRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"ARAccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"Line": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"LineEx": {
"type": [
"null",
"object"
],
"properties": {
"any": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"typeSubstituted": {
"type": [
"null",
"boolean"
]
},
"scope": {
"type": [
"null",
"string"
]
},
"nil": {
"type": [
"null",
"boolean"
]
},
"value": {
"type": [
"null",
"object"
],
"properties": {
"Name": {
"type": [
"null",
"string"
]
},
"Value": {
"type": [
"null",
"string"
]
}
}
},
"declaredType": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
},
"globalScope": {
"type": [
"null",
"boolean"
]
}
}
}
}
}
},
"LinkedTxn": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"TxnType": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
}
}
}
},
"Amount": {
"type": [
"null",
"number"
]
}
}
}
},
"ProcessPayment": {
"type": [
"null",
"boolean"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"PrivateNote": {
"type": [
"null",
"string"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"LinkedTxn": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"TxnType": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
}
}
}
},
"UnappliedAmt": {
"type": [
"null",
"integer"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"MetaData": {
"type": [
"null",
"object"
],
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
}
},
"TxnDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"Id": {
"type": [
"null",
"string"
]
},
"PaymentMethodRef": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
}
}
},
"CustomerRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"PaymentRefNum": {
"type": [
"null",
"string"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,572 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"Memo": {
"type": [
"null",
"string"
]
},
"DueDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"PrivateNote": {
"type": [
"null",
"string"
]
},
"TxnTaxDetail": {
"type": [
"null",
"object"
],
"properties": {}
},
"EmailStatus": {
"type": [
"null",
"string"
]
},
"ShipTo": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"ClassRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SalesTermRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CurrencyRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"APAccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"Id": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"ShipAddr": {
"type": [
"null",
"object"
],
"properties": {
"Long": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Line3": {
"type": [
"null",
"string"
]
},
"Line2": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
}
},
"LinkedTxn": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"TxnType": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
}
}
}
},
"VendorAddr": {
"type": [
"null",
"object"
],
"properties": {
"Long": {
"type": [
"null",
"string"
]
},
"Line4": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Line3": {
"type": [
"null",
"string"
]
},
"Line2": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
},
"Country": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
}
},
"domain": {
"type": [
"null",
"string"
]
},
"CustomField": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"Name": {
"type": [
"null",
"string"
]
},
"DefinitionId": {
"type": [
"null",
"string"
]
},
"Type": {
"type": [
"null",
"string"
]
}
}
}
},
"MetaData": {
"type": [
"null",
"object"
],
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
}
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"POStatus": {
"type": [
"null",
"string"
]
},
"VendorRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"TxnDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"DepartmentRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"Line": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"Amount": {
"type": [
"null",
"number"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"ItemBasedExpenseLineDetail": {
"type": [
"null",
"object"
],
"properties": {
"BillableStatus": {
"type": [
"null",
"string"
]
},
"ClassRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"ItemRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"UnitPrice": {
"type": [
"null",
"number"
]
},
"TaxCodeRef": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
}
}
},
"Qty": {
"type": [
"null",
"integer"
]
},
"CustomerRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
}
}
},
"Description": {
"type": [
"null",
"string"
]
}
}
}
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,470 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"PrivateNote": {
"type": [
"null",
"string"
]
},
"PaymentType": {
"type": [
"null",
"string"
]
},
"MetaData": {
"type": [
"null",
"object"
],
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
}
},
"RemitToAddr": {
"type": [
"null",
"object"
],
"properties": {
"PostalCode": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
}
}
},
"CurrencyRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"PrintStatus": {
"type": [
"null",
"string"
]
},
"AccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"Id": {
"type": [
"null",
"string"
]
},
"EntityRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"type": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"TxnDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"domain": {
"type": [
"null",
"string"
]
},
"Credit": {
"type": [
"null",
"boolean"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Line": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"ItemBasedExpenseLineDetail": {
"type": [
"null",
"object"
],
"properties": {
"ItemRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"Qty": {
"type": [
"null",
"integer"
]
},
"BillableStatus": {
"type": [
"null",
"string"
]
},
"UnitPrice": {
"type": [
"null",
"number"
]
},
"TaxCodeRef": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
}
}
}
}
},
"AccountBasedExpenseLineDetail": {
"type": [
"null",
"object"
],
"properties": {
"AccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"CustomerRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"BillableStatus": {
"type": [
"null",
"string"
]
},
"TaxCodeRef": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
}
}
}
}
},
"Amount": {
"type": [
"null",
"number"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
}
}
}
},
"PurchaseEx": {
"type": [
"null",
"object"
],
"properties": {
"any": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"scope": {
"type": [
"null",
"string"
]
},
"nil": {
"type": [
"null",
"boolean"
]
},
"globalScope": {
"type": [
"null",
"boolean"
]
},
"value": {
"type": [
"null",
"object"
],
"properties": {
"Name": {
"type": [
"null",
"string"
]
},
"Value": {
"type": [
"null",
"string"
]
}
}
},
"declaredType": {
"type": [
"null",
"string"
]
},
"typeSubstituted": {
"type": [
"null",
"boolean"
]
}
}
}
}
}
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,412 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"BillEmail": {
"properties": {
"Address": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PaymentMethodRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CustomerRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Line": {
"items": {
"properties": {
"Id": {
"type": [
"null",
"string"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"SalesItemLineDetail": {
"properties": {
"ItemRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Qty": {
"type": [
"null",
"number"
]
},
"TaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"UnitPrice": {
"type": [
"null",
"integer"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Balance": {
"type": [
"null",
"integer"
]
},
"TxnTaxDetail": {
"properties": {
"TotalTax": {
"type": [
"null",
"integer"
]
}
},
"type": [
"null",
"object"
]
},
"DepositToAccountRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CustomerMemo": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"PrintStatus": {
"type": [
"null",
"string"
]
},
"CustomField": {
"items": {
"properties": {
"DefinitionId": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"Type": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"BillAddr": {
"properties": {
"Lat": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Line2": {
"type": [
"null",
"string"
]
},
"Line4": {
"type": [
"null",
"string"
]
},
"Line3": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"ApplyTaxAfterDiscount": {
"type": [
"null",
"boolean"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"HomeTotalAmt": {
"type": [
"null",
"number"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,546 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"Balance": {
"type": [
"null",
"integer"
]
},
"CustomerRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"LinkedTxn": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"TxnType": {
"type": [
"null",
"string"
]
},
"TxnId": {
"type": [
"null",
"string"
]
}
}
}
},
"ApplyTaxAfterDiscount": {
"type": [
"null",
"boolean"
]
},
"PaymentRefNum": {
"type": [
"null",
"string"
]
},
"TxnTaxDetail": {
"type": [
"null",
"object"
],
"properties": {
"TotalTax": {
"type": [
"null",
"integer"
]
}
}
},
"PrintStatus": {
"type": [
"null",
"string"
]
},
"MetaData": {
"type": [
"null",
"object"
],
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
}
},
"CustomField": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"Name": {
"type": [
"null",
"string"
]
},
"DefinitionId": {
"type": [
"null",
"string"
]
},
"Type": {
"type": [
"null",
"string"
]
}
}
}
},
"BillAddr": {
"type": [
"null",
"object"
],
"properties": {
"Long": {
"type": [
"null",
"string"
]
},
"Line2": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
},
"Line3": {
"type": [
"null",
"string"
]
},
"Line4": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
}
}
},
"domain": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"EmailStatus": {
"type": [
"null",
"string"
]
},
"Line": {
"type": [
"null",
"array"
],
"items": {
"type": [
"null",
"object"
],
"properties": {
"DiscountLineDetail": {
"type": [
"null",
"object"
],
"properties": {
"PercentBased": {
"type": [
"null",
"boolean"
]
},
"DiscountPercent": {
"type": [
"null",
"integer"
]
},
"DiscountAccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
}
}
},
"Amount": {
"type": [
"null",
"number"
]
},
"LineNum": {
"type": [
"null",
"integer"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"SalesItemLineDetail": {
"type": [
"null",
"object"
],
"properties": {
"ItemRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"Qty": {
"type": [
"null",
"number"
]
},
"UnitPrice": {
"type": [
"null",
"integer"
]
},
"TaxCodeRef": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
}
}
}
}
},
"Id": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
}
}
}
},
"CurrencyRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"PaymentMethodRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"TxnDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"Id": {
"type": [
"null",
"string"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"BillEmail": {
"type": [
"null",
"object"
],
"properties": {
"Address": {
"type": [
"null",
"string"
]
}
}
},
"CustomerMemo": {
"type": [
"null",
"object"
],
"properties": {
"value": {
"type": [
"null",
"string"
]
}
}
},
"ShipAddr": {
"type": [
"null",
"object"
],
"properties": {
"PostalCode": {
"type": [
"null",
"string"
]
},
"Lat": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
},
"Country": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
}
}
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"HomeTotalAmt": {
"type": [
"null",
"number"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"DepositToAccountRef": {
"type": [
"null",
"object"
],
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
}
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,85 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"Id": {
"type": [
"null",
"string"
]
},
"TaxRegistrationNumber": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"TaxTrackedOnPurchases": {
"type": [
"null",
"boolean"
]
},
"DisplayName": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TaxTrackedOnSales": {
"type": [
"null",
"boolean"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,158 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"TaxGroup": {
"type": [
"null",
"boolean"
]
},
"PurchaseTaxRateList": {
"type": [
"null",
"object"
],
"properties": {}
},
"Hidden": {
"type": [
"null",
"boolean"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"Taxable": {
"type": [
"null",
"boolean"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"SalesTaxRateList": {
"properties": {
"TaxRateDetail": {
"items": {
"properties": {
"TaxOrder": {
"type": [
"null",
"integer"
]
},
"TaxTypeApplicable": {
"type": [
"null",
"string"
]
},
"TaxRateRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
}
},
"type": [
"null",
"object"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,177 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"SpecialTaxType": {
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"AgencyRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"RateValue": {
"type": [
"null",
"number"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"DisplayType": {
"type": [
"null",
"string"
]
},
"EffectiveTaxRate": {
"anyOf": [
{
"properties": {
"RateValue": {
"type": [
"null",
"number"
]
},
"EndDate": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"EffectiveDate ": {
"type": [
"null",
"string"
],
"format": "date-time"
}
},
"type": [
"null",
"object"
]
},
{
"type": [
"null",
"array"
],
"items": {
"properties": {
"RateValue": {
"type": [
"null",
"number"
]
},
"EndDate": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"EffectiveDate ": {
"type": [
"null",
"string"
],
"format": "date-time"
}
},
"type": [
"null",
"object"
]
}
}
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,115 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"Id": {
"type": [
"null",
"string"
]
},
"DiscountPercent": {
"type": [
"null",
"number"
]
},
"DayOfMonthDue": {
"type": [
"null",
"integer"
]
},
"DiscountDayOfMonth": {
"type": [
"null",
"integer"
]
},
"DueNextMonthDays": {
"type": [
"null",
"integer"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Type": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"DueDays": {
"type": [
"null",
"integer"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"Name": {
"type": [
"null",
"string"
]
},
"DiscountDays": {
"type": [
"null",
"integer"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,170 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"HourlyRate": {
"type": [
"null",
"integer"
]
},
"CustomerRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Taxable": {
"type": [
"null",
"boolean"
]
},
"Description": {
"type": [
"null",
"string"
]
},
"Minutes": {
"type": [
"null",
"integer"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"ItemRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"TxnDate": {
"format": "date",
"type": [
"null",
"string"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"EmployeeRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BillableStatus": {
"type": [
"null",
"string"
]
},
"NameOf": {
"type": [
"null",
"string"
]
},
"Hours": {
"type": [
"null",
"integer"
]
},
"sparse": {
"type": [
"null",
"boolean"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,140 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"PrivateNote": {
"type": [
"null",
"string"
]
},
"MetaData": {
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
},
"type": [
"null",
"object"
]
},
"TxnDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"ToAccountRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CurrencyRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"FromAccountRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,292 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"MetaData": {
"properties": {
"LastUpdatedTime": {
"type": [
"null",
"string"
],
"format": "date-time"
},
"CreateTime": {
"type": [
"null",
"string"
],
"format": "date-time"
}
},
"type": [
"null",
"object"
]
},
"ExchangeRate": {
"type": [
"null",
"number"
]
},
"TotalAmt": {
"type": [
"null",
"number"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"VendorRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DepartmentRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"APAccountRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"TxnDate": {
"type": [
"null",
"string"
],
"format": "date"
},
"Id": {
"type": [
"null",
"string"
]
},
"Line": {
"items": {
"properties": {
"LineNum": {
"type": [
"null",
"integer"
]
},
"AccountBasedExpenseLineDetail": {
"properties": {
"CustomerRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"ClassRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"AccountRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"BillableStatus": {
"type": [
"null",
"string"
]
},
"TaxCodeRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
}
},
"type": [
"null",
"object"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"Amount": {
"type": [
"null",
"number"
]
},
"DetailType": {
"type": [
"null",
"string"
]
},
"Description": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"type": [
"null",
"array"
]
},
"CurrencyRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
},
"name": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"DocNumber": {
"type": [
"null",
"string"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,293 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": [
"null",
"object"
],
"properties": {
"GivenName": {
"type": [
"null",
"string"
]
},
"PrimaryPhone": {
"properties": {
"FreeFormNumber": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"AcctNum": {
"type": [
"null",
"string"
]
},
"MiddleName": {
"type": [
"null",
"string"
]
},
"BillAddr": {
"properties": {
"Lat": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"CountrySubDivisionCode": {
"type": [
"null",
"string"
]
},
"Country": {
"type": [
"null",
"string"
]
},
"City": {
"type": [
"null",
"string"
]
},
"Long": {
"type": [
"null",
"string"
]
},
"PostalCode": {
"type": [
"null",
"string"
]
},
"Line1": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"PrimaryEmailAddr": {
"properties": {
"Address": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Balance": {
"type": [
"null",
"number"
]
},
"TaxIdentifier": {
"type": [
"null",
"string"
]
},
"CompanyName": {
"type": [
"null",
"string"
]
},
"FamilyName": {
"type": [
"null",
"string"
]
},
"PrintOnCheckName": {
"type": [
"null",
"string"
]
},
"WebAddr": {
"properties": {
"URI": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Mobile": {
"properties": {
"FreeFormNumber": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"CurrencyRef": {
"properties": {
"name": {
"type": [
"null",
"string"
]
},
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Vendor1099": {
"type": [
"null",
"boolean"
]
},
"SyncToken": {
"type": [
"null",
"string"
]
},
"DisplayName": {
"type": [
"null",
"string"
]
},
"TermRef": {
"properties": {
"value": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"MetaData": {
"properties": {
"CreateTime": {
"format": "date-time",
"type": [
"null",
"string"
]
},
"LastUpdatedTime": {
"format": "date-time",
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Fax": {
"properties": {
"FreeFormNumber": {
"type": [
"null",
"string"
]
}
},
"type": [
"null",
"object"
]
},
"Suffix": {
"type": [
"null",
"string"
]
},
"Id": {
"type": [
"null",
"string"
]
},
"domain": {
"type": [
"null",
"string"
]
},
"Active": {
"type": [
"null",
"boolean"
]
},
"Title": {
"type": [
"null",
"string"
]
},
"airbyte_cursor": {
"type": [
"null",
"string"
]
}
}
}

View File

@@ -0,0 +1,18 @@
#
# Copyright (c) 2023 Airbyte, Inc., all rights reserved.
#
from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource
"""
This file provides the necessary constructs to interpret a provided declarative YAML configuration file into
source connector.
WARNING: Do not modify this file.
"""
# Declarative Source
class SourceQuickbooks(YamlDeclarativeSource):
def __init__(self):
super().__init__(**{"path_to_yaml": "manifest.yaml"})

View File

@@ -0,0 +1,168 @@
{
"documentationUrl": "https://docs.airbyte.com/integrations/sources/quickbooks",
"connectionSpecification": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Source QuickBooks Spec",
"type": "object",
"required": [
"credentials",
"start_date",
"sandbox"
],
"additionalProperties": true,
"properties": {
"credentials": {
"title": "Authorization Method",
"type": "object",
"order": 0,
"oneOf": [
{
"type": "object",
"title": "OAuth2.0",
"required": [
"client_id",
"client_secret",
"refresh_token",
"access_token",
"token_expiry_date",
"realm_id"
],
"properties": {
"auth_type": {
"type": "string",
"const": "oauth2.0"
},
"client_id": {
"type": "string",
"title": "Client ID",
"description": "Identifies which app is making the request. Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production."
},
"client_secret": {
"description": " Obtain this value from the Keys tab on the app profile via My Apps on the developer site. There are two versions of this key: development and production.",
"title": "Client Secret",
"type": "string",
"airbyte_secret": true
},
"refresh_token": {
"description": "A token used when refreshing the access token.",
"title": "Refresh Token",
"type": "string",
"airbyte_secret": true
},
"access_token": {
"description": "Access token fot making authenticated requests.",
"title": "Access Token",
"type": "string",
"airbyte_secret": true
},
"token_expiry_date": {
"type": "string",
"title": "Token Expiry Date",
"description": "The date-time when the access token should be refreshed.",
"format": "date-time"
},
"realm_id": {
"description": "Labeled Company ID. The Make API Calls panel is populated with the realm id and the current access token.",
"title": "Realm ID",
"type": "string",
"airbyte_secret": true
}
}
}
]
},
"start_date": {
"order": 1,
"description": "The default value to use if no bookmark exists for an endpoint (rfc3339 date string). E.g, 2021-03-20T00:00:00+00:00. Any data before this date will not be replicated.",
"title": "Start Date",
"type": "string",
"format": "date-time",
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}",
"examples": [
"2021-03-20T00:00:00+00:00"
]
},
"sandbox": {
"order": 2,
"description": "Determines whether to use the sandbox or production environment.",
"title": "Sandbox",
"type": "boolean",
"default": false
}
}
},
"advanced_auth": {
"auth_flow_type": "oauth2.0",
"predicate_key": ["credentials", "auth_type"],
"predicate_value": "oauth2.0",
"oauth_config_specification": {
"complete_oauth_output_specification": {
"type": "object",
"additionalProperties": true,
"properties": {
"access_token": {
"type": "string",
"path_in_connector_config": [
"credentials",
"access_token"
]
},
"refresh_token": {
"type": "string",
"path_in_connector_config": [
"credentials",
"refresh_token"
]
},
"token_expiry_date": {
"type": "string",
"format": "date-time",
"path_in_connector_config": [
"credentials",
"token_expiry_date"
]
},
"realm_id": {
"type": "string",
"path_in_connector_config": [
"credentials",
"realm_id"
]
}
}
},
"complete_oauth_server_input_specification": {
"type": "object",
"additionalProperties": true,
"properties": {
"client_id": {
"type": "string"
},
"client_secret": {
"type": "string"
}
}
},
"complete_oauth_server_output_specification": {
"type": "object",
"additionalProperties": true,
"properties": {
"client_id": {
"type": "string",
"path_in_connector_config": [
"credentials",
"client_id"
]
},
"client_secret": {
"type": "string",
"path_in_connector_config": [
"credentials",
"client_secret"
]
}
}
}
}
}
}

View File

@@ -0,0 +1,110 @@
import re
from datetime import datetime, timezone
from source_quickbooks.components import LastRecordDictProxy
from source_quickbooks.components import CustomDatetimeBasedCursor
def test_dict_proxy():
record = {
"Id": "1",
"MetaData": {
"CreateTime": "2023-02-10T14:42:07-08:00",
"LastUpdatedTime": "2023-02-18T13:13:33-08:00"
}
}
proxy = LastRecordDictProxy(record, {"airbyte_cursor": "MetaData/LastUpdatedTime"})
assert proxy["MetaData/LastUpdatedTime"] == "2023-02-18T13:13:33-08:00"
assert proxy["Id"] == "1"
assert proxy.get("MetaData/LastUpdatedTime") == "2023-02-18T13:13:33-08:00"
assert proxy.get("Id") == "1"
assert "airbyte_cursor" not in record
assert proxy["airbyte_cursor"] == record["MetaData"]["LastUpdatedTime"]
proxy["MetaData/LastUpdatedTime"] = "0000-00-00T00:00:00+00:00"
proxy["Id"] = "2"
assert record["MetaData"]["LastUpdatedTime"] == "0000-00-00T00:00:00+00:00"
assert record["Id"] == "2"
del record["MetaData"]["CreateTime"]
assert "CreateTime" not in record["MetaData"]
assert record == {
"Id": "2",
"MetaData": {"LastUpdatedTime": "0000-00-00T00:00:00+00:00"}
}
def test_custom_datetime_based_cursor__update_cursor():
cursor_field_name = "airbyte_cursor"
record_cursor_value = "2023-02-10T14:42:05-08:00"
date_time_based_cursor_component = CustomDatetimeBasedCursor(
start_datetime="2023-02-01T00:00:00+00:00",
end_datetime="2023-02-01T00:00:00+00:00",
step="P30D",
cursor_field=cursor_field_name,
datetime_format="%Y-%m-%dT%H:%M:%S%z",
cursor_granularity="PT0S",
config={},
parameters={}
)
date_time_based_cursor_component.update_cursor(
{
"start_time": "2023-02-01T00:00:00+00:00",
"end_time": "2023-03-03T00:00:00+00:00"
},
{
"Id": "1",
"MetaData": {
"CreateTime": "2023-02-10T14:42:07-08:00",
"LastUpdatedTime": record_cursor_value
}
}
)
assert date_time_based_cursor_component.get_stream_state() == {cursor_field_name: record_cursor_value}
def test_custom_datetime_based_cursor__format_datetime():
date_time_based_cursor_component = CustomDatetimeBasedCursor(
start_datetime="2023-02-01T00:00:00+00:00",
end_datetime="2023-02-01T00:00:00+00:00",
step="P30D",
cursor_field="airbyte_cursor",
datetime_format="%Y-%m-%dT%H:%M:%S%z",
cursor_granularity="PT0S",
config={},
parameters={}
)
_format_datetime = getattr(date_time_based_cursor_component, "_format_datetime")
pattern = re.compile("^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:[0-9]{2}")
assert pattern.fullmatch(_format_datetime(datetime.now(timezone.utc)))
def test_custom_datetime_based_cursor__parse_datetime():
date_time_based_cursor_component = CustomDatetimeBasedCursor(
start_datetime="2023-02-01T00:00:00+00:00",
end_datetime="2023-02-01T00:00:00+00:00",
step="P30D",
cursor_field="airbyte_cursor",
datetime_format="%Y-%m-%dT%H:%M:%S%z",
cursor_granularity="PT0S",
config={},
parameters={}
)
datetime_string_original_offset = "2023-02-10T14:42:05-08:00"
datetime_string_in_utc = "2023-02-10T22:42:05+00:00"
parse_date = getattr(date_time_based_cursor_component, "parse_date")
dt_utc = parse_date(datetime_string_original_offset)
_format_datetime = getattr(date_time_based_cursor_component, "_format_datetime")
assert _format_datetime(dt_utc) == datetime_string_in_utc

View File

@@ -190,7 +190,7 @@
| **PyPI** | <img alt="PyPI icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/pypi.svg" height="30" height="30"/> | Source | airbyte/source-pypi:0.1.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/pypi) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-pypi) | <small>`88ecd3a8-5f5b-11ed-9b6a-0242ac120002`</small> |
| **Qonto** | <img alt="Qonto icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/qonto.svg" height="30" height="30"/> | Source | airbyte/source-qonto:0.1.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/public-qonto) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-qonto) | <small>`f7c0b910-5f66-11ed-9b6a-0242ac120002`</small> |
| **Qualaroo** | <img alt="Qualaroo icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/qualaroo.svg" height="30" height="30"/> | Source | airbyte/source-qualaroo:0.1.2 | alpha | [link](https://docs.airbyte.com/integrations/sources/qualaroo) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-qualaroo) | <small>`b08e4776-d1de-4e80-ab5c-1e51dad934a2`</small> |
| **QuickBooks** | <img alt="QuickBooks icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/qb.svg" height="30" height="30"/> | Source | airbyte/source-quickbooks-singer:0.1.5 | alpha | [link](https://docs.airbyte.com/integrations/sources/quickbooks-singer) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-quickbooks-singer) | <small>`29b409d9-30a5-4cc8-ad50-886eb846fea3`</small> |
| **QuickBooks** | <img alt="QuickBooks icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/quickbooks.svg" height="30" height="30"/> | Source | airbyte/source-quickbooks:1.0.0 | alpha | [link](https://docs.airbyte.com/integrations/sources/quickbooks) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-quickbooks) | <small>`cf9c4355-b171-4477-8f2d-6c5cc5fc8b7e`</small> |
| **RD Station Marketing** | <img alt="RD Station Marketing icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/rdstation.svg" height="30" height="30"/> | Source | airbyte/source-rd-station-marketing:0.1.1 | alpha | [link](https://docs.airbyte.com/integrations/sources/rd-station-marketing) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-rd-station-marketing) | <small>`fb141f29-be2a-450b-a4f2-2cd203a00f84`</small> |
| **RKI Covid** | <img alt="RKI Covid icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/rki.svg" height="30" height="30"/> | Source | airbyte/source-rki-covid:0.1.2 | alpha | [link](https://docs.airbyte.com/integrations/sources/rki-covid) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-rki-covid) | <small>`d78e5de0-aa44-4744-aa4f-74c818ccfe19`</small> |
| **RSS** | <img alt="RSS icon" src="https://raw.githubusercontent.com/airbytehq/airbyte/master/airbyte-config-oss/init-oss/src/main/resources/icons/rss.svg" height="30" height="30"/> | Source | airbyte/source-rss:0.1.0 | unknown | [link](https://docs.airbyte.com/integrations/sources/rss) | [code](https://github.com/airbytehq/airbyte/tree/master/airbyte-integrations/connectors/source-rss) | <small>`0efee448-6948-49e2-b786-17db50647908`</small> |

View File

@@ -1,12 +1,71 @@
# QuickBooks
## Overview
This page contains the setup guide and reference information for the QuickBooks Source connector.
The QuickBooks source supports both Full Refresh and Incremental syncs. You can choose if this connector will copy only the new or updated data, or all rows in the tables and columns you set up for replication, every time a sync is run.
## Prerequisites
This source wraps the [Singer QuickBooks Tap](https://github.com/singer-io/tap-quickbooks).
- [Intuit QuickBooks account](https://quickbooks.intuit.com/global/)
### Output schema
<!-- env:oss -->
**For Airbyte Open Source:**
- OAuth2.0 credentials (see [OAuth 2.0 playground](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0-playground))
- Realm ID
<!-- /env:oss -->
## Setup guide
### Step 1: Set up QuickBooks
Create a [Intuit Developer account](https://developer.intuit.com/app/developer/qbo/docs/get-started)
<!-- env:oss -->
**Airbyte Open Source additional setup steps**
1. Create an application
2. Obtain credentials. The easiest way to get these credentials is by using Quickbook's [OAuth 2.0 playground](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0-playground)
<!-- /env:oss -->
<!-- env:cloud -->
### Step 2: Set up the QuickBooks connector in Airbyte
**For Airbyte Cloud:**
1. [Log into your Airbyte Cloud](https://cloud.airbyte.com/workspaces) account.
2. In the left navigation bar, click **Sources**. In the top-right corner, click **+ new source**.
3. On the source setup page, select **QuickBooks** from the Source type dropdown and enter a name for this connector.
4. Click `Authenticate your QuickBooks account`
5. Log in and Authorize to the QuickBooks account.
6. **Start date** - The date starting from which you'd like to replicate data.
7. **Sandbox** - Turn on if you're going to replicate the data from the sandbox environment.
8. Click **Set up source**.
<!-- /env:cloud -->
<!-- env:oss -->
**For Airbyte Open Source:**
1. **Client ID** - The OAuth2.0 application ID
2. **Client Secret** - The OAuth2.0 application secret
3. **Refresh Token** - Refresh token used to get new access token every time the current one is expired
4. **Access Token** - Access token to perform authenticated API calls with
5. **Token Expiry Date** - DateTime when the access token becomes invalid
6. **Start date** - The date from which you'd like to replicate data for streams.
7. **Realm ID** - The Labeled [Company ID](https://developer.intuit.com/app/developer/qbo/docs/learn/learn-basic-field-definitions#realm-id) you'd like to replicate data for streams.
8. **Sandbox** - Turn on if you're going to replicate the data from the sandbox environment.
<!-- /env:oss -->
## Supported sync modes
The Quickbooks Source connector supports the following [ sync modes](https://docs.airbyte.com/cloud/core-concepts#connection-sync-modes):
* [Full Refresh - Overwrite](https://docs.airbyte.com/understanding-airbyte/connections/full-refresh-overwrite/)
* [Full Refresh - Append](https://docs.airbyte.com/understanding-airbyte/connections/full-refresh-append)
* [Incremental - Append](https://docs.airbyte.com/understanding-airbyte/connections/incremental-append)
* [Incremental - Deduped History](https://docs.airbyte.com/understanding-airbyte/connections/incremental-deduped-history)
## Supported Streams
This Source is capable of syncing the following [Streams](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account):
@@ -39,45 +98,20 @@ This Source is capable of syncing the following [Streams](https://developer.intu
- [VendorCredits](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendorcredit)
- [Vendors](https://developer.intuit.com/app/developer/qbo/docs/api/accounting/all-entities/vendor)
### Data type mapping
## Data type map
| Integration Type | Airbyte Type | Notes |
| :--------------- | :----------- | :---- |
|:-----------------|:-------------|:------|
| `string` | `string` | |
| `number` | `number` | |
| `array` | `array` | |
| `object` | `object` | |
### Features
| Feature | Supported?\(Yes/No\) | Notes |
| :---------------- | :------------------- | :---- |
| Full Refresh Sync | Yes | |
| Incremental Sync | Yes | |
| SSL connection | Yes | |
| Namespaces | No | |
## Getting started
1. Create an [Intuit Developer account](https://developer.intuit.com/app/developer/qbo/docs/get-started)
2. Create an app
3. Obtain credentials
### Requirements
- Client ID
- Client Secret
- Realm ID
- Refresh token
The easiest way to get these credentials is by using Quickbook's [OAuth 2.0 playground](https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0-playground)
**Important note:** The refresh token expires every 100 days. You will need to manually revisit the Oauth playground to obtain a refresh token every 100 days, or your syncs will expire. We plan on offering full Oauth support soon so you don't need to redo this process manually.
## CHANGELOG
## Changelog
| Version | Date | Pull Request | Subject |
| :------ | :--------- | :------------------------------------------------------- | :------------------------------------------------------- |
|:--------|:-----------|:---------------------------------------------------------|:---------------------------------------------------------|
| `1.0.0` | 2023-03-20 | [24324](https://github.com/airbytehq/airbyte/pull/24324) | Migrate to Low-Code |
| `0.1.5` | 2022-02-17 | [10346](https://github.com/airbytehq/airbyte/pull/10346) | Update label `Quickbooks` -> `QuickBooks` |
| `0.1.4` | 2021-12-20 | [8960](https://github.com/airbytehq/airbyte/pull/8960) | Update connector fields title/description |
| `0.1.3` | 2021-08-10 | [4986](https://github.com/airbytehq/airbyte/pull/4986) | Using number data type for decimal fields instead string |