# CREATE SCHEMA\_REGISTRY

## Syntax <a href="#synopsis" id="synopsis"></a>

```sql
CREATE SCHEMA_REGISTRY schema_registry_name
WITH (schema_registry_parameter = value [, ... ]);
```

### Description

[Schema registries](/overview/core-concepts/store.md#schema-registry) are useful for storing and managing the many schemas that may define a user's data streams. These schemas are necessary for a system to marshal and unmarshal records and ensure the native data format matches the intended format. After you create a schema registry, look at how to [UPDATE STORE](/reference/sql-syntax/ddl/update-store.md) to attach the schema registry to a [store](/overview/core-concepts/store.md). The newly-created schema registry is accessible to the creator as well as anyone who has been given permissions.

Only a [role](https://docs.deltastream.io/overview/core-concepts/access-control#_role) with [`CREATE_SCHEMA_REGISTRY`](/overview/core-concepts/access-control.md#privilege) privilege can create a schema registry.

{% hint style="info" %}
**Notes**

* A schema registry is required for working with Avro data.
* Currently supported schema registries are Confluent Cloud and Confluent Platform.
* Known limitation: Confluent Schema Registry must use the default [TopicNameStrategy](https://docs.confluent.io/platform/current/schema-registry/fundamentals/serdes-develop/index.html#subject-name-strategy) for creating subject names.
  {% endhint %}

### Arguments

#### schema\_registry\_name

Specifies the name of the new schema registry. If the name is case-sensitive, you must wrap it in double quotes; otherwise, the system uses the lower case name.

#### WITH (schema\_registry\_parameter = value \[, …​ ])

This clause specifies schema registry parameters; see [schema registry parameters](#schema-registry-parameters) below for more information.

### Schema Registry Parameters

| Parameter Name    | Description                                                                                                                                                                                                                                                                                                      |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`            | <p>Type of schema registry.<br></p><p><strong>Required:</strong> Yes<br><strong>Type:</strong> <code>SCHEMA\_REGISTRY\_TYPE</code><br><strong>Valid values:</strong> <code>CONFLUENT</code>, <code>CONFLUENT\_CLOUD</code></p>                                                                                   |
| `access_region`   | <p>Region in which the schema registry resides.<br></p><p><strong>Required:</strong> Yes, unless specified in <code>properties.file</code><br><strong>Type:</strong> String<br><strong>Valid values:</strong> See <a href="/pages/dqmTShTXTtD4hHXCMHxo">LIST REGIONS</a></p>                                     |
| `uris`            | <p>List of comma-separated <code>host:port</code> URIs to connect to the schema registry.<br></p><p><strong>Required:</strong> Yes, unless specified in <code>properties.file</code><br><strong>Type:</strong> String<br><strong>Valid values:</strong> Valid URI that corresponds with the schema registry.</p> |
| `properties.file` | <p>Optional. The file path to a .yaml file containing other schema registry parameters.<br></p><p><strong>Required:</strong> No<br><strong>Default value:</strong> None<br><strong>Type:</strong> String<br><strong>Valid values:</strong> File path in current user's filesystem</p>                            |

### Confluent Cloud Schema Registry Specific Parameters

| Parameter Name           | Description                                                                                                                                                                                                                                                                                                |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `confluent_cloud.key`    | <p>Credentials key for the Confluent Cloud schema registry.<br></p><p><strong>Required:</strong> No<br><strong>Default:</strong> None<br><strong>Type:</strong> String<br><strong>Valid values:</strong> The key corresponding with the credential key pair associated with the schema registry.</p>       |
| `confluent_cloud.secret` | <p>Credentials secret for the Confluent Cloud schema registry.<br></p><p><strong>Required:</strong> No<br><strong>Default:</strong> None<br><strong>Type:</strong> String<br><strong>Valid values:</strong> The secret corresponding with the credential key pair associated with the schema registry.</p> |

### Confluent Platform Schema Registry Specific Parameters

| Parameter Name         | Description                                                                                                                                                                                     |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `confluent.username`   | <p>Login username for the Confluent Platform schema registry.<br><br><strong>Required:</strong> No<br><strong>Default:</strong> None<br><strong>Type:</strong> String</p>                       |
| `confluent.password`   | <p>Login password for the Confluent Platform schema registry.<br><br><strong>Required:</strong> No<br><strong>Default:</strong> None<br><strong>Type:</strong> String</p>                       |
| `tls.client.cert_file` | <p>File path to client certificate for mutual TLS authentication in PEM format.<br><br><strong>Required:</strong> No<br><strong>Default:</strong> None<br><strong>Type:</strong> String</p>     |
| `tls.client.key_file`  | <p>File path to client certificate key for mutual TLS authentication in PEM format.<br><br><strong>Required:</strong> No<br><strong>Default:</strong> None<br><strong>Type:</strong> String</p> |

## Examples

#### Create a Confluent Cloud Schema Registry

The following example statement creates a new `CONFLUENT_CLOUD` schema registry named `ConfluentCloudSR`:

```sh
<no-db>/<no-store># CREATE SCHEMA_REGISTRY "ConfluentCloudSR" WITH (
    'type' = CONFLUENT_CLOUD,
    'access_region' = "AWS us-east-1",
    'uris' = 'https://abcd-efghi.us-east-2.aws.confluent.cloud',
    'confluent_cloud.key' = 'fake_key',
    'confluent_cloud.secret' = 'fake_secret'
);
+-----------------+------------------+------------+------------------------------------------+
|  Type           |  Name            |  Command   |  Summary                                 |
+=================+==================+============+==========================================+
| schema registry | ConfluentCloudSR | CREATE     | schema registry "ConfluentCloudSR" was   |
|                 |                  |            | successfully created                     |
+-----------------+------------------+------------+------------------------------------------+
```

#### Create a Confluent Platform Schema Registry

The following example statement creates a new `CONFLUENT` schema registry named `ConfluentPlatformSR`:

```sh
<no-db>/<no-store># CREATE SCHEMA_REGISTRY "ConfluentPlatformSR" WITH (
    'type' = CONFLUENT,
    'access_region' = "AWS us-east-1",
    'uris' = 'https://url.to.schema.registry.listener:8081',
    'confluent.username' = 'fake_username',
    'confluent.password' = 'fake_password',
    'tls.client.cert_file' = '@/path/to/tls/client_cert_file',
    'tls.client.key_file' = '@/path/to/tls_key'
);
+-----------------+---------------------+------------+------------------------------------------+
|  Type           |  Name               |  Command   |  Summary                                 |
+=================+=====================+============+==========================================+
| schema registry | ConfluentPlatformSR | CREATE     | schema registry "ConfluentPlatformSR"    |
|                 |                     |            | was successfully created                 |
+-----------------+---------------------+------------+------------------------------------------+

```

#### Create a schema registry with credentials from a file

The following creates a new `CONFLUENT_CLOUD` schema registry named `ConfluentCloudSR`:

```sh
$ cat /User/user1/schema_registry/cc/properties.yaml
access_region: "AWS us-east-2"
uris: "https://abcd-efghi.us-east-2.aws.confluent.cloud"
confluent_cloud.key: "SR_KEY"
confluent_cloud.secret: "SR_SECRET"
```

```sql
CREATE SCHEMA_REGISTRY "ConfluentCloudSR" WITH (
    'type' = CONFLUENT_CLOUD,
    'properties.file' = '@/User/user1/schema_registry/cc/properties.yaml'
);
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.deltastream.io/reference/sql-syntax/ddl/create-schema_registry.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
