Validate a Managed Connector Plugin
PUT/connect/v1/environments/:environment_id/clusters/:kafka_cluster_id/connector-plugins/:plugin_name/config/validate
Validate the provided configuration values against the configuration definition. This API performs per config validation and returns suggested values and validation error messages.
Request
Responses
- 200
- 401
- 404
- 429
- 500
Connector Plugin.
Unauthorized
Not Found
Rate Limit Exceeded
Response Headers
The unique identifier for the API request.
The maximum number of requests you're permitted to make per time period.
The number of requests remaining in the current rate limit window.
The relative time in seconds until the current rate-limit window resets.
Important: This differs from Github and Twitter's same-named header which uses UTC epoch seconds. We use relative time to avoid client/server time synchronization issues.
The number of seconds to wait until the rate limit window resets. Only sent when the rate limit is reached.
Internal Server Error
OpenAPI definition (YAML)
paths:
/connect/v1/environments/{environment_id}/clusters/{kafka_cluster_id}/connector-plugins/{plugin_name}/config/validate:
put:
x-lifecycle-stage: General Availability
operationId: validateConnectv1ConnectorPlugin
description: '[](#section/Versioning/API-Lifecycle-Policy)
Validate the provided configuration values against the configuration definition. This API performs
per config validation and returns suggested values and validation error messages.'
tags:
- Managed Connector Plugins (connect/v1)
security:
- cloud-api-key: []
- confluent-sts-access-token: []
responses:
'200':
description: Connector Plugin.
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The class name of the connector plugin.
groups:
type: array
description: The list of groups used in configuration definitions.
items:
type: string
error_count:
type: integer
description: The total number of errors encountered during configuration validation.
configs:
type: array
items:
type: object
properties:
definition:
type: object
description: The definition for a config in the connector plugin, which includes
the name, type, importance, etc.
properties:
name:
type: string
description: The name of the configuration
type:
type: string
enum:
- NONE
- BOOLEAN
- INT
- SHORT
- LONG
- DOUBLE
- STRING
- LIST
- ENUM
- PASSWORD
description: The config types
required:
type: boolean
description: Whether this configuration is required
default_value:
type: string
description: Default value for this configuration
importance:
type: string
enum:
- NONE
- HIGH
- MEDIUM
- LOW
description: The importance level for a configuration
documentation:
type: string
description: The documentation for the configuration
group:
type: string
description: The UI group to which the configuration belongs to
width:
type: string
enum:
- NONE
- SHORT
- MEDIUM
- LONG
description: The width of a configuration value
display_name:
type: string
dependents:
type: array
description: Other configurations on which this configuration is dependent
items:
type: string
order:
type: integer
description: The order of configuration in specified group
alias:
type: string
value:
type: object
description: The current value for a config, which includes the name, value,
recommended values, etc.
properties:
name:
type: string
description: The name of the configuration
value:
type: string
description: The value for the configuration
recommended_values:
type: array
description: The list of valid values for the configuration
items:
type: string
errors:
type: array
description: Errors, if any, in the configuration value
items:
type: string
visible:
type: boolean
description: 'The visibility of the configuration. Based on the values of
other configuration
fields, this visibility boolean value points out if the current field
should be
visible or not.'
metadata:
type: object
description: 'Map of metadata details about the connector configuration, such
as type of
input, etc.'
example:
name: io.confluent.connect.gcs.GcsSinkConnector
groups:
- Organize my data by...
- Which topics do you want to get data from?
- Messages
- How should we connect to your data?
- Google Cloud Storage details
- Kafka Cluster credentials
- Number of tasks for this connector
error_count: 1
configs:
- definition:
name: name
type: STRING
required: true
default_value: ''
importance: HIGH
documentation: Sets a name for your connector.
group: How should we connect to your data?
width: NONE
display_name: Connector name
dependents: []
order: 2
alias: ''
value:
name: name
value: '{{.logicalClusterId}}'
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: connector.class
type: STRING
required: true
default_value: ''
importance: HIGH
documentation: ''
group: How should we connect to your data?
width: NONE
display_name: Connector class
dependents: []
order: 1
alias: ''
value:
name: connector.class
value: io.confluent.connect.gcs.GcsSinkConnector
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: kafka.api.key
type: PASSWORD
required: true
default_value: ''
importance: HIGH
documentation: ''
group: Kafka Cluster credentials
width: NONE
display_name: Kafka API Key
dependents: []
order: 1
alias: ''
value:
name: kafka.api.key
value: ''
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: kafka.api.secret
type: PASSWORD
required: true
default_value: ''
importance: HIGH
documentation: ''
group: Kafka Cluster credentials
width: NONE
display_name: Kafka API Secret
dependents:
- kafka.api.key
order: 2
alias: ''
value:
name: kafka.api.secret
value: ''
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: topics
type: LIST
required: true
default_value: ''
importance: HIGH
documentation: Identifies the topic name or a comma-separated list of topic names.
group: Which topics do you want to get data from?
width: NONE
display_name: Topic names
dependents: []
order: 1
alias: ''
value:
name: topics
value: test1
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: data.format
type: STRING
required: true
default_value: ''
importance: HIGH
documentation: Sets the input/output message format. Valid entries are AVRO, JSON,
or BYTES
group: Messages
width: NONE
display_name: Message format
dependents: []
order: 1
alias: ''
value:
name: data.format
value: BYTES
recommended_values:
- BYTES
- JSON
- AVRO
errors: []
visible: true
metadata: {}
- definition:
name: gcs.credentials.config
type: PASSWORD
required: true
default_value: ''
importance: HIGH
documentation: Contents of the downloaded GCP service account JSON file.
group: Google Cloud Storage details
width: NONE
display_name: Google Cloud Storage credentials.
dependents: []
order: 1
alias: ''
value:
name: gcs.credentials.config
value: ''
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: gcs.bucket.name
type: STRING
required: true
default_value: ''
importance: HIGH
documentation: A Google Cloud Storage bucket must be in the same region as your Confluent
Cloud cluster.
group: Google Cloud Storage details
width: NONE
display_name: Bucket name.
dependents: []
order: 2
alias: ''
value:
name: gcs.bucket.name
value: gmagare
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: time.interval
type: STRING
required: true
default_value: ''
importance: HIGH
documentation: Sets how your messages grouped in storage. Valid entries are DAILY
or HOURLY.
group: Organize my data by...
width: NONE
display_name: Time interval
dependents: []
order: 1
alias: ''
value:
name: time.interval
value: DAILY
recommended_values:
- DAILY
- HOURLY
errors: []
visible: true
metadata: {}
- definition:
name: tasks.max
type: INT
required: true
default_value: ''
importance: HIGH
documentation: ''
group: Number of tasks for this connector
width: NONE
display_name: Tasks
dependents: []
order: 1
alias: ''
value:
name: tasks.max
value: '1'
recommended_values: []
errors: []
visible: true
metadata: {}
- definition:
name: flush.size
type: INT
required: true
default_value: '1000'
importance: HIGH
documentation: This value defaults to 1000. For example, if you use the default setting
of 1000 and your topic has six partitions, files start to be created in the storage
bucket after more than 1000 records exist in each partition. Note that the default
value of 1000 can be increased if needed.
group: Organize my data by...
width: NONE
display_name: Flush size
dependents: []
order: 2
alias: ''
value:
name: flush.size
value: '1'
recommended_values: []
errors:
- '"flush.size" should be greater than or equal to 1000'
visible: true
metadata: {}
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
error:
type: object
description: Connector Error with error code and message.
properties:
code:
type: integer
description: Error code for the type of error
message:
type: string
description: Human readable error message
title: connect.v1.ConnectorError
example:
error:
code: 401
message: Unauthorized
'404':
description: Not Found
content:
application/json:
schema:
type: object
properties:
error:
type: object
description: Connector Error with error code and message.
properties:
code:
type: integer
description: Error code for the type of error
message:
type: string
description: Human readable error message
title: connect.v1.ConnectorError
example:
error:
code: 404
message: resource not found
'429':
description: Rate Limit Exceeded
headers:
X-Request-Id:
schema:
type: string
description: The unique identifier for the API request.
X-RateLimit-Limit:
schema:
type: integer
description: The maximum number of requests you're permitted to make per time period.
X-RateLimit-Remaining:
schema:
type: integer
description: The number of requests remaining in the current rate limit window.
X-RateLimit-Reset:
schema:
type: integer
description: "The relative time in seconds until the current rate-limit window resets. \
\ \n \n**Important:** This differs from Github and Twitter's same-named header which\
\ uses UTC epoch seconds. We use relative time to avoid client/server time synchronization\
\ issues."
Retry-After:
schema:
type: integer
description: The number of seconds to wait until the rate limit window resets. Only sent
when the rate limit is reached.
'500':
description: Internal Server Error
content:
application/json:
schema:
type: object
properties:
error:
type: object
description: Connector Error with error code and message.
properties:
code:
type: integer
description: Error code for the type of error
message:
type: string
description: Human readable error message
title: connect.v1.ConnectorError
example:
error:
code: 500
message: Oops, something went wrong
requestBody:
content:
application/json:
schema:
type: object
description: Configuration parameters for the connector. All values should be strings.
additionalProperties:
type: string
description: Other configuration parameters for the connector. All values should be strings.
See the connector's docs for the list of options.
example:
cloud.environment: prod
cloud.provider: aws
connector.class: GcsSink
data.format: BYTES
flush.size: '500'
gcs.bucket.name: APILogsBucket
gcs.credentials.config: '****************'
kafka.api.key: '****************'
kafka.api.secret: '****************'
kafka.endpoint: SASL_SSL://pkc-xxxxx.us-west-2.aws.confluent.cloud:9092
kafka.region: us-west-2
name: MyGcsLogsBucketConnector
tasks.max: '2'
time.interval: DAILY
topics: APILogsTopic
description: Configuration parameters for the connector. All values should be strings.
parameters:
- name: plugin_name
in: path
schema:
type: string
required: true
description: The unique name of the connector plugin.
- name: environment_id
in: path
schema:
type: string
required: true
description: The unique identifier of the environment this resource belongs to.
- name: kafka_cluster_id
in: path
schema:
type: string
required: true
description: The unique identifier for the Kafka cluster.
servers:
- url: https://api.confluent.cloud
description: Confluent Cloud API
jsonRequestBodyExample: {}