{
    "connector.class": "org.neo4j.connectors.kafka.sink.Neo4jConnector",
    "tasks.max": "{{ env['MAX_TASKS'] }}",
    "offset.flush.interval.ms": "{{ env['OFFSET_FLUSH_INTERVAL'] }}",
    "offset.flush.timeout.ms": "{{ env['OFFSET_FLUSH_TIMEOUT'] }}",
    "neo4j.batch-timeout": "{{ env['NEO4J_BATCH_EXEC_TIMEOUT'] }}",
    "neo4j.batch-size": "{{ env['NEO4J_BATCH_SIZE'] }}",
    "neo4j.max-batched-queries": "{{ env['NEO4J_MAX_BATCHED_QUERIES'] }}",
    "neo4j.max-retry-time": "{{ env['NEO4J_RETRY_TIME'] }}",
    "consumer.override.auto.offset.reset": "{{ env['START_READING_RECORDS_FROM'] }}",
    "neo4j.uri": "{{ env['NEO4J_SERVER_URI'] }}",
    "neo4j.database": "{{ env['NEO4J_DATABASE_NAME'] }}",
    "neo4j.authentication.type": "BASIC",
    {% if env['AWS_SECRETS_MANAGER'] == 'true' -%}
    "neo4j.authentication.basic.username": "${aws:{{ env['Environment'] }}/{{ env['SERVICE_NAME'] }}/NEO4J_CREDENTIALS:username}",
    "neo4j.authentication.basic.password": "${aws:{{ env['Environment'] }}/{{ env['SERVICE_NAME'] }}/NEO4J_CREDENTIALS:password}",
    "config.providers": "aws",
    "config.providers.aws.class": "io.lenses.connect.secrets.providers.AWSSecretProvider",
    "config.providers.aws.param.aws.auth.method": "default",
    "config.providers.aws.param.aws.access.key": "dummy-client-key",
    "config.providers.aws.param.aws.secret.key": "dummy-secret-key",
    "config.providers.aws.param.aws.region": "{{ env['AWS_REGION'] }}",
    {% else -%}
    "neo4j.authentication.basic.username": "{{ env['NEO4J_USERNAME'] }}",
    "neo4j.authentication.basic.password": "{{ env['NEO4J_PASSWORD'] }}",
    {% endif -%}
    "neo4j.encryption.enabled": "{{ env['NEO4J_ENCRYPTION_ENABLED'] }}",

    {% set all_topics = [] -%}

    {% if env['SYNC_SCHEMA_TOPICS'] -%}
        "neo4j.cdc.schema.topics": "{{ env['SYNC_SCHEMA_TOPICS'] }}",
        "topics":  "{{ env['SYNC_SCHEMA_TOPICS'] }}",
    {% elif env['SYNC_SOURCE_ID_TOPICS'] -%}
        "neo4j.cdc.source-id.topics": "{{ env['SYNC_SOURCE_ID_TOPICS'] }}",
        "neo4j.cdc.source-id.label-name": "V4Source",
        "neo4j.cdc.source-id.property-name": "v4SourceId",
        "topics":  "{{ env['SYNC_SOURCE_ID_TOPICS'] }}",
    {% else -%}
        {% set topic_mapping_props = env_to_props('TOPIC_MAPPING_', '') -%}
        {% for key, value in topic_mapping_props.items() -%}
        {% set topic, cypher = value.split('|', 1) -%}
        {% set _ = all_topics.append(topic) -%}
            "neo4j.cypher.topic.{{topic}}": "{{cypher}}",
        {% endfor -%}
        "topics":  "{{ all_topics|join(',') }}",
    {% endif -%}

    {% if env['NEO4J_EOS_OFFSET_LABEL'] -%}
        "neo4j.eos-offset-label": "{{ env['NEO4J_EOS_OFFSET_LABEL'] }}",
    {% endif -%}

    "neo4j.cypher.bind-value-as-event": true,
    "key.converter": "{{ env['NEO4J_KEY_CONVERTER'] }}",
    "value.converter": "{{ env['NEO4J_VALUE_CONVERTER'] }}",
    "key.converter.schemas.enable": "{{ env['NEO4J_KEY_CONVERTER_SCHEMAS_ENABLE'] }}",
    "value.converter.schemas.enable": "{{ env['NEO4J_VALUE_CONVERTER_SCHEMAS_ENABLE'] }}",
    {% if env['CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL'] -%}
    "value.converter.schema.registry.url": "{{ env['CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL'] }}",
    {% endif -%}

    "errors.tolerance": "all",
    {% if env['DLQ_TOPIC_NAME'] -%}
    "errors.deadletterqueue.topic.name": "{{ env['DLQ_TOPIC_NAME'] }}",
    "errors.deadletterqueue.context.headers.enable": "true",
    "kafka.bootstrap.servers":"{{ env['CONNECT_BOOTSTRAP_SERVERS'] }}",
    "kafka.security.protocol":"{{ env['CONNECT_SECURITY_PROTOCOL'] }}",
    {% endif -%}

    {% if env['CHANGE_OPERATION'] -%}
    "transforms" : "changeoperation",
    "transforms.changeoperation.type": "com.github.pde.kafka.connect.smt.ChangeOperation$Value",
    "transforms.changeoperation.uuid.field.value": "created",
    {% endif -%}

    "errors.log.enable": "{{ env['ERRORS_LOG_ENABLE'] or 'true' }}",
    "errors.log.include.messages": "{{ env['ERRORS_LOG_INCLUDE_MESSAGES'] or 'true' }}",
    "errors.retry.timeout": "-1",
    "errors.retry.delay.max.ms": "1000"
}
