// Metadata created by nebel

[id="registry-overview"]
= {registry} overview

[role="_abstract"]
{registry} is a datastore for sharing standard event schemas and API designs across API and event-driven architectures. You can use {registry} to decouple the structure of your data from your client applications, and to share and manage your data types and API descriptions at runtime using a REST interface.

For example, client applications can dynamically push or pull the latest schema updates to or from {registry} at runtime without needing to redeploy. Developer teams can query the registry for existing schemas required for services already deployed in production, and can register new schemas required for new services in development.  

You can enable client applications to use schemas and API designs stored in {registry} by specifying the registry URL in your client application code. For example, the registry can store schemas used to serialize and deserialize messages, which can then be referenced from your client applications to ensure that the messages that they send and receive are compatible with those schemas.

Using {registry} to decouple your data structure from your applications reduces costs by decreasing overall message size, and creates efficiencies by increasing consistent reuse of schemas and API designs across your organization. 
{registry} provides a web console to make it easy for developers and administrators to manage registry content.

In addition, you can configure optional rules to govern the evolution of your registry content. For example, these include rules to ensure that uploaded content is syntactically and semantically valid, or is backwards and forwards compatible with other versions. Any configured rules must pass before new versions can be uploaded to the registry, which ensures that time is not wasted on invalid or incompatible schemas or API designs.   

ifdef::rh-service-registry[]

{registry} is based on the Apicurio Registry open source community project. For details, see https://github.com/apicurio/apicurio-registry. 

[IMPORTANT]
====
{registry} is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. 

These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see https://access.redhat.com/support/offerings/techpreview.
====

endif::[]

[discrete]
== {registry} capabilities

* Support for multiple payload formats for standard event schemas and API specifications 

ifdef::rh-service-registry[]
* Pluggable registry storage options in AMQ Streams or PostgreSQL database 
endif::[]
ifdef::apicurio-registry[]
* Pluggable registry storage options in Apache Kafka or PostgreSQL database 
endif::[]

* Registry content management using a web console, REST API command, Maven plug-in, or Java client

* Rules for content validation and version compatibility to govern how registry content evolves over time

* Full Apache Kafka schema registry support, including integration with Kafka Connect for external systems 

* Kafka client serializers/deserializers (Serdes) to validate message types at runtime

* Cloud-native Quarkus Java runtime for low memory footprint and fast deployment times

* Compatibility with existing Confluent or IBM schema registry client applications

* Operator-based installation of {registry} on OpenShift

* Support for OpenID Connect (OIDC) authentication using {keycloak}
