> ## Documentation Index
> Fetch the complete documentation index at: https://docs.streamkap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create New Source

> Create a new source connector.

The `config` object contains connector-specific properties using **dot notation**
(e.g., `table.include.list`, `schema.include.list`, `database.hostname`).

Use the **GET /sources/connectors** endpoint with a `connector_code` query parameter to
retrieve the full configuration schema for a specific connector type.



## OpenAPI

````yaml /openapi/openapi.json post /sources
openapi: 3.1.0
info:
  title: Streamkap REST API
  description: >-
    The Streamkap REST API allows you to programmatically manage your CDC
    pipelines, sources, destinations, transforms, and more.


    Authenticate using a bearer token obtained from the [Access
    Token](/api-reference/auth/access-token) endpoint with your API client
    credentials.
  contact:
    name: Streamkap Support
    url: https://streamkap.com/
    email: support@streamkap.com
  license:
    name: Proprietary
  version: 2.0.0
servers:
  - url: https://api.streamkap.com
    description: Production
security: []
tags:
  - name: Alerts
    description: Manage alert subscribers, preferences, and notification credentials.
  - name: Authentication
    description: Obtain and refresh access tokens, manage client credentials and roles.
  - name: Billing
    description: Retrieve usage metrics, summaries, and export billing data.
  - name: Consumer Groups
    description: List, inspect, and reset Kafka consumer group offsets.
  - name: Dashboard
    description: Retrieve organisation-level statistics and overview data.
  - name: Destinations
    description: Create, configure, and manage data destinations and their lifecycle.
  - name: Kafka Access
    description: Manage Kafka users and their access permissions.
  - name: Logs
    description: Query and summarise system logs.
  - name: Pipelines
    description: Create, configure, and manage CDC pipelines and their lifecycle.
  - name: Project Keys
    description: Manage project keys that bundle API credentials and optional Kafka access.
  - name: Schema Registry
    description: Browse schema subjects, versions, and retrieve schema definitions.
  - name: Services
    description: View and switch service metadata.
  - name: Sources
    description: >-
      Create, configure, and manage data sources, snapshots, and their
      lifecycle.
  - name: Tags
    description: Create, update, and manage resource tags for organisation.
  - name: Topics
    description: Browse topic details, statistics, configurations, metrics, and messages.
  - name: Transforms
    description: >-
      Create, deploy, and manage data transforms, unit tests, and implementation
      details.
paths:
  /sources:
    post:
      tags:
        - Sources
      summary: Create New Source
      description: >-
        Create a new source connector.


        The `config` object contains connector-specific properties using **dot
        notation**

        (e.g., `table.include.list`, `schema.include.list`,
        `database.hostname`).


        Use the **GET /sources/connectors** endpoint with a `connector_code`
        query parameter to

        retrieve the full configuration schema for a specific connector type.
      operationId: createSource
      parameters:
        - name: secret_returned
          in: query
          required: false
          schema:
            type: boolean
            description: Whether to include secret values in the response
            default: false
            title: Secret Returned
          description: Whether to include secret values in the response
        - name: wait
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              When False, save config and return immediately without waiting for
              KC deployment
            default: true
            title: Wait
          description: >-
            When False, save config and return immediately without waiting for
            KC deployment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSourceReq'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SourceConnector'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - FronteggHTTPAuthentication: []
components:
  schemas:
    CreateSourceReq:
      properties:
        name:
          type: string
          title: Name
          description: Display name for the source connector.
        connector:
          type: string
          title: Connector
          description: >-
            Connector type identifier (e.g., 'postgresql', 'mysql', 'mongodb',
            'dynamodb', 'sqlserveraws').
        config:
          oneOf:
            - $ref: '#/components/schemas/AlloyDBSourceConfig'
            - $ref: '#/components/schemas/Db2SourceConfig'
            - $ref: '#/components/schemas/DocumentDBSourceConfig'
            - $ref: '#/components/schemas/DynamoDBSourceConfig'
            - $ref: '#/components/schemas/ElasticSearchSourceConfig'
            - $ref: '#/components/schemas/InformixSourceConfig'
            - $ref: '#/components/schemas/Kafka DirectSourceConfig'
            - $ref: '#/components/schemas/MariaDBSourceConfig'
            - $ref: '#/components/schemas/MongoDBSourceConfig'
            - $ref: '#/components/schemas/MySQLSourceConfig'
            - $ref: '#/components/schemas/OracleSourceConfig'
            - $ref: '#/components/schemas/Planetscale VitessSourceConfig'
            - $ref: '#/components/schemas/PostgreSQLSourceConfig'
            - $ref: '#/components/schemas/S3SourceConfig'
            - $ref: '#/components/schemas/SQL ServerSourceConfig'
            - $ref: '#/components/schemas/SalesforceSourceConfig'
            - $ref: '#/components/schemas/ShopifySourceConfig'
            - $ref: '#/components/schemas/StripeSourceConfig'
            - $ref: '#/components/schemas/SupabaseSourceConfig'
            - $ref: '#/components/schemas/VitessSourceConfig'
            - $ref: '#/components/schemas/WebhookSourceConfig'
            - $ref: '#/components/schemas/Zendesk WebhookSourceConfig'
          title: Config
          description: >-
            Connector-specific configuration properties. The schema depends on
            the connector type specified in the 'connector' field.
        created_from:
          anyOf:
            - $ref: '#/components/schemas/EntityOriginEnum'
            - type: 'null'
          description: Origin of the entity creation.
          default: api
        desired_state:
          anyOf:
            - $ref: '#/components/schemas/DesiredStateEnum'
            - type: 'null'
          description: Desired operational state of the source.
        kc_cluster_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Kc Cluster Id
          description: KC cluster to deploy this connector to. Omit for default cluster.
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
          description: List of tag IDs to assign to this source
      additionalProperties: true
      type: object
      required:
        - name
        - connector
        - config
      title: CreateSourceReq
      description: Request body for creating a new source connector.
    SourceConnector:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: User-defined connector name
        connector:
          anyOf:
            - type: string
            - type: 'null'
          title: Connector
          description: Connector type (e.g., 'postgresql', 'mysql', 'mongodb')
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: Unique identifier
        connector_display_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Connector Display Name
          description: Human-readable connector type name
        created_timestamp:
          anyOf:
            - type: string
            - type: string
              format: date-time
            - type: 'null'
          title: Created Timestamp
          description: Creation timestamp (ISO 8601)
        sub_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Sub Id
          description: Subscription identifier
        tenant_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Tenant Id
          description: Tenant identifier for multi-tenancy
        service_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Service Id
          description: Associated service identifier
        config:
          anyOf:
            - oneOf:
                - $ref: '#/components/schemas/AlloyDBSourceConfig'
                - $ref: '#/components/schemas/Db2SourceConfig'
                - $ref: '#/components/schemas/DocumentDBSourceConfig'
                - $ref: '#/components/schemas/DynamoDBSourceConfig'
                - $ref: '#/components/schemas/ElasticSearchSourceConfig'
                - $ref: '#/components/schemas/InformixSourceConfig'
                - $ref: '#/components/schemas/Kafka DirectSourceConfig'
                - $ref: '#/components/schemas/MariaDBSourceConfig'
                - $ref: '#/components/schemas/MongoDBSourceConfig'
                - $ref: '#/components/schemas/MySQLSourceConfig'
                - $ref: '#/components/schemas/OracleSourceConfig'
                - $ref: '#/components/schemas/Planetscale VitessSourceConfig'
                - $ref: '#/components/schemas/PostgreSQLSourceConfig'
                - $ref: '#/components/schemas/S3SourceConfig'
                - $ref: '#/components/schemas/SQL ServerSourceConfig'
                - $ref: '#/components/schemas/SalesforceSourceConfig'
                - $ref: '#/components/schemas/ShopifySourceConfig'
                - $ref: '#/components/schemas/StripeSourceConfig'
                - $ref: '#/components/schemas/SupabaseSourceConfig'
                - $ref: '#/components/schemas/VitessSourceConfig'
                - $ref: '#/components/schemas/WebhookSourceConfig'
                - $ref: '#/components/schemas/Zendesk WebhookSourceConfig'
            - type: 'null'
          title: Config
          description: Connector configuration parameters
        topic_ids:
          anyOf:
            - items:
                anyOf:
                  - type: string
                  - type: integer
              type: array
            - type: 'null'
          title: Topic Ids
          description: List of associated topic identifiers
        topic_map:
          anyOf:
            - additionalProperties:
                items:
                  anyOf:
                    - type: string
                    - type: integer
                type: array
              type: object
            - type: 'null'
          title: Topic Map
          description: Mapping of topics to their partitions or related entities
        topics:
          anyOf:
            - items:
                anyOf:
                  - type: string
                  - type: integer
              type: array
            - type: 'null'
          title: Topics
          description: List of topic names
        tasks:
          anyOf:
            - items:
                type: integer
              type: array
            - type: 'null'
          title: Tasks
          description: List of task identifiers
        connector_status:
          anyOf:
            - type: string
            - type: 'null'
          title: Connector Status
          description: >-
            Current status: Active, Paused, Stopped, Broken, Starting,
            Unassigned, Unknown, Pending
        desired_state:
          anyOf:
            - type: string
            - type: 'null'
          title: Desired State
          description: 'Desired state: Pending, Active, Paused, Stopped'
        kc_cluster_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Kc Cluster Id
          description: >-
            KC cluster this connector is deployed to. None means default
            cluster.
        task_statuses:
          anyOf:
            - additionalProperties:
                additionalProperties:
                  anyOf:
                    - type: string
                    - type: integer
                type: object
              type: object
            - type: 'null'
          title: Task Statuses
          description: Status information for each connector task
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
          description: List of tag IDs assigned to this source
      additionalProperties: true
      type: object
      title: SourceConnector
      description: Source connector configuration and status.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    AlloyDBSourceConfig:
      type: object
      title: AlloyDB
      description: Configuration properties for the AlloyDB source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: PostgreSQL Hostname.
        database.port.user.defined:
          type: string
          description: PostgreSQL Port. For example, 5432
          default: '5432'
        database.user:
          type: string
          description: Username to access the database
        database.password:
          type: string
          format: password
          description: Password to access the database
        database.dbname:
          type: string
          description: Database from which to stream data
        snapshot.read.only.user.defined:
          type: string
          enum:
            - 'Yes'
            - 'No'
          description: >-
            When connecting to a read replica PostgreSQL database, this must be
            set to 'Yes' to support Streamkap snapshots
          default: 'Yes'
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal table including schema and table name (e.g.,
            'public.streamkap_signal'). This table is used for incremental
            snapshotting. Follow the documentation for creating this table.
        column.include.list.toggled:
          type: boolean
          description: >-
            Toggle between Inclusion (include only selected columns) and
            Exclusion (exclude selected columns). Defaults to Inclusion (On).
          default: true
        column.include.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be included in
            change event record values. Fully-qualified names for columns are of
            the form schemaName[.]tableName[.](columnName1|columnName2)
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-slot/log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Schema' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The schema containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        slot.name:
          type: string
          description: The name of the replication slot for the connector to use.
          default: streamkap_pgoutput_slot
        publication.name:
          type: string
          description: The name of the publication for the connector to use.
          default: streamkap_pub
        schema.include.list:
          type: string
          description: Schemas to include.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        post.processors:
          type: string
          enum:
            - reselector
          description: Post processors
          default: reselector
        database.sslmode:
          type: string
          enum:
            - require
            - disable
          description: Whether to use an encrypted connection to the PostgreSQL server
          default: require
        include.source.db.name.in.table.name.user.defined:
          type: boolean
          description: Changes the format of topics to 'DatabaseName_TopicName'
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, binary,
            varbinary should be represented. This setting depends on what the
            destination is. See the documentation for more details.
          default: bytes
        transforms.InsertStaticKey1.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey1.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue1.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue1.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        transforms.InsertStaticKey2.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey2.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue2.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue2.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        predicates.IsTopicToEnrich.pattern:
          type: string
          description: Regex pattern to match topics for enrichment.
          default: $^
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.dbname
        - signal.data.collection.schema.or.database
        - slot.name
        - publication.name
        - schema.include.list
        - table.include.list.user.defined
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    Db2SourceConfig:
      type: object
      title: Db2
      description: Configuration properties for the Db2 source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: IP address or hostname of the Db2 database server
        database.port.user.defined:
          type: string
          description: Port number of the Db2 database server
          default: '50000'
        database.user:
          type: string
          description: >-
            Name of the Db2 database user for connecting to the DB2 database
            server
        database.password:
          type: string
          format: password
          description: Password to use when connecting to the Db2 database server
        database.dbname:
          type: string
          description: The name of the Db2 database from which to stream the changes
        schema.include.list.user.defined:
          type: string
          description: Source schemas to sync.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Path to the signal table as schema.table (e.g.,
            'MYSCHEMA.STREAMKAP_SIGNAL'). The database name will be added
            automatically. This table is used for incremental snapshotting.
        schema.history.internal.store.only.captured.databases.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical databases in the database instance or only captured
            databases. Enabling this when you have many databases in your
            instance can improve performance and avoid timeouts.
          default: false
        schema.history.internal.store.only.captured.tables.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical tables in the captured schemas or databases, or only
            captured tables. Enabling this when you have many tables can improve
            performance and avoid timeouts.
          default: false
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.dbname
        - schema.include.list.user.defined
        - table.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    DocumentDBSourceConfig:
      type: object
      title: DocumentDB
      description: Configuration properties for the DocumentDB source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        mongodb.connection.string.user.defined:
          type: string
          format: password
          description: >-
            DocumentDB Connection String. See DocumentDB documentation for
            further details.
        transforms.unwrap.array.encoding:
          type: string
          enum:
            - value: array
              label: Native array
            - value: array_string
              label: Stringified JSON array
          description: >-
            How to encode arrays. 'Array' encodes them as Array objects but
            requires all values in the array to be of the same type.
            'Array_String' encodes them as JSON Strings and should be used if
            arrays have mixed types
          default: array_string
        transforms.unwrap.document.encoding:
          type: string
          enum:
            - value: document
              label: Nested document
            - value: string
              label: Stringified JSON
          description: >-
            How to encode nested documents. 'Document' encodes them as JSON
            Objects, 'String' encodes them as JSON Strings
          default: document
        database.include.list:
          type: string
          description: Source databases to sync.
        collection.include.list.user.defined:
          type: string
          description: Source collections to sync.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal collection including database and collection
            name (e.g., 'mydb.streamkap_signal'). This collection is used for
            incremental snapshotting. Follow the documentation for creating this
            collection.
        cursor.oversize.handling.mode:
          type: string
          enum:
            - skip
            - split
          description: >-
            The strategy used to handle change events for documents exceeding
            specified BSON size.
          default: skip
        cursor.oversize.skip.threshold:
          type: integer
          minimum: 1000000
          maximum: 16000000
          description: >-
            The maximum allowed size in bytes of the stored document for which
            change events are processed. This includes both, the size before and
            after database operation, more specifically this limits the size of
            fullDocument and fullDocumentBeforeChange filed of MongoDB change
            events.
          default: 16000000
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - mongodb.connection.string.user.defined
        - database.include.list
        - collection.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    DynamoDBSourceConfig:
      type: object
      title: DynamoDB
      description: Configuration properties for the DynamoDB source connector.
      properties:
        incremental.snapshot.chunk.size:
          type: integer
          description: Incremental snapshot chunk size
          default: '32768'
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        aws.region:
          type: string
          description: AWS Region
        aws.access.key.id:
          type: string
          format: password
          description: AWS Access Key ID
        aws.secret.key:
          type: string
          format: password
          description: AWS Secret Key
        s3.export.bucket.name:
          type: string
          description: used for backfill (snapshot)
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        batch.size:
          type: integer
        dynamodb.service.endpoint:
          type: string
          description: Dynamodb Service Endpoint (optional)
        tasks.max:
          type: integer
          minimum: 1
          maximum: 40
          description: The maximum number of active tasks
          default: 10
        snapshot.parallel.time.offset:
          type: integer
          minimum: 0
          maximum: 604800000
          description: >-
            If > 0, snapshot will run in parallel with streaming and snapshot
            records _streamkap_ts_ms will be set back in time by this amount to
            prioritize CDC events downstream
          default: 0
        poll.timeout.ms:
          type: integer
          description: Poll Timeout (ms)
          default: '180000'
        incremental.snapshot.max.threads:
          type: integer
          description: Incremental snapshot max threads
          default: '8'
        full.export.expiration.time.ms:
          type: integer
          description: Full Export Expiration Time (ms)
          default: '86400000'
        signal.kafka.poll.timeout.ms:
          type: integer
          description: Signal Kafka Poll Timeout (ms)
          default: '1000'
        array.encoding.json:
          type: string
          description: Force nested lists as JSON string
          default: true
        struct.encoding.json:
          type: string
          description: Force nested maps as JSON string
          default: true
      required:
        - aws.region
        - aws.access.key.id
        - aws.secret.key
        - s3.export.bucket.name
        - table.include.list.user.defined
    ElasticSearchSourceConfig:
      type: object
      title: ElasticSearch
      description: Configuration properties for the ElasticSearch source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        es.host:
          type: string
          description: >-
            ElasticSearch host. Optionally it is possible to specify many hosts
            using ; as separator (host1;host2;host3)
        es.scheme:
          type: string
          enum:
            - http
            - https
          description: ElasticSearch protocol (http/https)
          default: https
        es.port:
          type: string
          description: Port for ElasticSearch HTTP/HTTPS REST API. For example, 443 or 9200
          default: 443
        http.auth.user.defined:
          type: string
          enum:
            - None
            - Basic
          description: Type of Authentication
          default: Basic
        http.auth.user:
          type: string
          description: Elasticsearch username
        http.auth.password:
          type: string
          format: password
          description: Elasticsearch password
        endpoint.include.list.user.defined:
          type: string
          description: The name of ElasticSearch indices
        datetime.field.name:
          type: string
          description: The name of datetime field to use to detect new records.
        datetime.field.value:
          type: string
          description: >-
            The day and time to start consuming records from. Leave it empty if
            you want to consume records as of now.
        tasks.max:
          type: integer
          minimum: 1
          maximum: 10
          description: The maximum number of active tasks
          default: 5
      required:
        - es.host
        - es.port
        - http.auth.user
        - http.auth.password
        - endpoint.include.list.user.defined
        - datetime.field.name
    InformixSourceConfig:
      type: object
      title: Informix
      description: Configuration properties for the Informix source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: IP address or hostname of the Informix database server.
        database.port.user.defined:
          type: string
          description: Informix SQLI listener port. For example, 9088.
          default: '9088'
        database.user:
          type: string
          description: Username to access the Informix database.
        database.password:
          type: string
          format: password
          description: Password to access the Informix database.
        database.dbname:
          type: string
          description: The name of the Informix database from which to stream the changes.
        schema.include.list:
          type: string
          description: Schemas to include.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Path to the signal table as schema.table (e.g.,
            'myschema.streamkap_signal'). The database name will be added
            automatically. This table is used for incremental snapshotting.
          default: streamkap
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Schema' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The schema containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        schema.history.internal.store.only.captured.databases.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical databases in the database instance or only captured
            databases. Enabling this when you have many databases in your
            instance can improve performance and avoid timeouts.
          default: false
        schema.history.internal.store.only.captured.tables.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical tables in the captured schemas or databases, or only
            captured tables. Enabling this when you have many tables can improve
            performance and avoid timeouts.
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, byte, text
            should be represented. This setting depends on what the destination
            is. See the documentation for more details.
          default: bytes
        cdc.buffersize:
          type: integer
          minimum: 4096
          maximum: 1048576
          description: >-
            Size of the read buffer for receiving CDC events from the Informix
            server, in bytes.
          default: 65536
        cdc.timeout:
          type: integer
          minimum: 1
          maximum: 60
          description: >-
            Timeout (seconds) the CDC engine will wait before breaking out of a
            blocking read to check for shutdown signals.
          default: 5
        streamkap.snapshot.parallelism:
          type: integer
          minimum: 1
          maximum: 50
          description: How many parallel chunk requests to send to the source DB.
          default: 1
        streamkap.snapshot.chunk.size.bytes:
          type: integer
          minimum: 4096
          maximum: 8388608
          description: >-
            Target byte size for one chunk SELECT. Drives LIMIT =
            ceil(chunk.size.bytes / avg_row_size).
          default: 524288
        streamkap.snapshot.state.refresh.ms:
          type: integer
          minimum: 1000
          maximum: 60000
          description: >-
            Executor publish cadence (ms) — how often the parallel-snapshot
            executor publishes SourceSnapshotState (rows_scanned, status
            transitions) to the streamkap_state topic. Lower values surface
            progress faster at the cost of state-topic traffic.
          default: 30000
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        transforms.InsertStaticKey1.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey1.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue1.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue1.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.dbname
        - schema.include.list
        - table.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    Kafka DirectSourceConfig:
      type: object
      title: Kafka Direct
      description: Configuration properties for the Kafka Direct source connector.
      properties:
        topic.prefix:
          type: string
          description: Prefix for the topic
        topic.include.list.user.defined:
          type: string
          description: Comma-separated topic names to stream from this Kafka cluster.
        format:
          type: string
          enum:
            - json
            - string
            - avro
          description: The serialised format of the data written to the Kafka topic
          default: string
        schemas.enable:
          type: boolean
          description: >-
            If untoggled (default), Streamkap attempts to infer schema from your
            data - depending on the Destination. Otherwise, Streamkap assumes
            the Kafka message key and value contain `schema` and `payload`
            structures
          default: false
      required:
        - topic.prefix
        - topic.include.list.user.defined
    MariaDBSourceConfig:
      type: object
      title: MariaDB
      description: Configuration properties for the MariaDB source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: >-
            The IP address or hostname of the MariaDB database server. For
            example, mariadb.something.rds.amazonaws.com
        database.port.user.defined:
          type: string
          description: Port number of the MariaDB database server. For example, 3306
          default: '3306'
        database.user:
          type: string
          description: >-
            The name of the MariaDB user that the connector uses to connect to
            the MariaDB database server.
        database.password:
          type: string
          format: password
          description: >-
            The password of the MariaDB user that the connector uses to connect
            to the MariaDB database server.
        database.include.list.user.defined:
          type: string
          description: >-
            Databases to include. The connector does not capture changes in any
            database whose name is not included.
        table.include.list.user.defined:
          type: string
          description: >-
            Source tables to sync. The connector does not capture changes in any
            table that is not included.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal table including database and table name
            (e.g., 'mydb.streamkap_signal'). This table is used for incremental
            snapshotting. Follow the documentation for creating this table.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-slot/log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Database' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The database containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        database.connectionTimeZone:
          type: string
          enum:
            - SERVER
            - UTC
            - Africa/Cairo
            - ' Asia/Riyadh'
            - Africa/Casablanca
            - Asia/Seoul
            - Africa/Harare
            - Asia/Shanghai
            - Africa/Monrovia
            - Asia/Singapore
            - Africa/Nairobi
            - Asia/Taipei
            - Africa/Tripoli
            - Asia/Tehran
            - Africa/Windhoek
            - Asia/Tokyo
            - America/Araguaina
            - Asia/Ulaanbaatar
            - America/Asuncion
            - Asia/Vladivostok
            - America/Bogota
            - Asia/Yakutsk
            - America/Buenos_Aires
            - Asia/Yerevan
            - America/Caracas
            - Atlantic/Azores
            - America/Chihuahua
            - Australia/Adelaide
            - America/Cuiaba
            - Australia/Brisbane
            - America/Denver
            - Australia/Darwin
            - America/Fortaleza
            - Australia/Hobart
            - America/Guatemala
            - Australia/Perth
            - America/Halifax
            - Australia/Sydney
            - America/Manaus
            - Brazil/East
            - America/Matamoros
            - Canada/Newfoundland
            - America/Monterrey
            - Canada/Saskatchewan
            - America/Montevideo
            - Canada/Yukon
            - America/Phoenix
            - Europe/Amsterdam
            - America/Santiago
            - Europe/Athens
            - America/Tijuana
            - Europe/Dublin
            - Asia/Amman
            - Europe/Helsinki
            - Asia/Ashgabat
            - Europe/Istanbul
            - Asia/Baghdad
            - Europe/Kaliningrad
            - Asia/Baku
            - Europe/Moscow
            - Asia/Bangkok
            - Europe/Paris
            - Asia/Beirut
            - Europe/Prague
            - Asia/Calcutta
            - Europe/Sarajevo
            - Asia/Damascus
            - Pacific/Auckland
            - Asia/Dhaka
            - Pacific/Fiji
            - Asia/Irkutsk
            - Pacific/Guam
            - Asia/Jerusalem
            - Pacific/Honolulu
            - Asia/Kabul
            - Pacific/Samoa
            - Asia/Karachi
            - US/Alaska
            - Asia/Kathmandu
            - US/Central
            - Asia/Krasnoyarsk
            - US/Eastern
            - Asia/Magadan
            - US/East-Indiana
            - Asia/Muscat
            - US/Pacific
            - Asia/Novosibirsk
          description: >-
            Set the connection timezone. If set to SERVER, the source will
            detect the connection time zone from the values configured on the
            MariaDB server session variables 'time_zone' or 'system_time_zone' 
          default: SERVER
        snapshot.gtid:
          type: string
          enum:
            - 'Yes'
            - 'No'
          description: >-
            Whether or not to use a read-only connection. MariaDB has GTID
            enabled by default, so no additional configuration is necessary.
          default: 'Yes'
        SourceRegexSupport.enabled:
          type: boolean
          description: >-
            Enable regex support. Useful for merging multiple tables into the
            same output topic. NOTE: most times when regex support is enabled
            there will be 100s of 1000s of tables and "Capture Only Captured
            Tables DDL?" must also be enabled.
          default: false
        transforms.SourceRegexSupport.regex.replacement:
          type: string
          description: Replacement string for matching regex snippets.
          default: REGEX
        transforms.SourceRegexSupport.key.field.template:
          type: string
          description: >-
            Regex support key field template. An extra key field is needed to
            ensure unique data across all tables. Use this template with
            available variables: database, schema, table, sourceId
          default: '{{database}}.{{table}}'
        schema.history.internal.store.only.captured.databases.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical databases in the database instance or only captured
            databases. Enabling this when you have many databases in your
            instance can improve performance and avoid timeouts.
          default: false
        transforms.SourceRegexSupport.metadata.field.name:
          type: string
          description: >-
            Name of the extra metadata field to store source information and
            ensure uniqueness across all tables when regex support is enabled.
          default: _streamkap_source_metadata
        schema.history.internal.store.only.captured.tables.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical tables in the captured schemas or databases, or only
            captured tables. Enabling this when you have many tables can improve
            performance and avoid timeouts.
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, binary,
            varbinary should be represented. This setting depends on what the
            destination is. See the documentation for more details.
          default: bytes
        database.ssl.mode:
          type: string
          enum:
            - disable
            - trust
          description: >-
            Enables SSL/TLS in a specific mode. 'disable' = unencrypted
            connection. 'trust' = encrypted, no certificate verification.
          default: trust
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.include.list.user.defined
        - table.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    MongoDBSourceConfig:
      type: object
      title: MongoDB Atlas
      description: Configuration properties for the MongoDB Atlas source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        mongodb.connection.string.user.defined:
          type: string
          format: password
          description: >-
            Mongodb Connection String. See Mongodb documentation for further
            details.
        mongodb.connection.hostname:
          type: string
          description: The hostname(s) extracted from the MongoDB connection string.
          default: ''
        transforms.unwrap.array.encoding:
          type: string
          enum:
            - value: array
              label: Native array
            - value: array_string
              label: Stringified JSON array
            - value: string
              label: Raw JSON string (Deprecated)
          description: >-
            How to encode arrays. 'Array' encodes them as Array objects but
            requires all values in the array to be of the same type.
            'Array_String' encodes them as JSON Strings and should be used if
            arrays have mixed types. 'String' is deprecated, use 'Array_String'
            instead
          default: array_string
        transforms.unwrap.document.encoding:
          type: string
          enum:
            - value: document
              label: Nested document
            - value: string
              label: Stringified JSON
          description: >-
            How to encode nested documents. 'Document' encodes them as JSON
            Objects, 'String' encodes them as JSON Strings
          default: document
        database.include.list:
          type: string
          description: Source databases to sync.
        collection.include.list.user.defined:
          type: string
          description: Source collections to sync.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal collection including database and collection
            name (e.g., 'mydb.streamkap_signal'). This collection is used for
            incremental snapshotting. Follow the documentation for creating this
            collection.
        cursor.pipeline:
          type: string
          description: >-
            A JSON array of additional pipeline stages to apply when reading
            change events from MongoDB. This can be used to filter or transform
            change stream events before they are processed by the connector
        cursor.oversize.handling.mode:
          type: string
          enum:
            - skip
            - split
          description: >-
            The strategy used to handle change events for documents exceeding
            specified BSON size. 'Skip' ignores oversized documents, 'Split'
            breaks them into smaller chunks
          default: skip
        cursor.oversize.skip.threshold:
          type: integer
          minimum: 1000000
          maximum: 16000000
          description: >-
            The maximum allowed size in bytes of the stored document for which
            change events are processed. This includes both the size before and
            after the database operation, specifically this limits the size of
            fullDocument and fullDocumentBeforeChange fields of MongoDB change
            events
          default: 16000000
        transforms.InsertStaticKey1.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey1.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue1.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue1.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        transforms.InsertStaticKey2.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey2.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue2.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue2.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        predicates.IsTopicToEnrich.pattern:
          type: string
          description: Regex pattern to match topics for enrichment.
          default: $^
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - mongodb.connection.string.user.defined
        - database.include.list
        - collection.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    MySQLSourceConfig:
      type: object
      title: MySQL
      description: Configuration properties for the MySQL source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: MySQL Hostname. For example, mysqldb.something.rds.amazonaws.com
        database.port.user.defined:
          type: string
          description: MySQL Port. For example, 3306
          default: '3306'
        database.user:
          type: string
          description: Username to access the database
        database.password:
          type: string
          format: password
          description: Password to access the database
        database.include.list.user.defined:
          type: string
          description: Databases to include.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal table including database and table name
            (e.g., 'mydb.streamkap_signal'). This table is used for incremental
            snapshotting. Follow the documentation for creating this table.
        column.include.list.toggled:
          type: boolean
          description: >-
            Toggle between Inclusion (include only selected columns) and
            Exclusion (exclude selected columns). Defaults to Inclusion (On).
          default: true
        column.include.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be included in
            change event record values. Fully-qualified names for columns are of
            the form schemaName[.]tableName[.](columnName1|columnName2)
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-slot/log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Database' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The database containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        database.connectionTimeZone:
          type: string
          enum:
            - SERVER
            - UTC
            - Africa/Cairo
            - ' Asia/Riyadh'
            - Africa/Casablanca
            - Asia/Seoul
            - Africa/Harare
            - Asia/Shanghai
            - Africa/Monrovia
            - Asia/Singapore
            - Africa/Nairobi
            - Asia/Taipei
            - Africa/Tripoli
            - Asia/Tehran
            - Africa/Windhoek
            - Asia/Tokyo
            - America/Araguaina
            - Asia/Ulaanbaatar
            - America/Asuncion
            - Asia/Vladivostok
            - America/Bogota
            - Asia/Yakutsk
            - America/Buenos_Aires
            - Asia/Yerevan
            - America/Caracas
            - Atlantic/Azores
            - America/Chihuahua
            - Australia/Adelaide
            - America/Cuiaba
            - Australia/Brisbane
            - America/Denver
            - Australia/Darwin
            - America/Fortaleza
            - Australia/Hobart
            - America/Guatemala
            - Australia/Perth
            - America/Halifax
            - Australia/Sydney
            - America/Manaus
            - Brazil/East
            - America/Matamoros
            - Canada/Newfoundland
            - America/Monterrey
            - Canada/Saskatchewan
            - America/Montevideo
            - Canada/Yukon
            - America/Phoenix
            - Europe/Amsterdam
            - America/Santiago
            - Europe/Athens
            - America/Tijuana
            - Europe/Dublin
            - Asia/Amman
            - Europe/Helsinki
            - Asia/Ashgabat
            - Europe/Istanbul
            - Asia/Baghdad
            - Europe/Kaliningrad
            - Asia/Baku
            - Europe/Moscow
            - Asia/Bangkok
            - Europe/Paris
            - Asia/Beirut
            - Europe/Prague
            - Asia/Calcutta
            - Europe/Sarajevo
            - Asia/Damascus
            - Pacific/Auckland
            - Asia/Dhaka
            - Pacific/Fiji
            - Asia/Irkutsk
            - Pacific/Guam
            - Asia/Jerusalem
            - Pacific/Honolulu
            - Asia/Kabul
            - Pacific/Samoa
            - Asia/Karachi
            - US/Alaska
            - Asia/Kathmandu
            - US/Central
            - Asia/Krasnoyarsk
            - US/Eastern
            - Asia/Magadan
            - US/East-Indiana
            - Asia/Muscat
            - US/Pacific
            - Asia/Novosibirsk
          description: >-
            Set the connection timezone. If set to SERVER, the source will
            detect the connection time zone from the values configured on the
            MySQL server session variables 'time_zone' or 'system_time_zone' 
          default: SERVER
        snapshot.gtid:
          type: string
          enum:
            - 'Yes'
            - 'No'
          description: >-
            Whether or not to use a read-only connection. Requires GTID mode to
            be enabled on the source database.
          default: 'Yes'
        SourceRegexSupport.enabled:
          type: boolean
          description: >-
            Enable regex support. Useful for merging multiple tables into the
            same output topic. NOTE: most times when regex support is enabled
            there will be 100s of 1000s of tables and "Capture Only Captured
            Tables DDL?" must also be enabled.
          default: false
        transforms.SourceRegexSupport.regex.replacement:
          type: string
          description: Replacement string for matching regex snippets.
          default: _REGEX_
        transforms.SourceRegexSupport.key.field.template:
          type: string
          description: >-
            Regex support key field template. An extra key field is needed to
            ensure unique data across all tables. Use this template with
            available variables: database, schema, table, sourceId
          default: '{{database}}.{{table}}'
        transforms.SourceRegexSupport.metadata.field.name:
          type: string
          description: >-
            Name of the extra metadata field to store source information and
            ensure uniqueness across all tables when regex support is enabled.
          default: _streamkap_source_metadata
        schema.history.internal.store.only.captured.databases.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical databases in the database instance or only captured
            databases. Enabling this when you have many databases in your
            instance can improve performance and avoid timeouts.
          default: false
        schema.history.internal.store.only.captured.tables.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical tables in the captured schemas or databases, or only
            captured tables. Enabling this when you have many tables can improve
            performance and avoid timeouts.
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, binary,
            varbinary should be represented. This setting depends on what the
            destination is. See the documentation for more details.
          default: bytes
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        transforms.InsertStaticKey1.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey1.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue1.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue1.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        transforms.InsertStaticKey2.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey2.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue2.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue2.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        predicates.IsTopicToEnrich.pattern:
          type: string
          description: Regex pattern to match topics for enrichment.
          default: $^
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.include.list.user.defined
        - table.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    OracleSourceConfig:
      type: object
      title: Oracle
      description: Configuration properties for the Oracle source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: Oracle Hostname Or IP address
        database.port.user.defined:
          type: string
          description: Oracle Port. For example, 1521
          default: '1521'
        database.user:
          type: string
          description: Username to access the database
        database.password:
          type: string
          format: password
          description: Password to access the database
        database.dbname:
          type: string
          description: >-
            Database from which to stream data. If you're working with container
            databases (CDB), this should be the CDB name.
        database.pdb.name:
          type: string
          description: >-
            Pluggable database from which to stream data. Use this for container
            database (CDB) installations only.
        schema.include.list:
          type: string
          description: Schemas to include.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal table including schema and table name (e.g.,
            'MYSCHEMA.STREAMKAP_SIGNAL'). This table is used for incremental
            snapshotting. Follow the documentation for creating this table.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-slot/log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Schema' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The schema containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        schema.history.internal.store.only.captured.databases.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical databases in the database instance or only captured
            databases. Enabling this when you have many databases in your
            instance can improve performance and avoid timeouts.
          default: false
        schema.history.internal.store.only.captured.tables.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical tables in the captured schemas or databases, or only
            captured tables. Enabling this when you have many tables can improve
            performance and avoid timeouts.
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, binary,
            varbinary should be represented. This setting depends on what the
            destination is. See the documentation for more details.
          default: bytes
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.dbname
        - schema.include.list
        - table.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    Planetscale VitessSourceConfig:
      type: object
      title: Planetscale Vitess
      description: Configuration properties for the Planetscale Vitess source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: IP address or hostname of the PlanetScale database server (VTGate).
        database.port.user.defined:
          type: string
          description: Integer port number of the PlanetScale database server (VTGate).
          default: '443'
        database.user:
          type: string
          description: Username of the PlanetScale database server (VTGate).
        database.password:
          type: string
          format: password
          description: Password of the PlanetScale database server (VTGate).
        vitess.keyspace:
          type: string
          description: The name of the keyspace from which to stream the changes.
        vitess.tablet.type:
          type: string
          enum:
            - MASTER
            - REPLICA
            - RDONLY
          description: The type of Tablet (hence MySQL) from which to stream the changes
          default: MASTER
        converter.tinyintBool.user.defined:
          type: string
          description: Convert tinyInt(1) columns to boolean
          default: false
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        schema.history.internal.store.only.captured.databases.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical databases in the database instance or only captured
            databases. Enabling this when you have many databases in your
            instance can improve performance and avoid timeouts.
          default: false
        schema.history.internal.store.only.captured.tables.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical tables in the captured schemas or databases, or only
            captured tables. Enabling this when you have many tables can improve
            performance and avoid timeouts.
          default: false
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - vitess.keyspace
        - table.include.list.user.defined
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    PostgreSQLSourceConfig:
      type: object
      title: PostgreSQL
      description: Configuration properties for the PostgreSQL source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: >-
            PostgreSQL Hostname. For example,
            postgres.something.rds.amazonaws.com
        database.port.user.defined:
          type: string
          description: PostgreSQL Port. For example, 5432
          default: '5432'
        database.user:
          type: string
          description: Username to access the database
        database.password:
          type: string
          format: password
          description: Password to access the database
        database.dbname:
          type: string
          description: Database from which to stream data
        snapshot.read.only.user.defined:
          type: string
          enum:
            - 'Yes'
            - 'No'
          description: >-
            When connecting to a read replica PostgreSQL database, this must be
            set to 'Yes' to support Streamkap snapshots
          default: 'Yes'
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal table including schema and table name (e.g.,
            'public.streamkap_signal'). This table is used for incremental
            snapshotting. Follow the documentation for creating this table.
        column.include.list.toggled:
          type: boolean
          description: >-
            Toggle between Inclusion (include only selected columns) and
            Exclusion (exclude selected columns). Defaults to Inclusion (On).
          default: true
        SourceRegexSupport.enabled:
          type: boolean
          description: >-
            Enable regex support. Useful for merging multiple tables into the
            same output topic
          default: false
        transforms.SourceRegexSupport.regex.replacement:
          type: string
          description: Replacement string for matching regex snippets.
          default: _REGEX_
        transforms.SourceRegexSupport.key.field.template:
          type: string
          description: >-
            Regex support key field template. An extra key field is needed to
            ensure unique data across all tables. Use this template with
            available variables: database, schema, table, sourceId
          default: '{{database}}.{{table}}'
        transforms.SourceRegexSupport.metadata.field.name:
          type: string
          description: >-
            Name of the extra metadata field to store source information and
            ensure uniqueness across all tables when regex support is enabled.
          default: _streamkap_source_metadata
        column.include.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be included in
            change event record values. Fully-qualified names for columns are of
            the form schemaName[.]tableName[.](columnName1|columnName2)
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-slot/log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Schema' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The schema containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        heartbeat.use.logical.message:
          type: boolean
          description: >-
            Use a logical-message heartbeat instead of a heartbeat table. Runs
            SELECT pg_logical_emit_message(true, ...) on each beat to keep the
            replication slot advancing — works on PG14+ primaries with a
            SELECT-only role and is compatible with read-only mode. No table or
            write grant required on the source.
          default: false
        slot.name:
          type: string
          description: The name of the replication slot for the connector to use.
          default: streamkap_pgoutput_slot
        publication.name:
          type: string
          description: The name of the publication for the connector to use.
          default: streamkap_pub
        schema.include.list:
          type: string
          description: >-
            Comma-separated schemas to capture from this database. Tables inside
            the listed schemas can be picked individually on the next step.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        post.processors:
          type: string
          enum:
            - reselector
          description: Post processors
          default: reselector
        database.sslmode:
          type: string
          enum:
            - require
            - disable
          description: Whether to use an encrypted connection to the PostgreSQL server
          default: require
        include.source.db.name.in.table.name.user.defined:
          type: boolean
          description: Changes the format of topics to 'DatabaseName_TopicName'
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, binary,
            varbinary should be represented. This setting depends on what the
            destination is. See the documentation for more details.
          default: bytes
        transforms.InsertStaticKey1.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey1.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue1.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue1.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        transforms.InsertStaticKey2.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey2.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue2.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue2.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        predicates.IsTopicToEnrich.pattern:
          type: string
          description: Regex pattern to match topics for enrichment.
          default: $^
        streamkap.snapshot.parallelism:
          type: integer
          minimum: 1
          maximum: 10
          description: How many parallel chunk requests to send to the source DB.
          default: 1
        streamkap.snapshot.chunk.size.bytes:
          type: integer
          minimum: 4096
          maximum: 8388608
          description: >-
            Target byte size for one chunk SELECT. Drives LIMIT =
            ceil(chunk.size.bytes / avg_row_size).
          default: 524288
        streamkap.snapshot.state.refresh.ms:
          type: integer
          minimum: 1000
          maximum: 60000
          description: >-
            Executor publish cadence (ms) — how often the parallel-snapshot
            executor publishes SourceSnapshotState (rows_scanned, status
            transitions) to the streamkap_state topic. Lower values surface
            progress faster at the cost of state-topic traffic.
          default: 30000
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.dbname
        - signal.data.collection.schema.or.database
        - slot.name
        - publication.name
        - schema.include.list
        - table.include.list.user.defined
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    S3SourceConfig:
      type: object
      title: S3
      description: Configuration properties for the S3 source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        format:
          type: string
          enum:
            - json
            - csv
            - avro
          description: The input file format
          default: json
        csv.has.headers:
          type: boolean
          description: >-
            When enabled, treat the first row of each CSV file as column names.
            When disabled, columns are auto-generated as column1, column2, ...
          default: true
        topic.routing.enabled:
          type: boolean
          description: >-
            When enabled, derive the Kafka topic name per file from the S3 key.
            When disabled, all files go to the single default topic.
          default: false
        topic.routing.folder.skip:
          type: integer
          minimum: 0
          description: >-
            Number of leading path segments to drop from the S3 key before using
            folders for the topic name. Example: with key
            'archive/public/users/file.csv' set 2 to drop 'archive/public'.
          default: 0
        topic.routing.folder.levels:
          type: integer
          minimum: 0
          description: >-
            Number of folder segments (after the skip) to include in the topic
            name, joined with dots. Set 0 to skip folder-based routing entirely.
          default: 0
        topic.routing.advanced.expression:
          type: string
          description: >-
            ScEL expression for building the topic suffix. When set, overrides
            Folder Skip and Folder Levels. The connector ID is always prepended.
            See the S3 Source documentation for available functions and
            examples.
          default: ''
        topic.postfix:
          type: string
          description: >-
            The default topic name suffix. When Dynamic Topic Routing is
            disabled, all files are streamed to this single topic. When enabled,
            this is used as a fallback for files that do not match the routing
            rules.
          default: default
        topic.include.list.user.defined:
          type: string
          description: >-
            Topics produced by this S3 source. Populated automatically as topics
            are discovered.
          default: ''
        aws.access.key.id:
          type: string
          description: The AWS Access Key ID used to connect to S3
          default: ''
        aws.secret.access.key:
          type: string
          format: password
          description: The AWS Secret Access Key used to connect to S3
          default: ''
        aws.s3.region:
          type: string
          enum:
            - value: eu-west-2
              label: Europe (London) — eu-west-2
            - value: eu-west-1
              label: Europe (Ireland) — eu-west-1
            - value: eu-central-1
              label: Europe (Frankfurt) — eu-central-1
            - value: ap-south-1
              label: Asia Pacific (Mumbai) — ap-south-1
            - value: ap-northeast-2
              label: Asia Pacific (Seoul) — ap-northeast-2
            - value: ap-northeast-1
              label: Asia Pacific (Tokyo) — ap-northeast-1
            - value: ap-southeast-1
              label: Asia Pacific (Singapore) — ap-southeast-1
            - value: ap-southeast-2
              label: Asia Pacific (Sydney) — ap-southeast-2
            - value: us-east-1
              label: US East (N. Virginia) — us-east-1
            - value: us-east-2
              label: US East (Ohio) — us-east-2
            - value: us-west-1
              label: US West (N. California) — us-west-1
            - value: us-west-2
              label: US West (Oregon) — us-west-2
          description: The AWS region to be used
          default: us-west-2
        aws.s3.bucket.name:
          type: string
          description: The S3 Bucket to use
          default: ''
        aws.s3.bucket.prefix:
          type: string
          description: >-
            Prefix for S3 object keys to scan (e.g. "data/2024/"). Can be used
            to specify a directory.
          default: file-pulse/
        fs.scan.interval.ms:
          type: integer
          minimum: 100
          maximum: 100000
          description: The interval in milliseconds at which to scan for new files.
          default: 10000
        fs.cleanup.policy.class.user.defined:
          type: string
          enum:
            - Log
            - Delete
          description: >-
            The policy to use for cleaning up files after processing. Log marks
            files as processed without deleting. Delete removes files from S3
            after processing.
          default: Log
        tasks.max:
          type: integer
          minimum: 1
          maximum: 10
          description: The maximum number of active tasks
          default: 5
      required:
        - aws.access.key.id
        - aws.secret.access.key
    SQL ServerSourceConfig:
      type: object
      title: SQL Server
      description: Configuration properties for the SQL Server source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: >-
            The Endpoint of the SQL Server database server. For example,
            sqlserverdb.abcdefgh.us-west-2.rds.amazonaws.com
        database.port.user.defined:
          type: string
          description: SQL Server Port. For example, 1433
          default: '1433'
        database.encrypt:
          type: boolean
          description: Use TLS encryption with the SQL Server?
          default: true
        database.user:
          type: string
          description: Username to access the database
        database.password:
          type: string
          format: password
          description: Password to access the database
        database.names:
          type: string
          description: Database to stream from.
        schema.include.list:
          type: string
          description: Schemas to include.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Path to the signal table as schema.table (e.g.,
            'dbo.streamkap_signal'). The database name will be added
            automatically. This table is used for incremental snapshotting.
          default: streamkap
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-slot/log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Schema' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The schema containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        schema.history.internal.store.only.captured.databases.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical databases in the database instance or only captured
            databases. Enabling this when you have many databases in your
            instance can improve performance and avoid timeouts.
          default: false
        schema.history.internal.store.only.captured.tables.ddl:
          type: string
          description: >-
            Specifies whether the connector records schema structures from all
            logical tables in the captured schemas or databases, or only
            captured tables. Enabling this when you have many tables can improve
            performance and avoid timeouts.
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, binary,
            varbinary should be represented. This setting depends on what the
            destination is. See the documentation for more details.
          default: bytes
        streamkap.snapshot.parallelism:
          type: integer
          minimum: 1
          maximum: 50
          description: How many parallel chunk requests to send to the source DB.
          default: 1
        streamkap.snapshot.chunk.size.bytes:
          type: integer
          minimum: 4096
          maximum: 8388608
          description: >-
            Target byte size for one chunk SELECT. Drives LIMIT =
            ceil(chunk.size.bytes / avg_row_size).
          default: 524288
        streamkap.snapshot.state.refresh.ms:
          type: integer
          minimum: 1000
          maximum: 60000
          description: >-
            Executor publish cadence (ms) — how often the parallel-snapshot
            executor publishes SourceSnapshotState (rows_scanned, status
            transitions) to the streamkap_state topic. Lower values surface
            progress faster at the cost of state-topic traffic.
          default: 30000
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        transforms.InsertStaticKey1.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey1.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue1.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue1.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.names
        - schema.include.list
        - table.include.list.user.defined
        - signal.data.collection.schema.or.database
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    SalesforceSourceConfig:
      type: object
      title: Salesforce CDC
      description: Configuration properties for the Salesforce CDC source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        webhook.url:
          type: string
          description: Webhook URL for Apex triggers. Generated after source is created.
          default: ''
        api.key:
          type: string
          format: password
          description: >-
            API Key for webhook authentication. Generated after source is
            created.
          default: <API_KEY>
        camel.source.snapshot.salesforce.instance.url:
          type: string
          description: >-
            Salesforce instance URL (e.g., https://myorg.my.salesforce.com or
            https://myorg.lightning.force.com)
          default: ''
        camel.source.snapshot.salesforce.auth.client.id:
          type: string
          description: >-
            OAuth2 Consumer Key from your Salesforce Connected App / External
            Client App
          default: ''
        camel.source.snapshot.salesforce.auth.client.secret:
          type: string
          format: password
          description: >-
            OAuth2 Consumer Secret from your Salesforce Connected App / External
            Client App
          default: ''
        camel.source.snapshot.salesforce.auth.username:
          type: string
          description: >-
            Salesforce username (optional, needed only if client_credentials
            flow is not enabled)
          default: ''
        camel.source.snapshot.salesforce.auth.password:
          type: string
          format: password
          description: >-
            Salesforce password + security token (optional, needed only if
            client_credentials flow is not enabled)
          default: ''
        topic.include.list.user.defined:
          type: string
          description: >-
            Salesforce objects to capture. Select the objects you want to
            receive change events for.
          default: Account,Contact,Lead,Opportunity
        camel.source.cdc.enabled:
          type: boolean
          description: >-
            Enable native Salesforce CDC subscription. When enabled, the
            connector subscribes directly to Salesforce change events without
            needing Apex triggers.
          default: true
        camel.source.payload.router.unknown.type.behavior:
          type: string
          enum:
            - DEFAULT_TOPIC
            - SKIP
            - FAIL
          description: How to handle events for unselected objects
          default: DEFAULT_TOPIC
        camel.source.payload.router.unknown.type.default.topic:
          type: string
          description: Topic for events from unselected objects
          default: unknown
        camel.source.payload.router.flatten.detail:
          type: boolean
          description: >-
            Flatten nested record fields to top-level. Recommended for most
            destinations.
          default: true
        camel.source.payload.router.flatten.detail.prefix:
          type: string
          description: >-
            Prefix for flattened fields (empty = no prefix, Salesforce field
            names like 'Name', 'BillingCity' are used directly)
          default: ''
        camel.source.payload.router.include.event:
          type: boolean
          description: >-
            Include change metadata (ChangeEventHeader) in output. Disable for
            upsert/state-table use cases.
          default: false
        camel.source.dlq.enabled:
          type: boolean
          description: Enable dead letter queue for failed records
          default: true
      required:
        - camel.source.snapshot.salesforce.instance.url
        - camel.source.snapshot.salesforce.auth.client.id
        - camel.source.snapshot.salesforce.auth.client.secret
    ShopifySourceConfig:
      type: object
      title: Shopify
      description: Configuration properties for the Shopify source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        webhook.url:
          type: string
          description: >-
            Webhook URL to register in Shopify. Generated after source is
            created. Pass the API key as a query parameter, e.g.
            ?api_key=<API_KEY>.
          default: ''
        api.key:
          type: string
          description: >-
            API Key. Append to the Webhook URL as ?api_key=<API_KEY> when
            registering webhooks in Shopify. Generated after source is created.
          default: <API_KEY>
        camel.source.snapshot.shopify.store.url:
          type: string
          description: >-
            Shopify store URL (e.g., https://yourstore.myshopify.com). Required
            for snapshots.
          default: ''
        camel.source.snapshot.shopify.client.id:
          type: string
          description: >-
            Client ID from your Shopify Dev Dashboard app (recommended). Tokens
            auto-refresh every 24 hours.
          default: ''
        camel.source.snapshot.shopify.client.secret:
          type: string
          format: password
          description: >-
            Client Secret from your Shopify Dev Dashboard app (recommended).
            Encrypted at rest.
          default: ''
        camel.source.snapshot.shopify.access.token:
          type: string
          format: password
          description: >-
            Static access token (legacy custom apps only). Provide either Client
            ID + Client Secret OR this Access Token.
          default: ''
        camel.source.snapshot.shopify.api.version:
          type: string
          description: Shopify Admin API version used by snapshots.
          default: 2024-10
        camel.source.payload.router.shopify.hmac.secret:
          type: string
          format: password
          description: >-
            Shopify app client secret used to verify the X-Shopify-Hmac-Sha256
            header. Leave empty to skip verification.
          default: ''
        topic.include.list.user.defined:
          type: string
          description: >-
            Shopify resources to capture. Each resource maps to a Kafka topic.
            Fan-out topics are added automatically when fan-out fields are
            configured.
          default: orders,products,customers
        camel.source.payload.router.unknown.type.behavior:
          type: string
          enum:
            - DEFAULT_TOPIC
            - SKIP
            - FAIL
          description: How to handle events for resources not in the Shopify Resources list
          default: DEFAULT_TOPIC
        camel.source.payload.router.unknown.type.default.topic:
          type: string
          description: >-
            Topic for events from unselected resources (used when Unselected
            Resource Behavior is DEFAULT_TOPIC)
          default: unknown
        camel.source.payload.router.include.event:
          type: boolean
          description: >-
            Include Shopify webhook metadata (_shop_domain, _event_id,
            _triggered_at, _api_version, _webhook_id) in output records. Disable
            for upsert / state-table use cases.
          default: false
        camel.source.payload.router.fanout.fields:
          type: string
          description: >-
            Comma-separated list of nested arrays to fan out into their own
            topics (e.g. orders.line_items, products.variants,
            customers.addresses). When empty, arrays stay inline.
          default: ''
        camel.source.dlq.enabled:
          type: boolean
          description: Enable dead letter queue for failed records
          default: true
    StripeSourceConfig:
      type: object
      title: Stripe
      description: Configuration properties for the Stripe source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        webhook.url:
          type: string
          description: >-
            Webhook URL to register in Stripe. Generated after source is
            created. Pass the API key as a query parameter, e.g.
            ?api_key=<API_KEY>.
          default: ''
        api.key:
          type: string
          description: >-
            API Key. Append to the Webhook URL as ?api_key=<API_KEY> when
            registering webhooks in Stripe. Generated after source is created.
          default: <API_KEY>
        camel.source.payload.router.stripe.signing.secret:
          type: string
          format: password
          description: >-
            Stripe webhook signing secret (whsec_xxx). When set, every webhook
            is verified against the Stripe-Signature header. Leave empty to
            disable verification.
          default: ''
        camel.source.snapshot.stripe.api.key:
          type: string
          format: password
          description: >-
            Stripe secret API key (sk_live_xxx or sk_test_xxx). Required for
            snapshots. Encrypted at rest.
          default: ''
        topic.include.list.user.defined:
          type: string
          description: >-
            Stripe resources to capture. Each resource maps to a Kafka topic.
            Fan-out topics are added automatically when fan-out fields are
            configured.
          default: customer,payment_intent,charge,invoice
        camel.source.payload.router.unknown.type.behavior:
          type: string
          enum:
            - DEFAULT_TOPIC
            - SKIP
            - FAIL
          description: How to handle events for resources not in the Stripe Resources list
          default: DEFAULT_TOPIC
        camel.source.payload.router.unknown.type.default.topic:
          type: string
          description: >-
            Topic for events from unselected resources (used when Unselected
            Resource Behavior is DEFAULT_TOPIC)
          default: unknown
        camel.source.payload.router.include.event:
          type: boolean
          description: >-
            Include Stripe event metadata (_event_id, _event_type,
            _event_created, _api_version, _livemode, _previous_attributes) on
            the output record. Disable for upsert / state-table use cases.
          default: true
        camel.source.payload.router.fanout.fields:
          type: string
          description: >-
            Comma-separated list of nested lists to fan out into their own
            topics. Allowed: invoice.lines, charge.refunds, subscription.items.
          default: ''
        camel.source.dlq.enabled:
          type: boolean
          description: Enable dead letter queue for failed records
          default: true
    SupabaseSourceConfig:
      type: object
      title: Supabase
      description: Configuration properties for the Supabase source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: >-
            PostgreSQL Hostname. For example,
            postgres.something.rds.amazonaws.com
        database.port.user.defined:
          type: string
          description: PostgreSQL Port. For example, 5432
          default: '5432'
        database.user:
          type: string
          description: Username to access the database
        database.password:
          type: string
          format: password
          description: Password to access the database
        database.dbname:
          type: string
          description: Database from which to stream data
        snapshot.read.only.user.defined:
          type: string
          enum:
            - 'Yes'
            - 'No'
          description: >-
            When connecting to a read replica PostgreSQL database, this must be
            set to 'Yes' to support Streamkap snapshots
          default: 'Yes'
        signal.data.collection.schema.or.database:
          type: string
          description: >-
            Full path to the signal table including schema and table name (e.g.,
            'public.streamkap_signal'). This table is used for incremental
            snapshotting. Follow the documentation for creating this table.
        column.include.list.toggled:
          type: boolean
          description: >-
            Toggle between Inclusion (include only selected columns) and
            Exclusion (exclude selected columns). Defaults to Inclusion (On).
          default: true
        column.include.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be included in
            change event record values. Fully-qualified names for columns are of
            the form schemaName[.]tableName[.](columnName1|columnName2)
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        heartbeat.enabled:
          type: boolean
          description: >-
            When enabled, the connector emits a periodic heartbeat to a Kafka
            topic — this keeps the poll loop active and offsets advancing on
            low-traffic sources, preventing replication-slot/log lag and
            false-positive health alerts. To also write to a
            'streamkap_heartbeat' table in the source database (keeps the source
            transaction log moving), set 'Heartbeat Table Schema' below; leave
            it blank for Kafka-only mode.
          default: true
        heartbeat.data.collection.schema.or.database:
          type: string
          description: >-
            Optional. The schema containing a 'streamkap_heartbeat' table —
            providing this enables source-table heartbeat mode, which writes to
            the table on each beat to keep the source transaction log active.
            Leave blank for Kafka-only heartbeat (no table or write grant
            required). See the Streamkap documentation for table setup.
        slot.name:
          type: string
          description: The name of the replication slot for the connector to use.
          default: streamkap_pgoutput_slot
        publication.name:
          type: string
          description: The name of the publication for the connector to use.
          default: streamkap_pub
        schema.include.list:
          type: string
          description: Schemas to include.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        post.processors:
          type: string
          enum:
            - reselector
          description: Post processors
          default: reselector
        database.sslmode:
          type: string
          enum:
            - require
            - disable
          description: Whether to use an encrypted connection to the PostgreSQL server
          default: require
        include.source.db.name.in.table.name.user.defined:
          type: boolean
          description: Changes the format of topics to 'DatabaseName_TopicName'
          default: false
        binary.handling.mode:
          type: string
          enum:
            - value: bytes
              label: Bytes
            - value: base64
              label: Base64
            - value: base64-url-safe
              label: Base64 (URL-safe)
            - value: hex
              label: Hex
          description: >-
            Specifies how the data for binary columns e.g. blob, binary,
            varbinary should be represented. This setting depends on what the
            destination is. See the documentation for more details.
          default: bytes
        transforms.InsertStaticKey1.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey1.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue1.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue1.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        transforms.InsertStaticKey2.static.field:
          type: string
          description: The name of the static field to be added to the message key.
        transforms.InsertStaticKey2.static.value:
          type: string
          description: The value of the static field to be added to the message key.
        transforms.InsertStaticValue2.static.field:
          type: string
          description: The name of the static field to be added to the message value.
        transforms.InsertStaticValue2.static.value:
          type: string
          description: The value of the static field to be added to the message value.
        predicates.IsTopicToEnrich.pattern:
          type: string
          description: Regex pattern to match topics for enrichment.
          default: $^
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - database.dbname
        - signal.data.collection.schema.or.database
        - slot.name
        - publication.name
        - schema.include.list
        - table.include.list.user.defined
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    VitessSourceConfig:
      type: object
      title: Vitess
      description: Configuration properties for the Vitess source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        database.hostname.user.defined:
          type: string
          description: IP address or hostname of the Vitess database server (VTGate).
        database.port.user.defined:
          type: string
          description: Integer port number of the Vitess database server (VTGate).
          default: '15991'
        database.user:
          type: string
          description: >-
            An optional username of the Vitess database server (VTGate). If not
            configured, unauthenticated VTGate gRPC is used.
        database.password:
          type: string
          format: password
          description: >-
            An optional password of the Vitess database server (VTGate). If not
            configured, unauthenticated VTGate gRPC is used.
        vitess.keyspace.user.defined:
          type: string
          description: The name of the keyspace from which to stream the changes.
        vitess.tablet.type:
          type: string
          enum:
            - MASTER
            - REPLICA
            - RDONLY
          description: The type of Tablet (hence MySQL) from which to stream the changes
          default: MASTER
        vitess.vtctld.host.user.defined:
          type: string
          description: IP address or hostname of the VTCtld server.
        vitess.vtctld.port.user.defined:
          type: string
          description: Integer port number of the VTCtld server.
          default: '15999'
        vitess.vtctld.user:
          type: string
          description: The username of the VTCtld server.
        vitess.vtctld.password:
          type: string
          format: password
          description: The password of the VTCtld database server.
        table.include.list.user.defined:
          type: string
          description: Source tables to sync.
        ssh.enabled:
          type: boolean
          description: >-
            <span>Streamkap will connect to SSH server in your network which has
            access to your database. This is necessary if Streamkap cannot
            connect directly to your database. <a
            href='https://docs.streamkap.com/streamkap-ip-addresses#streamkap-ip-addresses'
            class='docs-url' target='_blank'>View the Streamkap IP addresses to
            allowlist on your SSH server</a> </span>
          default: false
        ssh.host:
          type: string
          description: Hostname of your SSH server
        ssh.port:
          type: string
          description: Port of your SSH server
          default: '22'
        ssh.user:
          type: string
          description: User that allows Streamkap to connect to SSH server
          default: streamkap
        column.exclude.list.user.defined:
          type: string
          description: >-
            An optional, comma-separated list of regular expressions that match
            the fully-qualified names of columns that should be excluded from
            change event record values. Fully-qualified names for columns are of
            the form schemaName.tableName.columnName.
        ssh.public.key.user.displayed:
          type: string
          description: Public key to add to SSH server
          default: >-
            ssh-ed25519
            AAAAC3NzaC1lZDI1NTE5AAAAIJVbRrHqNN3SyIYnNF46SMd+ArZz+QheAtjnQzKiBWrc
      required:
        - database.hostname.user.defined
        - database.port.user.defined
        - database.user
        - database.password
        - vitess.keyspace.user.defined
        - vitess.vtctld.host.user.defined
        - vitess.vtctld.port.user.defined
        - vitess.vtctld.user
        - vitess.vtctld.password
        - table.include.list.user.defined
        - ssh.host
        - ssh.port
        - ssh.user
        - ssh.public.key.user.displayed
    WebhookSourceConfig:
      type: object
      title: Webhook
      description: Configuration properties for the Webhook source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        webhook.url:
          type: string
          description: Webhook URL. This URL will be generated after the source is created
          default: ''
        api.key:
          type: string
          description: API. This key will be generated after the source is created
          default: <API_KEY>
        camel.source.camelMessageHeaderKey:
          type: string
          description: >-
            Camel Message Header contains key field details for Kafka Message,
            default is 'key'
          default: key
        topic.include.list.user.defined:
          type: string
          description: Topic names to use as output
          default: default_topic
        format:
          type: string
          enum:
            - json
            - string
          description: The incoming format of the data receive by webhook
          default: json
        transforms.inferSchema.add.delete.field:
          type: boolean
          description: >-
            Whether to add a 'delete' field to the schema when DELETE HTTP
            method is used
          default: false
    Zendesk WebhookSourceConfig:
      type: object
      title: Zendesk Webhook
      description: Configuration properties for the Zendesk Webhook source connector.
      properties:
        transforms.ValueToKey.fields.include.list:
          type: string
          description: >-
            Move column(s) from value to key. Comma separated list of table
            columns in format 'table1.column1,table2.column2'
        transforms.ValueToKey.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        preserve.null.values:
          type: boolean
          description: >-
            When enabled, preserves NULL values from the source database instead
            of replacing them with schema default values. Enable this if you
            need to distinguish between explicit NULLs and default values.
          default: false
        transforms.OversizedRecords.fields.include.list:
          type: string
          description: >-
            Truncate or nullify oversized string fields. Comma separated list of
            table columns in format 'table1.column1,table2.column2'. Supports
            wildcards (e.g., 'mytable.*'). WARNING: Do not include primary key
            columns - truncation/nullification could cause data loss or
            failures.
        transforms.OversizedRecords.fields.exclude.list:
          type: string
          description: >-
            Columns to exclude from oversized records processing. Comma
            separated list in format 'table1.column1,table2.column2'.
        transforms.OversizedRecords.max.field.size.bytes:
          type: integer
          minimum: 1048576
          maximum: 104857600
          description: >-
            Maximum allowed byte size per field. Fields exceeding this size will
            be truncated or nullified. Required when using Oversized Records
            transform.
          default: 1048576
        transforms.OversizedRecords.oversized.field.behavior:
          type: string
          enum:
            - TRUNCATE
            - NULLIFY
          description: >-
            Action for oversized fields: TRUNCATE (trim to max size) or NULLIFY
            (set to null).
          default: TRUNCATE
        transforms.OversizedRecords.truncation.suffix:
          type: string
          description: >-
            Suffix to append to truncated values (e.g., '...[TRUNCATED]'). Leave
            empty for no suffix.
          default: ''
        transforms.OversizedRecords.max.record.size.bytes:
          type: integer
          minimum: -1
          maximum: 104857600
          description: >-
            Optional overall record size limit in bytes. Records are NOT dropped
            - only a warning is logged if record exceeds this after field
            processing. Set to -1 to disable.
          default: -1
        transforms.OversizedRecords.semantic.types.exclude:
          type: string
          description: >-
            Column data types that should never be truncated. Comma-separated.
            Defaults exclude JSON and XML columns.
          default: io.debezium.data.Json,io.debezium.data.Xml
        transforms.OversizedRecords.replace.null.with.default:
          type: boolean
          description: >-
            Whether null fields should use schema default values. Set to false
            to preserve user-set NULLs from source.
          default: true
        InsertTopicName.enabled:
          type: boolean
          description: >-
            Add _streamkap_topic field containing the Kafka topic name. Required
            for topic_router transforms to preserve end-to-end data lineage.
          default: false
        webhook.url:
          type: string
          description: Webhook URL. This URL will be generated after the source is created
          default: ''
        api.key:
          type: string
          format: password
          description: API Key. This key will be generated after the source is created
          default: <API_KEY>
        camel.source.payload.router.unknown.type.behavior:
          type: string
          enum:
            - DEFAULT_TOPIC
            - SKIP
            - FAIL
          description: Behavior when an unknown Zendesk event type is encountered
          default: DEFAULT_TOPIC
        camel.source.payload.router.unknown.type.default.topic:
          type: string
          description: >-
            Topic name for unknown event types (used when Unknown Event Behavior
            is DEFAULT_TOPIC)
          default: unknown
        camel.source.payload.router.flatten.detail:
          type: boolean
          description: >-
            Flatten nested detail fields to top-level with a prefix. Recommended
            for destinations that do not support nested objects.
          default: false
        camel.source.payload.router.flatten.detail.prefix:
          type: string
          description: >-
            Prefix for flattened detail fields to avoid name collisions (e.g.
            detail.id becomes detail_id)
          default: detail_
        camel.source.payload.router.include.event:
          type: boolean
          description: >-
            Include the event field in output records. Enable for audit-log use
            cases (append mode). Disable for state-table use cases (upsert mode)
            where only the entity state matters.
          default: true
        camel.source.payload.router.fanout.fields:
          type: string
          description: >-
            Comma-separated list of domain-scoped fields to fan out into
            separate topics (e.g. ticket.tags, ticket.custom_fields,
            organization.tags). When empty, arrays stay inline.
          default: ''
        camel.source.dlq.enabled:
          type: boolean
          description: >-
            Enable dead letter queue. Failed records are written to a DLQ topic
            instead of crashing the connector.
          default: false
    EntityOriginEnum:
      type: string
      enum:
        - terraform
        - web
        - api
      title: EntityOriginEnum
      description: |-
        Origin of an entity in the system.

        Tracks how entities (sources, destinations, pipelines) were created,
        enabling audit trails and origin-specific behavior.
    DesiredStateEnum:
      type: string
      enum:
        - Pending
        - Active
        - Paused
        - Stopped
        - Pending Update
        - Pending Delete
      title: DesiredStateEnum
      description: >-
        Desired state for sources and destinations.


        Represents the target state for the connector:

        - PENDING: Configuration saved, not yet deployed

        - ACTIVE: Connector should be running (default for existing connectors)

        - PAUSED: Connector should be paused

        - STOPPED: Connector should be stopped

        - PENDING_UPDATE: Config saved to MongoDB, KC update deferred to
        reconciler

        - PENDING_DELETE: Marked for deletion, KC teardown deferred to
        reconciler
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    FronteggHTTPAuthentication:
      type: http
      scheme: bearer

````