Gladly Singer Tap
`tap-gladly` is an open-source Singer tap designed to extract data from the Gladly customer service platform. Built using the Meltano SDK for Singer Taps, it adheres to the Singer Specification, providing a standardized JSON-based output for integration into various ELT pipelines. The current version is `0.4.1`, and releases typically align with updates to the underlying Gladly API or improvements in the Meltano SDK, rather than a fixed cadence.
Warnings
- breaking Major version updates to the Gladly API or changes in the underlying Singer schema (e.g., modifying primary keys, making schemas more restrictive) can introduce breaking changes. Always review release notes for `tap-gladly` and the Gladly API before upgrading.
- gotcha API rate limits are common for external services like Gladly. Excessive requests without proper backoff or concurrency management can lead to temporary blocks or errors. `tap-gladly` relies on the Meltano SDK's handling, but aggressive syncs may still hit limits.
- gotcha All date and time values, especially `start_date` in the configuration, should strictly adhere to the RFC3339 format, preferably in UTC (e.g., `2023-01-01T00:00:00Z`). Incorrect formats can lead to parsing errors or unexpected data extraction ranges.
- gotcha The tap has a strict Python version requirement, supporting Python 3.7.1 up to, but not including, Python 3.11. Using unsupported Python versions may lead to installation failures or runtime errors.
Install
-
pip install tap-gladly
Imports
- Tap
from singer_sdk import Tap
Quickstart
export GLADLY_API_TOKEN="your_gladly_api_token"
# 1. Create a minimal configuration file (config.json)
cat <<EOF > config.json
{
"api_url": "https://your-gladly-instance.gladly.com",
"api_token": "$GLADLY_API_TOKEN",
"start_date": "2023-01-01T00:00:00Z"
}
EOF
# 2. Discover available streams and their schemas
tap-gladly --config config.json --discover > catalog.json
# 3. Perform a data sync (extract data)
tap-gladly --config config.json --catalog catalog.json --state state.json > data.jsonl
# (Optional) View the first few lines of extracted data
head data.jsonl