tap-totango


Nametap-totango JSON
Version 0.5.0 PyPI version JSON
download
home_page
Summary`tap-totango` is a Singer tap for the Totango API, built with the Meltano Singer SDK.
upload_time2023-05-15 16:43:33
maintainer
docs_urlNone
authorEdson Nogueira
requires_python>=3.7.1,<3.12
licenseApache 2.0
keywords elt totango
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # tap-totango

`tap-totango` is a Singer tap for the [Totango API](https://support.totango.com/hc/en-us/sections/360005893212-Totango-API). It extracts data from the Search API accounts, users, and events endpoints.

Built with the [Meltano Tap SDK](https://sdk.meltano.com) for Singer Taps.

## Installation

Install from PyPi:

```bash
pipx install tap-totango
```

Install from BitBucket:

```bash
pipx install git+https://bitbucket.org/indiciumtech/tap-totango.git@main
```

## Configuration

### Accepted Config Options

A full list of supported settings and capabilities in a reasonably readable form for this tap is available by running:

```bash
tap-totango --about --format=json
```

Each endpoint from the [Totango Search API](https://support.totango.com/hc/en-us/sections/360005893212-Totango-API) requires some parameters with the same name for the query, such as `terms`, `count`, and `offset`. In these cases, we provide settings namespaced by the stream name (e.g. `accounts_terms`,  `users_offset` , etc.).

``` yaml
settings_group_validation: # An array of arrays listing the minimal valid group of settings required to use the connector
- - api_url
  - auth_token
  - events_terms
  - events_count
  - events_offset
  - accounts_terms
  - accounts_fields
  - users_terms
  - users_fields
settings:
  - name: api_url
    description: |
      The url for the API services. 
      
      https://api.totango.com is for US services, whereas https://api-eu1.totango.com is for EU services.
    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-
    kind: string 
    value: https://api.totango.com
  - name: auth_token
    description: |
      The token to authenticate against the API service.
    documentation: https://support.totango.com/hc/en-us/articles/203036939-Personal-Access-Token-and-Service-ID
    kind: password
  - name: events_terms
    description: |
      An array containing filter conditions to use for the events stream search.
    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-
    kind: array
    value: []
  - name: events_count
    description: |
      The maximum number of accounts to return in the events result set.

      The max. value for count is `1000`.
    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-
    kind: integer
    value: 1000
  - name: events_offset
    description: |
      Page number (0 is the 1st-page).
    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-
    kind: integer
    value: 0
  - name: account_id
    description: |
      Filter the events stream results for a specific account.
    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-
    kind: string
  - name: accounts_terms
    description: |
      An array containing filter conditions to use for the accounts stream search.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: array
    value: []
  - name: accounts_fields
    description: |
      List of fields to return as results. 

      Note that the account name and account-id are always returned as well.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: array
    value: []
  - name: accounts_count
    description: |
      The maximum number of accounts to return in the accounts result set. 

      The max. value for count is 1000.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: integer
    value: 1000
  - name: accounts_offset
    description: |
      Record number (0 states "start at record 0"). 
      
      The record size can be defined using the count parameter (and limited to 1000). 
      
      Tip: To page through results, ask for 1000 records (count: 1000). If you receive 1000 records, assume there’s more, in which case you want to pull the next 1000 records (offset: 1000…then 2000…etc.). Repeat paging until the number of records returned is less than 1000.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: integer
    value: 0
  - name: accounts_sort_by
    description: |
      Field name to sort the accounts stream results set by.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: string
    value: "display_name"
  - name: accounts_sort_order
    description: |
      Order to sort the accounts stream results set by.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: string
    value: "ASC"
  - name: users_terms
    description: |
      An array containing filter conditions to use for the users stream search.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: array
    value: []
  - name: users_fields
    description: |
      List of fields to return as results. 

      Note that the account name and account-id are always returned as well.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: array
    value: []
  - name: users_count
    description: |
      The maximum number of accounts to return in the users result set. 

      The max. value for count is 1000.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: integer
    value: 1000
  - name: users_offset
    description: |
      Record number (0 states "start at record 0"). 
      
      The record size can be defined using the count parameter (and limited to 1000). 
      
      Tip: To page through results, ask for 1000 records (count: 1000). If you receive 1000 records, assume there’s more, in which case you want to pull the next 1000 records (offset: 1000…then 2000…etc.). Repeat paging until the number of records returned is less than 1000.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: integer
    value: 0
  - name: users_sort_by
    description: |
      Field name to sort the users stream results set by.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: string
    value: "display_name"
  - name: users_sort_order
    description: |
      Order to sort the users stream results set by.
    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-
    kind: string
    value: "ASC"
```

### 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.

### Source Authentication and Authorization

You should create a [Totango API personal access token](https://support.totango.com/hc/en-us/articles/203036939-Personal-Access-Token-and-Service-ID) and provide it as the `auth_token` setting for the tap.

We recommend passing it as an environment variable. For instance, when using the tap with Meltano you should add the following line to your `.env` file:

``` bash
export TAP_TOTANGO_AUTH_TOKEN=< YOUR_PERSONAL_ACCESS_TOKEN >
```

## Usage

You can easily run `tap-totango` by itself or in a pipeline using [Meltano](https://meltano.com/).

### Executing the Tap Directly

```bash
tap-totango --version
tap-totango --help
tap-totango --config CONFIG --discover > ./catalog.json
```

## Developer Resources

Follow these instructions to contribute to this project.

### Initialize your Development Environment

```bash
pipx install poetry
poetry install
```

### Create and Run Tests

Create tests within the `tests` subfolder and
  then run:

```bash
poetry run pytest
```

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

```bash
poetry run tap-totango --help
```

### Testing with [Meltano](https://www.meltano.com)

_**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:

```bash
# Install meltano
pipx install meltano
# Initialize meltano within this directory
cd tap-totango
meltano install
```

Now you can test and orchestrate using Meltano:

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

### SDK Dev Guide

See the [dev guide](https://sdk.meltano.com/en/latest/dev_guide.html) for more instructions on how to use the SDK to
develop your own taps and targets.

## Acknowledgements

Edson Nogueira thanks all members of the Meltaners group @ Indicium Tech, namely Cesar Rubim, Lucas Marques, Guilherme Tavares e Igor Benincá, for the professional guidance.

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "tap-totango",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7.1,<3.12",
    "maintainer_email": "",
    "keywords": "ELT,totango",
    "author": "Edson Nogueira",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/53/cf/77ae5eb9d79b11d6dbc704de09f5bde45238be5861cdf72ee3e9a35e9508/tap_totango-0.5.0.tar.gz",
    "platform": null,
    "description": "# tap-totango\n\n`tap-totango` is a Singer tap for the [Totango API](https://support.totango.com/hc/en-us/sections/360005893212-Totango-API). It extracts data from the Search API accounts, users, and events endpoints.\n\nBuilt with the [Meltano Tap SDK](https://sdk.meltano.com) for Singer Taps.\n\n## Installation\n\nInstall from PyPi:\n\n```bash\npipx install tap-totango\n```\n\nInstall from BitBucket:\n\n```bash\npipx install git+https://bitbucket.org/indiciumtech/tap-totango.git@main\n```\n\n## Configuration\n\n### Accepted Config Options\n\nA full list of supported settings and capabilities in a reasonably readable form for this tap is available by running:\n\n```bash\ntap-totango --about --format=json\n```\n\nEach endpoint from the [Totango Search API](https://support.totango.com/hc/en-us/sections/360005893212-Totango-API) requires some parameters with the same name for the query, such as `terms`, `count`, and `offset`. In these cases, we provide settings namespaced by the stream name (e.g. `accounts_terms`,  `users_offset` , etc.).\n\n``` yaml\nsettings_group_validation: # An array of arrays listing the minimal valid group of settings required to use the connector\n- - api_url\n  - auth_token\n  - events_terms\n  - events_count\n  - events_offset\n  - accounts_terms\n  - accounts_fields\n  - users_terms\n  - users_fields\nsettings:\n  - name: api_url\n    description: |\n      The url for the API services. \n      \n      https://api.totango.com is for US services, whereas https://api-eu1.totango.com is for EU services.\n    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-\n    kind: string \n    value: https://api.totango.com\n  - name: auth_token\n    description: |\n      The token to authenticate against the API service.\n    documentation: https://support.totango.com/hc/en-us/articles/203036939-Personal-Access-Token-and-Service-ID\n    kind: password\n  - name: events_terms\n    description: |\n      An array containing filter conditions to use for the events stream search.\n    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-\n    kind: array\n    value: []\n  - name: events_count\n    description: |\n      The maximum number of accounts to return in the events result set.\n\n      The max. value for count is `1000`.\n    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-\n    kind: integer\n    value: 1000\n  - name: events_offset\n    description: |\n      Page number (0 is the 1st-page).\n    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-\n    kind: integer\n    value: 0\n  - name: account_id\n    description: |\n      Filter the events stream results for a specific account.\n    documentation: https://support.totango.com/hc/en-us/articles/360048132792-Search-API-events-\n    kind: string\n  - name: accounts_terms\n    description: |\n      An array containing filter conditions to use for the accounts stream search.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: array\n    value: []\n  - name: accounts_fields\n    description: |\n      List of fields to return as results. \n\n      Note that the account name and account-id are always returned as well.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: array\n    value: []\n  - name: accounts_count\n    description: |\n      The maximum number of accounts to return in the accounts result set. \n\n      The max. value for count is 1000.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: integer\n    value: 1000\n  - name: accounts_offset\n    description: |\n      Record number (0 states \"start at record 0\"). \n      \n      The record size can be defined using the count parameter (and limited to 1000). \n      \n      Tip: To page through results, ask for 1000 records (count: 1000). If you receive 1000 records, assume there\u2019s more, in which case you want to pull the next 1000 records (offset: 1000\u2026then 2000\u2026etc.). Repeat paging until the number of records returned is less than 1000.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: integer\n    value: 0\n  - name: accounts_sort_by\n    description: |\n      Field name to sort the accounts stream results set by.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: string\n    value: \"display_name\"\n  - name: accounts_sort_order\n    description: |\n      Order to sort the accounts stream results set by.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: string\n    value: \"ASC\"\n  - name: users_terms\n    description: |\n      An array containing filter conditions to use for the users stream search.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: array\n    value: []\n  - name: users_fields\n    description: |\n      List of fields to return as results. \n\n      Note that the account name and account-id are always returned as well.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: array\n    value: []\n  - name: users_count\n    description: |\n      The maximum number of accounts to return in the users result set. \n\n      The max. value for count is 1000.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: integer\n    value: 1000\n  - name: users_offset\n    description: |\n      Record number (0 states \"start at record 0\"). \n      \n      The record size can be defined using the count parameter (and limited to 1000). \n      \n      Tip: To page through results, ask for 1000 records (count: 1000). If you receive 1000 records, assume there\u2019s more, in which case you want to pull the next 1000 records (offset: 1000\u2026then 2000\u2026etc.). Repeat paging until the number of records returned is less than 1000.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: integer\n    value: 0\n  - name: users_sort_by\n    description: |\n      Field name to sort the users stream results set by.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: string\n    value: \"display_name\"\n  - name: users_sort_order\n    description: |\n      Order to sort the users stream results set by.\n    documentation: https://support.totango.com/hc/en-us/articles/204174135-Search-API-accounts-and-users-\n    kind: string\n    value: \"ASC\"\n```\n\n### Configure using environment variables\n\nThis Singer tap will automatically import any environment variables within the working directory's\n`.env` if the `--config=ENV` is provided, such that config values will be considered if a matching\nenvironment variable is set either in the terminal context or in the `.env` file.\n\n### Source Authentication and Authorization\n\nYou should create a [Totango API personal access token](https://support.totango.com/hc/en-us/articles/203036939-Personal-Access-Token-and-Service-ID) and provide it as the `auth_token` setting for the tap.\n\nWe recommend passing it as an environment variable. For instance, when using the tap with Meltano you should add the following line to your `.env` file:\n\n``` bash\nexport TAP_TOTANGO_AUTH_TOKEN=< YOUR_PERSONAL_ACCESS_TOKEN >\n```\n\n## Usage\n\nYou can easily run `tap-totango` by itself or in a pipeline using [Meltano](https://meltano.com/).\n\n### Executing the Tap Directly\n\n```bash\ntap-totango --version\ntap-totango --help\ntap-totango --config CONFIG --discover > ./catalog.json\n```\n\n## Developer Resources\n\nFollow these instructions to contribute to this project.\n\n### Initialize your Development Environment\n\n```bash\npipx install poetry\npoetry install\n```\n\n### Create and Run Tests\n\nCreate tests within the `tests` subfolder and\n  then run:\n\n```bash\npoetry run pytest\n```\n\nYou can also test the `tap-totango` CLI interface directly using `poetry run`:\n\n```bash\npoetry run tap-totango --help\n```\n\n### Testing with [Meltano](https://www.meltano.com)\n\n_**Note:** This tap will work in any Singer environment and does not require Meltano.\nExamples here are for convenience and to streamline end-to-end orchestration scenarios._\n\nNext, install Meltano (if you haven't already) and any needed plugins:\n\n```bash\n# Install meltano\npipx install meltano\n# Initialize meltano within this directory\ncd tap-totango\nmeltano install\n```\n\nNow you can test and orchestrate using Meltano:\n\n```bash\n# Test invocation:\nmeltano invoke tap-totango --version\n# OR run a test `elt` pipeline:\nmeltano elt tap-totango target-jsonl\n```\n\n### SDK Dev Guide\n\nSee the [dev guide](https://sdk.meltano.com/en/latest/dev_guide.html) for more instructions on how to use the SDK to\ndevelop your own taps and targets.\n\n## Acknowledgements\n\nEdson Nogueira thanks all members of the Meltaners group @ Indicium Tech, namely Cesar Rubim, Lucas Marques, Guilherme Tavares e Igor Beninc\u00e1, for the professional guidance.\n",
    "bugtrack_url": null,
    "license": "Apache 2.0",
    "summary": "`tap-totango` is a Singer tap for the Totango API, built with the Meltano Singer SDK.",
    "version": "0.5.0",
    "project_urls": null,
    "split_keywords": [
        "elt",
        "totango"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8ab43db81d884bb59ae1f5af603dc2268d9f99f2c6a637ce0c563ff55c3ee3f4",
                "md5": "6f049c71e43b8906f33bf528a608e2b8",
                "sha256": "153d98d63d8c44d8f863caea660b3a727aa4006ee6bae7a6c8f206e12c6b1373"
            },
            "downloads": -1,
            "filename": "tap_totango-0.5.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6f049c71e43b8906f33bf528a608e2b8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7.1,<3.12",
            "size": 10306,
            "upload_time": "2023-05-15T16:43:31",
            "upload_time_iso_8601": "2023-05-15T16:43:31.521495Z",
            "url": "https://files.pythonhosted.org/packages/8a/b4/3db81d884bb59ae1f5af603dc2268d9f99f2c6a637ce0c563ff55c3ee3f4/tap_totango-0.5.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "53cf77ae5eb9d79b11d6dbc704de09f5bde45238be5861cdf72ee3e9a35e9508",
                "md5": "db45ab8d644c06e020e8ed39c42f6d40",
                "sha256": "4fd18e02042858260dfdda8c76044fea52006196bf233bdc17da30df64be56f0"
            },
            "downloads": -1,
            "filename": "tap_totango-0.5.0.tar.gz",
            "has_sig": false,
            "md5_digest": "db45ab8d644c06e020e8ed39c42f6d40",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7.1,<3.12",
            "size": 10232,
            "upload_time": "2023-05-15T16:43:33",
            "upload_time_iso_8601": "2023-05-15T16:43:33.367941Z",
            "url": "https://files.pythonhosted.org/packages/53/cf/77ae5eb9d79b11d6dbc704de09f5bde45238be5861cdf72ee3e9a35e9508/tap_totango-0.5.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-15 16:43:33",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "tap-totango"
}
        
Elapsed time: 0.25439s