Skip to main content

`tap-freshservice` is a Singer tap for Freshservice, built with the Meltano Singer SDK.

Project description

tap-freshservice

tap-freshservice is a Singer tap for Freshservice.

Built with the Meltano Tap SDK for Singer Taps.

Installation

Install from PyPi:

pipx install tap-freshservice

Install from GitHub:

pipx install git+https://github.com/Datateer/tap-freshservice.git@main

Configuration

Settings

Setting Required Default Description
api_key True None The Freshservice API key
url_base True https://<your org>.freshservice.com/api/v2 The Freshservice API base URL
ticket_lookback_days False 45 Days of ticket updated_at history to request on each full sync. Sent as Freshservice updated_since. Child streams only run for tickets in this window.
request_delay_seconds False 1.0 Minimum seconds to wait between API requests. Increase if you see 429 rate-limit errors.
stream_maps False None Config object for stream maps. See Stream Maps.
stream_map_config False None User-defined config values for map expressions.
flattening_enabled False None true to enable schema flattening and expand nested properties.
flattening_max_depth False None Max depth to flatten schemas.
batch_config False None Configuration for BATCH message capabilities.

Replication behavior

All streams use full-table replication. There is no Singer incremental mode.

Each run requests tickets whose updated_at falls within the configured ticket_lookback_days window (default 45). That value is sent to Freshservice as the updated_since query parameter. Child streams such as time_entries run only for tickets returned in that window.

Note: updated_since filters on ticket updated_at only. It does not reflect activity such as new time entries when the ticket itself was not updated.

Large Singer messages (Meltano line size limit)

Meltano limits each tap output line to half of elt.buffer_size (default 50 MiB). If a run fails with Output line length limit exceeded, a single RECORD or SCHEMA line is too large.

Common causes in this tap:

  • tickets with flattening_enabled: true (large nested schemas)
  • tickets fields such as description / description_text (large HTML bodies)

Fixes, in order of preference:

  1. Keep flattening off for API extraction (recommended for time_entries-only jobs)
  2. Exclude large ticket fields with stream maps when syncing tickets
  3. Raise the Meltano buffer if large records are expected:
elt:
  buffer_size: 209715200  # 200 MiB → 100 MiB max line size

Or: meltano config set meltano elt.buffer_size 209715200

Example Meltano config

plugins:
  extractors:
    - name: tap-freshservice
      config:
        api_key: $TAP_FRESHSERVICE_API_KEY
        url_base: https://your-org.freshservice.com/api/v2
        ticket_lookback_days: 45
        request_delay_seconds: 1.0

Supported Python versions

Python 3.10–3.13

Capabilities

catalog, discover, stream-maps, schema-flattening, batch, and others. Run tap-freshservice --about for the full list.

A full list of supported settings and capabilities is available by running:

tap-freshservice --about

Configure using environment variables

This Singer tap will automatically import any environment variables within the working directory's .env if the --config=ENV is provided, such that config values will be considered if a matching environment variable is set either in the terminal context or in the .env file.

Usage

You can easily run tap-freshservice by itself or in a pipeline using Meltano.

Executing the Tap Directly

tap-freshservice --version
tap-freshservice --help
tap-freshservice --config CONFIG --discover > ./catalog.json

Developer Resources

Follow these instructions to contribute to this project.

Initialize your Development Environment

pipx install poetry
poetry install

Create and Run Tests

Create tests within the tests subfolder and then run:

poetry run pytest

You can also test the tap-freshservice CLI interface directly using poetry run:

poetry run tap-freshservice --help

Testing with Meltano

Note: This tap will work in any Singer environment and does not require Meltano. Examples here are for convenience and to streamline end-to-end orchestration scenarios.

Next, install Meltano (if you haven't already) and any needed plugins:

# Install meltano
pipx install meltano
# Initialize meltano within this directory
cd tap-freshservice
meltano install

Now you can test and orchestrate using Meltano:

# Test invocation:
meltano invoke tap-freshservice --version
# OR run a test `elt` pipeline:
meltano elt tap-freshservice target-jsonl

SDK Dev Guide

See the dev guide for more instructions on how to use the SDK to develop your own taps and targets.

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

tap_freshservice-0.12.0.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tap_freshservice-0.12.0-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file tap_freshservice-0.12.0.tar.gz.

File metadata

  • Download URL: tap_freshservice-0.12.0.tar.gz
  • Upload date:
  • Size: 14.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for tap_freshservice-0.12.0.tar.gz
Algorithm Hash digest
SHA256 82da999ea16e000cfdb62edd93e5b314715ea4fa02dd82b4f9c9c938bb4bca04
MD5 ccf5206e008049cc50e50b000c1685e2
BLAKE2b-256 ffce2cec90d696cd95a03f807f7129bf2b9fcd544b11434c526e4e91854398e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tap_freshservice-0.12.0.tar.gz:

Publisher: ci.yml on Datateer/tap-freshservice

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tap_freshservice-0.12.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tap_freshservice-0.12.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a863e71279cc7b14c99b8391ff5f85b4f8038175c51b60ce5c9be766966e7d7
MD5 fb323eef04878b8f7107f605bd7fb1d3
BLAKE2b-256 3eefb2aaf17669b4c71346b649bd9246a40f168792fe6a2f807290aab693a87a

See more details on using hashes here.

Provenance

The following attestation bundles were made for tap_freshservice-0.12.0-py3-none-any.whl:

Publisher: ci.yml on Datateer/tap-freshservice

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page