This tap is in development.
This is a Singer tap that produces JSON-formatted data following the Singer spec.
This tap:
-
Pulls raw data from Quickbooks API
-
Extracts from the following sources to produce streams. Below is a list of all the streams available. See the streams file for a list of classes where each one has a constant indiciating if the stream's replication_method is INCREMENTAL or FULL_TABLE and what is the replication_key.
- Stream
- Accounts
- Budgets
- Classes
- CreditMemos
- BillPayments
- SalesReceipts
- Purchases
- Payments
- PurchaseOrders
- PaymentMethods
- JournalEntries
- Items
- Invoices
- Customers
- RefundReceipts
- Deposits
- Departments
- Employees
- Estimates
- Bills
- TaxAgencies
- TaxCodes
- TaxRates
- Terms
- TimeActivities
- Transfers
- VendorCredits
- Vendors
- ProfitAndLossReport
- DeletedObjects
-
Includes a schema for each resource reflecting most recent tested data retrieved using the api. See the schema folder for details.
-
Incrementally pulls data based on the input state
Authentication is handled with oauth v2. In the tap configuration the following fields are required for authentication to work correctly:
- client_id
- client_secret
- refresh_token
These values are all obtained from the oauth steps documented on quickbook's documentation page.
-
Install
Clone this repository, and then install using setup.py. We recommend using a virtualenv:
$ virtualenv -p python3 venv $ source venv/bin/activate $ pip install -e .
-
Create your tap's
config.json
file. The tap config file for this tap should include these entries:start_date
- The default value to use if no bookmark exists for an endpoint (rfc3339 date string)user_agent
(string): Process and email for API logging purposes. Example:tap-quickbooks <api_user_email@your_company.com>
realm_id
(string): The realm id of the company to fetch the data from.client_secret
(string): Credentials of the client app.client_id
(string): Id of the client app.refresh_token
(string): Token to get a new Access token if it expires.sandbox
(string, optional): Whether to communicate with quickbooks's sandbox or prod account for this application. If you're not sure leave out. Defaults to false.- The
request_timeout
is an optional paramater to set timeout for requests. Default: 300 seconds
And the other values mentioned in the authentication section above.
{ "client_id": "<app_id>", "start_date": "2020-08-21T00:00:00Z", "refresh_token": "<refresh_token>", "client_secret": "<app_secret>", "realm_id": "0123456789", "sandbox": "<true|false>", "user_agent": "Stitch Tap ([email protected])", "request_timeout": 300 }
-
Run the Tap in Discovery Mode This creates a catalog.json for selecting objects/fields to integrate:
tap-quickbooks --config config.json --discover > catalog.json
See the Singer docs on discovery mode here.
-
Run the Tap in Sync Mode (with catalog) and write out to state file
For Sync mode:
$ tap-quickbooks --config tap_config.json --catalog catalog.json >> state.json $ tail -1 state.json > state.json.tmp && mv state.json.tmp state.json
To load to json files to verify outputs:
$ tap-quickbooks --config tap_config.json --catalog catalog.json | target-json >> state.json $ tail -1 state.json > state.json.tmp && mv state.json.tmp state.json
To pseudo-load to Stitch Import API with dry run:
$ tap-quickbooks --config tap_config.json --catalog catalog.json | target-stitch --config target_config.json --dry-run >> state.json $ tail -1 state.json > state.json.tmp && mv state.json.tmp state.json
Copyright © 2020 Stitch