Skip to content

Add extractor tap-asyntai-chatbot (asyntai) - #2322

Merged
edgarrmondragon merged 1 commit into
meltano:mainfrom
asyntai:add-tap-asyntai-chatbot
Sep 21, 2026
Merged

edgarrmondragon merged 1 commit into
meltano:mainfrom
asyntai:add-tap-asyntai-chatbot

Conversation

@asyntai

@asyntai asyntai commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

Adds the extractor tap-asyntai-chatbot (variant asyntai).

Asyntai is an AI chatbot for websites. It answers visitor questions, captures leads and raises support tickets. This tap loads that data into a warehouse.

Four streams, all joined by session_id:

Stream Grain Replication
sessions one chat incremental on last_message_at
messages one message of a chat child stream of sessions
leads a chat where the visitor left an email address or phone number incremental on started_at
tickets a support ticket, with handling times incremental on created_at

The definition was generated with hub-utils add. On Windows it could not run the plugin to scrape the settings, so the settings and capabilities were filled from the tap own --about --format=json. plugin_schema_validate.py, yaml_check_names.py and maintainers_validate.py all pass locally.

Asyntai is an AI chatbot for websites. The tap loads four streams, all joined
by session_id: sessions, messages, leads and tickets.

Repo: https://github.com/asyntai/tap-asyntai-chatbot
PyPI: https://pypi.org/project/tap-asyntai-chatbot/
@netlify

netlify Bot commented Sep 19, 2026

Copy link
Copy Markdown

Deploy Preview for meltano-hub ready!

Name Link
🔨 Latest commit d737278
🔍 Latest deploy log https://app.netlify.com/projects/meltano-hub/deploys/6aae3fd657ede500089c0c2d
😎 Deploy Preview https://deploy-preview-2322--meltano-hub.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions

github-actions Bot commented Sep 19, 2026

Copy link
Copy Markdown

Testing plugin tap-asyntai-chatbot (asyntai variant):

Starting test job...
...
Job completed.

Auto-generated README.md

tap-asyntai-chatbot

Load chats, leads and tickets out of Asyntai.

Built with the Meltano Singer SDK.

Capabilities

  • catalog
  • state
  • discover
  • activate-version
  • about
  • stream-maps
  • schema-flattening
  • batch
  • structured-logging

Supported Python Versions

  • 3.10
  • 3.11
  • 3.12
  • 3.13

Settings

Setting Required Default Description
api_key True None Asyntai API key, from Settings then API in the dashboard.
api_url False https://asyntai.com Base address of the Asyntai API.
start_date False None Earliest record to read on the first run.
website_id False None Read one website only. Leave empty for every website.
page_size False 100 Rows per request. The API allows 100 at most.
stream_maps False None Config object for stream maps capability. For more information check out Stream Maps.
stream_maps.else False None Currently, only setting this to __NULL__ is supported. This will remove all other streams.
stream_map_config False None User-defined config values to be used within map expressions.
faker_config False None Config for the Faker instance variable fake used within map expressions. Only applicable if the plugin specifies faker as an additional dependency (through the singer-sdk faker extra or directly).
faker_config.seed False None Value to seed the Faker generator for deterministic output: https://faker.readthedocs.io/en/master/#seeding-the-generator
faker_config.locale False None One or more LCID locale strings to produce localized output for: https://faker.readthedocs.io/en/master/#localization
flattening_enabled False None 'True' to enable schema flattening and automatically expand nested properties.
flattening_max_depth False None The max depth to flatten schemas.
flattening_max_key_length False None The maximum length of a flattened key.
flattening_separator False None The separator to use when flattening keys.
batch_config False None Configuration for BATCH message capabilities.
batch_config.encoding False None Specifies the format and compression of the batch files.
batch_config.encoding.format False None Format to use for batch files.
batch_config.encoding.compression False None Compression format to use for batch files.
batch_config.storage False None Defines the storage layer to use when writing batch files
batch_config.storage.root False None Root path to use when writing batch files.
batch_config.storage.prefix False None Prefix to use when writing batch files.

A full list of supported settings and capabilities is available by running: tap-asyntai-chatbot --about

Version info
tap-asyntai-chatbot v1.0.0, Meltano SDK v0.54.6
Usage info
melty-bot % meltano invoke tap-asyntai-chatbot --help
Usage: tap-asyntai-chatbot [OPTIONS]

  Execute the Singer tap.

Options:
  --version                 Display the package version.
  --about                   Display package metadata and settings.
  --format [json|markdown]  Specify output style for --about
  --config TEXT             Configuration file location or 'ENV' to use
                            environment variables.
  --discover                Run the tap in discovery mode.
  --test TEXT               Use --test to sync a single record for each
                            stream. Use --test=schema to test schema output
                            without syncing records.
  --catalog FILENAME        Use a Singer catalog file with the tap.
  --state FILENAME          Use a bookmarks file for incremental replication.
  --help                    Show this message and exit.
Detected capabilities
  • ✅ 'discover'
  • ✅ 'catalog'
  • ✅ 'state'
  • ✅ 'about'
JSON Metadata
{
  "name": "tap-asyntai-chatbot",
  "description": "Load chats, leads and tickets out of Asyntai.",
  "version": "1.0.0",
  "sdk_version": "0.54.6",
  "supported_python_versions": [
    "3.10",
    "3.11",
    "3.12",
    "3.13"
  ],
  "capabilities": [
    "catalog",
    "state",
    "discover",
    "activate-version",
    "about",
    "stream-maps",
    "schema-flattening",
    "batch",
    "structured-logging"
  ],
  "settings": {
    "type": "object",
    "properties": {
      "api_key": {
        "type": [
          "string"
        ],
        "title": "API key",
        "description": "Asyntai API key, from Settings then API in the dashboard.",
        "secret": true,
        "writeOnly": true
      },
      "api_url": {
        "type": [
          "string",
          "null"
        ],
        "title": "API URL",
        "default": "https://asyntai.com",
        "description": "Base address of the Asyntai API."
      },
      "start_date": {
        "type": [
          "string",
          "null"
        ],
        "format": "date-time",
        "title": "Start date",
        "description": "Earliest record to read on the first run."
      },
      "website_id": {
        "type": [
          "string",
          "null"
        ],
        "title": "Website id",
        "description": "Read one website only. Leave empty for every website."
      },
      "page_size": {
        "type": [
          "integer",
          "null"
        ],
        "title": "Page size",
        "default": 100,
        "description": "Rows per request. The API allows 100 at most."
      },
      "stream_maps": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "__else__": {
            "anyOf": [
              {
                "const": "__NULL__"
              },
              {
                "type": "null"
              },
              "null"
            ],
            "title": "Other streams",
            "description": "Currently, only setting this to `__NULL__` is supported. This will remove all other streams."
          }
        },
        "additionalProperties": {
          "anyOf": [
            {
              "const": "__NULL__"
            },
            {
              "type": "null"
            },
            {
              "type": "object",
              "properties": {
                "__alias__": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "title": "Stream Alias",
                  "description": "Alias to use for the stream."
                },
                "__else__": {
                  "anyOf": [
                    {
                      "const": "__NULL__"
                    },
                    {
                      "type": "null"
                    },
                    "null"
                  ],
                  "title": "Other properties",
                  "description": "Currently, only setting this to `__NULL__` is supported. This will remove all other properties from the stream."
                },
                "__filter__": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "title": "Filter",
                  "description": "Filter out records from a stream. A string expression which must evaluate to `true` to include the record, or `false` to exclude it. Filter expressions should be wrapped in `bool()` to ensure proper type conversion."
                },
                "__key_properties__": {
                  "type": [
                    "array",
                    "null"
                  ],
                  "items": {
                    "type": [
                      "string"
                    ]
                  },
                  "title": "Key Properties",
                  "description": "Primary key properties for the stream."
                },
                "__source__": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Create a new stream from this source stream."
                }
              },
              "additionalProperties": {
                "anyOf": [
                  {
                    "const": "__NULL__"
                  },
                  {
                    "type": "null"
                  },
                  {
                    "type": [
                      "string"
                    ]
                  }
                ]
              }
            }
          ]
        },
        "title": "Stream Maps",
        "description": "Config object for stream maps capability. For more information check out [Stream Maps](https://sdk.meltano.com/en/latest/stream_maps.html)."
      },
      "stream_map_config": {
        "type": [
          "object",
          "null"
        ],
        "properties": {},
        "additionalProperties": true,
        "title": "User Stream Map Configuration",
        "description": "User-defined config values to be used within map expressions."
      },
      "faker_config": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "seed": {
            "oneOf": [
              {
                "type": [
                  "number"
                ]
              },
              {
                "type": [
                  "string"
                ]
              },
              {
                "type": [
                  "boolean"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Faker Seed",
            "description": "Value to seed the Faker generator for deterministic output: https://faker.readthedocs.io/en/master/#seeding-the-generator"
          },
          "locale": {
            "oneOf": [
              {
                "type": [
                  "string"
                ]
              },
              {
                "type": "array",
                "items": {
                  "type": [
                    "string"
                  ]
                }
              },
              {
                "type": "null"
              }
            ],
            "title": "Faker Locale",
            "description": "One or more LCID locale strings to produce localized output for: https://faker.readthedocs.io/en/master/#localization"
          }
        },
        "additionalProperties": true,
        "title": "Faker Configuration",
        "description": "Config for the [`Faker`](https://faker.readthedocs.io/en/master/) instance variable `fake` used within map expressions. Only applicable if the plugin specifies `faker` as an additional dependency (through the `singer-sdk` `faker` extra or directly)."
      },
      "flattening_enabled": {
        "type": [
          "boolean",
          "null"
        ],
        "title": "Enable Schema Flattening",
        "description": "'True' to enable schema flattening and automatically expand nested properties."
      },
      "flattening_max_depth": {
        "type": [
          "integer",
          "null"
        ],
        "title": "Max Flattening Depth",
        "description": "The max depth to flatten schemas."
      },
      "flattening_max_key_length": {
        "type": [
          "integer",
          "null"
        ],
        "title": "Max Key Length",
        "description": "The maximum length of a flattened key."
      },
      "flattening_separator": {
        "type": [
          "string",
          "null"
        ],
        "title": "Flattening Separator",
        "description": "The separator to use when flattening keys."
      },
      "batch_config": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "encoding": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "format": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Batch Encoding Format",
                "description": "Format to use for batch files.",
                "enum": [
                  "jsonl",
                  "parquet"
                ]
              },
              "compression": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Batch Compression Format",
                "description": "Compression format to use for batch files.",
                "enum": [
                  "gzip",
                  "none"
                ]
              }
            },
            "additionalProperties": true,
            "title": "Batch Encoding Configuration",
            "description": "Specifies the format and compression of the batch files."
          },
          "storage": {
            "type": [
              "object",
              "null"
            ],
            "properties": {
              "root": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Batch Storage Root",
                "description": "Root path to use when writing batch files."
              },
              "prefix": {
                "type": [
                  "string",
                  "null"
                ],
                "title": "Batch Storage Prefix",
                "description": "Prefix to use when writing batch files."
              }
            },
            "additionalProperties": true,
            "title": "Batch Storage Configuration",
            "description": "Defines the storage layer to use when writing batch files"
          }
        },
        "additionalProperties": true,
        "title": "Batch Configuration",
        "description": "Configuration for BATCH message capabilities."
      }
    },
    "required": [
      "api_key"
    ],
    "$schema": "https://json-schema.org/draft/2020-12/schema"
  }
}
Discovered streams
  • leads
  • messages
  • sessions
  • tickets

@edgarrmondragon
edgarrmondragon added this pull request to the merge queue Sep 21, 2026
Merged via the queue into meltano:main with commit 3be0c98 Sep 21, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants