// Metadata created by nebel
// ParentAssemblies: assemblies/getting-started/assembly-using-the-registry-sdk.adoc

[id="registry-sdk-config_{context}"]
= {registry} Java SDK configuration

[role="_abstract"]
The {registry} Java client includes the following configuration options, based on the client factory:

.{registry} Java client configuration options
[%header,cols="1,2,1"]
|===
|Option
|Description
|Arguments
|Plain client
|Basic REST client used to interact with a running {registry}.
|`baseUrl`
|Client with custom configuration
|{registry} client using the configuration provided by the user. 
|`baseUrl`, `Map<String Object> configs`
|Client with custom configuration and authentication
|{registry} client that accepts a map containing custom configuration. For example, this is useful to add custom headers to the calls. 
You must also provide an authentication server to authenticate the requests. 
|`baseUrl, Map<String Object> configs, Auth auth`
|===

[discrete]
== Custom header configuration
To configure custom headers, you must add the `apicurio.registry.request.headers` prefix to the `configs` map key. For example, a `configs` map key of `apicurio.registry.request.headers.Authorization` with a value of `Basic: YWxhZGRpbjpvcGVuc2VzYW1` sets the `Authorization` header with the same value.


[discrete]
== TLS configuration options
You can configure Transport Layer Security (TLS) authentication for the {registry} Java client using the following properties:

* `apicurio.registry.request.ssl.truststore.location`
* `apicurio.registry.request.ssl.truststore.password`
* `apicurio.registry.request.ssl.truststore.type`
* `apicurio.registry.request.ssl.keystore.location`
* `apicurio.registry.request.ssl.keystore.password`
* `apicurio.registry.request.ssl.keystore.type`
* `apicurio.registry.request.ssl.key.password`


[role="_additional-resources"]
.Additional resources
* For details on how to configure authentication for {registry} Kafka client serializers/deserializers (SerDes), see 
{kafka-client-serdes}.