Singer.io tap for the SailThru API
Project description
tap-sailthru
This is a Singer tap that produces JSON-formatted data following the Singer spec.
This tap:
-
Pulls data from the Sailthru 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
INCREMENTALorFULL_TABLEand what the replication_key is, usuallymodify_timefield if it's incremental. -
Includes a schema for each resource reflecting most recent tested data retrieved using the api. See the schemas folder for details.
-
Some streams incrementally pull data based on the previously saved state. See the bookmarking strategy section for more details.
Bookmarking Strategy
Some endpoints in the Sailthru API support a modify_time (or similar) field that allows for INCREMENTAL replication. However, in most cases there is no such field available so most of the endpoints require FULL_TABLE replication. Furthermore, the API does not support pagination or filtering or ordering of any kind, so that should be taken into consideration for streams with a FULL_TABLE replication.
Authentication
API key/secret can be retrieved by logging into your SailThru account then going to Settings > Setup > API & Postbacks > click lock icon to reveal credentials.
Quick Start
- 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- (rfc3339 date string) the default value to use if no bookmark exists for an endpointuser_agent(string, required): Process and email for API logging purposes. Example: tap-sailthru <api_user_email@your_company.com>api_key(string, required): The API keyapi_secret(string, required): The API secretrequest_timeout(string/integer/float, optional): The time for which request should wait to get response and default request_timeout is 300 seconds.
And the other values mentioned in the authentication section above.
{
"start_date": "2021-04-01T00:00:00Z",
"user_agent": "Stitch Tap (+support@stitchdata.com)",
"api_key": "<api_key>",
"api_secret": "<api_secret>",
"request_timeout": 300
}
Run the Tap in Discovery Mode This creates a catalog.json for selecting objects/fields to integrate:
tap-sailthru --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-sailthru --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-sailthru --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-sailthru --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 © 2018 Stitch
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file tap-sailthru-1.0.0.tar.gz.
File metadata
- Download URL: tap-sailthru-1.0.0.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
558d0158e8af24a51dab03575158652f7994199d7d962e398db1be5224ed9caf
|
|
| MD5 |
fe480e167e7b137e78405a9ab878752b
|
|
| BLAKE2b-256 |
a41b9846f554fd0183c13cbb73f211d4bf735060a1f0e22fbbd84887efc4fcc5
|