From d6cf75ebac90a8d0b19b62cef29edb98ec9903f5 Mon Sep 17 00:00:00 2001 From: kingalban <38832529+kingalban@users.noreply.github.com> Date: Thu, 28 Dec 2023 17:11:38 +0200 Subject: [PATCH] feat: add tap-userflow (#1629) Co-authored-by: Alban King --- _data/default_variants.yml | 1 + _data/maintainers.yml | 4 + .../extractors/tap-userflow/kingalban.yml | 86 ++++++++++++++++++ static/assets/logos/extractors/userflow.png | Bin 0 -> 13743 bytes 4 files changed, 91 insertions(+) create mode 100644 _data/meltano/extractors/tap-userflow/kingalban.yml create mode 100644 static/assets/logos/extractors/userflow.png diff --git a/_data/default_variants.yml b/_data/default_variants.yml index cd1359822..ed3725e4d 100644 --- a/_data/default_variants.yml +++ b/_data/default_variants.yml @@ -535,6 +535,7 @@ extractors: tap-upwork: automattic tap-urban-airship: singer-io tap-us-census: airbyte + tap-userflow: kingalban tap-uservoice: singer-io tap-vantage: airbyte tap-veeqo: matatika diff --git a/_data/maintainers.yml b/_data/maintainers.yml index 8db20c480..25060946d 100644 --- a/_data/maintainers.yml +++ b/_data/maintainers.yml @@ -628,6 +628,10 @@ kgpayne: label: Ken Payne name: kgpayne url: https://github.com/kgpayne +kingalban: + label: kingalban + name: kingalban + url: https://github.com/kingalban kirill533: label: Kyrylo Kostiukov name: kirill533 diff --git a/_data/meltano/extractors/tap-userflow/kingalban.yml b/_data/meltano/extractors/tap-userflow/kingalban.yml new file mode 100644 index 000000000..9d27a2430 --- /dev/null +++ b/_data/meltano/extractors/tap-userflow/kingalban.yml @@ -0,0 +1,86 @@ +capabilities: +- about +- batch +- catalog +- discover +- schema-flattening +- state +- stream-maps +description: Extract content and user sessions from Userflow, a tool for making app + tours, checklists and surveys. +domain_url: https://userflow.com/ +executable: tap-userflow +keywords: +- meltano_sdk +label: Userflow +logo_url: /assets/logos/extractors/userflow.png +maintenance_status: active +name: tap-userflow +namespace: tap_userflow +next_steps: '' +pip_url: kingalban-tap-userflow +quality: unknown +repo: https://github.com/kingalban/tap-userflow +settings: +- description: The token to authenticate against the API service + kind: password + label: Auth Token + name: auth_token +- description: Compression format to use for batch files. + kind: options + label: Batch Config Encoding Compression + name: batch_config.encoding.compression + options: + - label: Gzip + value: gzip + - label: None + value: none +- description: Format to use for batch files. + kind: options + label: Batch Config Encoding Format + name: batch_config.encoding.format + options: + - label: Jsonl + value: jsonl + - label: Parquet + value: parquet +- description: Prefix to use when writing batch files. + kind: string + label: Batch Config Storage Prefix + name: batch_config.storage.prefix +- description: Root path to use when writing batch files. + kind: string + label: Batch Config Storage Root + name: batch_config.storage.root +- description: "'True' to enable schema flattening and automatically expand nested + properties." + kind: boolean + label: Flattening Enabled + name: flattening_enabled +- description: The max depth to flatten schemas. + kind: integer + label: Flattening Max Depth + name: flattening_max_depth +- description: Limit items per stream + kind: integer + label: Limit + name: limit +- description: User-defined config values to be used within map expressions. + kind: object + label: Stream Map Config + name: stream_map_config +- description: Config object for stream maps capability. For more information check + out [Stream Maps](https://sdk.meltano.com/en/latest/stream_maps.html). + kind: object + label: Stream Maps + name: stream_maps +- description: The user agent to present to the API + kind: string + label: User Agent + name: user_agent + value: Singer.io Tap +settings_group_validation: +- - auth_token +settings_preamble: '' +usage: '' +variant: kingalban diff --git a/static/assets/logos/extractors/userflow.png b/static/assets/logos/extractors/userflow.png new file mode 100644 index 0000000000000000000000000000000000000000..7273d8d091c512de3f4124b5922e0be605a14e98 GIT binary patch literal 13743 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 Ju9Y+m{(sK(p@aYc literal 0 HcmV?d00001