---
swagger: '2.0'
info:
  title: Redpanda Schema Registry API
  version: 1.2.0
  description: |
    Manage schemas within a Redpanda cluster.

    See also:

    - [Use Redpanda Cloud with the Schema Registry API](https://docs.redpanda.com/redpanda-cloud/manage/schema-reg/schema-reg-api/)
    - [Use Redpanda Self-Managed with the Schema Registry API](https://docs.redpanda.com/current/manage/schema-reg/schema-reg-api/)

    Schema Registry contexts (available in Redpanda version 26.1 or later) provide an isolated namespace for schemas, subjects, and configuration. You can use a context-qualified subject anywhere the API accepts a subject. In Redpanda Cloud, contexts are configurable only in BYOC and Dedicated clusters. See the [Redpanda Cloud](https://docs.redpanda.com/redpanda-cloud/manage/schema-reg/schema-reg-contexts/) or [Redpanda Self-Managed](https://docs.redpanda.com/current/manage/schema-reg/schema-reg-contexts/) documentation for details.
  x-feedbackLink:
    label: Share feedback
    url: https://github.com/redpanda-data/docs/issues/new?template=01_doc_request.yml
host: localhost:8081
basePath: "/"
schemes:
- http
paths:
  "/config/{subject}":
    get:
      summary: Get the compatibility level for a subject.
      operationId: get_config_subject
      parameters:
      - name: subject
        description: 'The subject to get the config for. Use [:.<context>:]<subject>
          for context-qualified subjects, or just <subject> for the default context.
          Use :.<context>: for context-level config.'
        in: path
        required: true
        type: string
      - name: defaultToGlobal
        description: If true, return the global compatibility level if the subject
          doesn't have a level set.
        in: query
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/get_compatibility"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    put:
      summary: Set the compatibility level for a subject.
      operationId: put_config_subject
      consumes:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      parameters:
      - name: subject
        description: 'The subject to set the config for. Use [:.<context>:]<subject>
          for context-qualified subjects, or just <subject> for the default context.
          Use :.<context>: for context-level config.'
        in: path
        required: true
        type: string
      - name: config
        in: body
        schema:
          "$ref": "#/definitions/put_compatibility"
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/put_compatibility"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    delete:
      summary: Delete the compatibility level for a subject.
      operationId: delete_config_subject
      parameters:
      - name: subject
        description: 'The subject to delete the config for. Use [:.<context>:]<subject>
          for context-qualified subjects, or just <subject> for the default context.
          Use :.<context>: for context-level config.'
        in: path
        required: true
        type: string
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/get_compatibility"
        '404':
          description: 'Not Found: Subject not found'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/config":
    get:
      summary: Get the global compatibility level.
      operationId: get_config
      parameters: []
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/get_compatibility"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    put:
      summary: Set the global compatibility level.
      operationId: put_config
      consumes:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      parameters:
      - name: config
        in: body
        schema:
          "$ref": "#/definitions/put_compatibility"
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/put_compatibility"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/mode":
    get:
      summary: Get the global mode.
      operationId: get_mode
      parameters: []
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/mode"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    put:
      summary: Set the global mode.
      operationId: put_mode
      consumes:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      parameters:
      - name: mode
        in: body
        schema:
          "$ref": "#/definitions/mode"
      - name: force
        description: If true, override the emptiness check when setting the global
          mode to IMPORT
        in: query
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/mode"
        '422':
          description: Unprocessable Entity
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/mode/{subject}":
    get:
      summary: Get the mode for a subject.
      operationId: get_mode_subject
      parameters:
      - name: subject
        description: 'The subject to get the mode for. Use [:.<context>:]<subject>
          for context-qualified subjects, or just <subject> for the default context.
          Use :.<context>: for context-level mode.'
        in: path
        required: true
        type: string
      - name: defaultToGlobal
        description: If true, return the global mode if the subject doesn't have a
          mode set.
        in: query
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/mode"
        '404':
          description: Not Found
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    put:
      summary: Set the mode for a subject.
      operationId: put_mode_subject
      consumes:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      parameters:
      - name: subject
        description: 'The subject to set the mode for. Use [:.<context>:]<subject>
          for context-qualified subjects, or just <subject> for the default context.
          Use :.<context>: for context-level mode.'
        in: path
        required: true
        type: string
      - name: mode
        in: body
        schema:
          "$ref": "#/definitions/mode"
      - name: force
        description: If true, override the emptiness check when setting a subject's
          mode to IMPORT
        in: query
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/mode"
        '404':
          description: Not Found
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Unprocessable Entity
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    delete:
      summary: Delete the mode for a subject.
      operationId: delete_mode_subject
      parameters:
      - name: subject
        description: 'The subject to delete the mode for. Use [:.<context>:]<subject>
          for context-qualified subjects, or just <subject> for the default context.
          Use :.<context>: for context-level mode.'
        in: path
        required: true
        type: string
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/mode"
        '404':
          description: Not Found
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/schemas/types":
    get:
      summary: Get the supported schema types.
      operationId: get_schemas_types
      parameters: []
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: string
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/schemas/ids/{id}":
    get:
      summary: Get a schema by ID.
      operationId: get_schemas_ids_id
      parameters:
      - name: id
        in: path
        required: true
        type: integer
      - name: format
        in: query
        required: false
        type: string
        description: 'Redpanda version 25.2 or later. For Avro and Protobuf schemas
          only. Supported values: an empty string `''''` returns the schema in its
          current format (default), and `serialized` (Protobuf only) returns the schema
          in its Base64-encoded wire binary format. Unsupported values return a 501
          error.'
      - name: subject
        in: query
        required: false
        type: string
        description: 'Qualified subject to scope the lookup. Use :.<context>: for
          context-only lookup, or :.<context>:<subject> to also verify the schema
          is associated with that subject. Defaults to searching the default context
          if unspecified.'
      - name: referenceFormat
        in: query
        required: false
        type: string
        description: If set to 'qualified', schema references are returned in context-qualified
          form. Otherwise, unqualified references are returned.
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/schema_def_response"
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
        '501':
          description: 'Not Implemented: The specified format parameter value is not
            supported'
          schema:
            "$ref": "#/definitions/error_body"
  "/schemas/ids/{id}/schema":
    get:
      summary: Get the raw schema by ID.
      operationId: get_schemas_ids_id_schema
      description: Retrieves only the schema identified by the input ID, without additional
        metadata.
      parameters:
      - name: id
        in: path
        required: true
        type: integer
      - name: subject
        in: query
        required: false
        type: string
        description: 'Qualified subject to scope the lookup. Use :.<context>: for
          context-only lookup, or :.<context>:<subject> to also verify the schema
          is associated with that subject. Defaults to searching the default context
          if unspecified.'
      - name: format
        in: query
        required: false
        type: string
        description: Desired output format, dependent on schema type.
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: Raw schema string
          schema:
            type: string
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/schemas/ids/{id}/versions":
    get:
      summary: Get a list of subject-version pairs for the schema ID.
      operationId: get_schemas_ids_id_versions
      parameters:
      - name: id
        in: path
        required: true
        type: integer
      - name: subject
        in: query
        required: false
        type: string
        description: 'Qualified subject to scope the lookup. Use :.<context>: for
          context-only lookup, or :.<context>:<subject> to also verify the schema
          is associated with that subject. Defaults to searching the default context
          if unspecified.'
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: object
              properties:
                subject:
                  type: string
                version:
                  type: integer
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/schemas/ids/{id}/subjects":
    get:
      summary: Retrieve a list of subjects associated with some schema ID.
      operationId: get_schemas_ids_id_subjects
      parameters:
      - name: id
        in: path
        required: true
        type: integer
      - name: deleted
        in: query
        required: false
        type: boolean
      - name: subject
        in: query
        required: false
        type: string
        description: 'Qualified subject to scope the lookup. Use :.<context>: for
          context-only lookup, or :.<context>:<subject> to also verify the schema
          is associated with that subject. Defaults to searching the default context
          if unspecified.'
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: string
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/subjects":
    get:
      summary: Retrieve a list of subjects.
      operationId: get_subjects
      parameters:
      - name: deleted
        in: query
        required: false
        type: boolean
      - name: subjectPrefix
        description: If specified, only return subjects that start with the given
          prefix. A plain prefix (e.g. "my-") matches subjects in the default context.
          A context-qualified prefix ":.<context>:<prefix>" (e.g. ":.my-context:my-")
          matches within a specific context. The wildcard context ":*:<prefix>" (e.g.
          ":*:my-") matches across all contexts. Use just the context qualifier (e.g.
          ":.my-context:" or ":*:") to list all subjects in a context.
        in: query
        required: false
        type: string
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: string
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/subjects/{subject}":
    post:
      summary: Check if a schema is already registered for the subject.
      operationId: post_subject
      consumes:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: normalize
        in: query
        required: false
        type: boolean
      - name: deleted
        in: query
        required: false
        type: boolean
      - name: format
        in: query
        required: false
        type: string
        description: 'Redpanda version 25.2 or later. For Avro and Protobuf schemas
          only. Supported values: an empty string `''''` returns the schema in its
          current format (default), and `serialized` (Protobuf only) returns the schema
          in its Base64-encoded wire binary format. Unsupported values return a 501
          error.'
      - name: schema_def
        in: body
        schema:
          "$ref": "#/definitions/schema_def_request"
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/stored_schema_response"
        '404':
          description: Not Found
          schema:
            "$ref": "#/definitions/error_body"
        '409':
          description: Incompatible schema
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid schema
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
        '501':
          description: 'Not Implemented: The specified format parameter value is not
            supported'
          schema:
            "$ref": "#/definitions/error_body"
    delete:
      summary: Delete all schemas for the subject.
      operationId: delete_subject
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: permanent
        in: query
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: integer
        '404':
          description: 'Not Found: Subject not found'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/subjects/{subject}/versions":
    get:
      summary: Retrieve a list of versions for a subject.
      operationId: get_subject_versions
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: deleted
        in: query
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: integer
        '404':
          description: 'Not Found: Subject not found'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    post:
      summary: Create a new schema for the subject.
      operationId: post_subject_versions
      consumes:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: normalize
        in: query
        required: false
        type: boolean
      - name: request
        in: body
        schema:
          "$ref": "#/definitions/stored_schema_request"
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/post_subject_versions_response"
        '409':
          description: Incompatible schema
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid schema
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/subjects/{subject}/versions/{version}":
    get:
      summary: Retrieve a schema for the subject and version.
      operationId: get_subject_versions_version
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: version
        in: path
        description: The schema version to retrieve. Use an integer for a specific
          version or 'latest' for the most recent version.
        required: true
        type: string
      - name: deleted
        in: query
        required: false
        type: boolean
      - name: format
        in: query
        required: false
        type: string
        description: 'Redpanda version 25.2 or later. For Avro and Protobuf schemas
          only. Supported values: an empty string `''''` returns the schema in its
          current format (default), and `serialized` (Protobuf only) returns the schema
          in its Base64-encoded wire binary format. Unsupported values return a 501
          error.'
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/get_subject_versions_version_response"
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid version
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
        '501':
          description: 'Not Implemented: The specified format parameter value is not
            supported'
          schema:
            "$ref": "#/definitions/error_body"
    delete:
      summary: Delete a schema for the subject and version.
      operationId: delete_subject_version
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: version
        in: path
        description: The schema version to delete. Use an integer for a specific version
          or 'latest' for the most recent version.
        required: true
        type: string
      - name: permanent
        in: query
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: integer
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid version
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/subjects/{subject}/versions/{version}/schema":
    get:
      summary: Retrieve the raw schema for the subject.
      operationId: get_subject_versions_version_schema
      description: Returns the specified version of the schema in its original format,
        without backslashes.
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: version
        in: path
        description: The schema version to retrieve. Use an integer for a specific
          version or 'latest' for the most recent version.
        required: true
        type: string
      - name: deleted
        in: query
        required: false
        type: boolean
      - name: format
        in: query
        required: false
        type: string
        description: 'Redpanda version 25.2 or later. For Avro and Protobuf schemas
          only. Supported values: an empty string `''''` returns the schema in its
          current format (default), and `serialized` (Protobuf only) returns the schema
          in its Base64-encoded wire binary format. Unsupported values return a 501
          error.'
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: string
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid version
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
        '501':
          description: 'Not Implemented: The specified format parameter value is not
            supported'
          schema:
            "$ref": "#/definitions/error_body"
  "/subjects/{subject}/versions/{version}/referencedby":
    get:
      summary: Retrieve a list of schema IDs that reference the subject and version.
      operationId: get_subject_versions_version_referenced_by
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: version
        in: path
        description: The schema version to check. Use an integer for a specific version
          or 'latest' for the most recent version.
        required: true
        type: string
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: integer
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid version
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/subjects/{subject}/versions/{version}/referencedBy":
    get:
      summary: Retrieve a list of schema ids that reference the subject and version.
      deprecated: true
      operationId: get_subject_versions_version_referenced_by_deprecated
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: version
        in: path
        description: The schema version to check. Use an integer for a specific version
          or 'latest' for the most recent version.
        required: true
        type: string
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: integer
        '404':
          description: 'Not Found: Schema not found'
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid version
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/compatibility/subjects/{subject}/versions/{version}":
    post:
      summary: Test compatibility of a schema for the subject and version.
      operationId: compatibility_subject_version
      consumes:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      parameters:
      - name: subject
        description: The subject name. Use [:.<context>:]<subject> for context-qualified
          subjects, or just <subject> for the default context.
        in: path
        required: true
        type: string
      - name: version
        in: path
        description: The schema version to check compatibility against. Use an integer
          for a specific version or 'latest' for the most recent version.
        required: true
        type: string
      - name: schema_def
        in: body
        schema:
          "$ref": "#/definitions/schema_def_request"
      - name: verbose
        in: query
        description: If true, includes more verbose information about the compatibility
          check, for example the reason the check failed.
        required: false
        type: boolean
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            "$ref": "#/definitions/is_compatibile"
        '409':
          description: Incompatible schema
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: Invalid schema
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/status/ready":
    get:
      summary: Health check
      operationId: schema_registry_status_ready
      responses:
        '200':
          description: Success
        '503':
          description: Service Unavailable
  "/contexts":
    get:
      summary: List all contexts.
      operationId: get_contexts
      parameters: []
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              type: string
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/contexts/{context}":
    delete:
      summary: Delete a context.
      description: Deletes the specified context if it is empty. Subjects must be
        permanently deleted before the context can be deleted.
      operationId: delete_context
      parameters:
      - name: context
        description: The context to delete (e.g., .staging). Cannot delete the default
          context.
        in: path
        required: true
        type: string
      produces:
      - application/vnd.schemaregistry.v1+json
      - application/vnd.schemaregistry+json
      - application/json
      responses:
        '204':
          description: No Content
        '404':
          description: 'Not Found: Context not found'
          schema:
            "$ref": "#/definitions/error_body"
        '422':
          description: 'Unprocessable Entity: Context not empty'
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
  "/security/acls":
    get:
      summary: List ACLs
      description: Returns a list of ACL rules that match the specified filters.
      operationId: get_security_acls
      produces:
      - application/json
      parameters:
      - name: principal
        in: query
        type: string
        description: The name of the principal, for example, User:alice or RedpandaRole:admin.
          Use "*" to represent a wildcard.
      - name: resource
        in: query
        type: string
        description: The name of the resource. Use "*" to represent a wildcard.
      - name: resource_type
        in: query
        type: string
        enum:
        - REGISTRY
        - SUBJECT
        description: The type of resource being secured. The REGISTRY type maps to
          top-level operations such as `GET /mode` and `GET /config`. The SUBJECT
          type maps to operations on the subject level, such as `GET /subjects` and
          `GET /config/{subject}`.
      - name: pattern_type
        in: query
        type: string
        enum:
        - LITERAL
        - PREFIXED
        description: Pattern match type for the resource. Only applies when `resource_type`
          is SUBJECT.
      - name: host
        in: query
        type: string
        description: Originating host for which this rule applies. Use "*" to represent
          a wildcard.
      - name: operation
        in: query
        type: string
        enum:
        - ALL
        - READ
        - WRITE
        - DELETE
        - DESCRIBE
        - DESCRIBE_CONFIGS
        - ALTER_CONFIGS
        description: The operation to allow or deny.
      - name: permission
        in: query
        type: string
        enum:
        - ALLOW
        - DENY
        description: Specifies whether the operation is allowed or denied.
      responses:
        '200':
          description: List ACLs
          schema:
            type: array
            items:
              "$ref": "#/definitions/security_acl"
          examples:
            application/json:
            - principal: User:alice
              resource: model-
              resource_type: SUBJECT
              pattern_type: PREFIXED
              operation: READ
              permission: ALLOW
              host: "*"
        '401':
          description: Unauthorized
          schema:
            "$ref": "#/definitions/error_body"
        '403':
          description: Forbidden
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    post:
      summary: Create ACLs
      description: Create one or more ACL rules. The request body is an array of ACL
        definitions.
      operationId: post_security_acls
      parameters:
      - name: acls
        in: body
        required: true
        schema:
          type: array
          items:
            "$ref": "#/definitions/security_acl"
      consumes:
      - application/json
      produces:
      - application/json
      responses:
        '201':
          description: ACLs created
        '400':
          description: Bad request
          schema:
            "$ref": "#/definitions/error_body"
        '401':
          description: Unauthorized
          schema:
            "$ref": "#/definitions/error_body"
        '403':
          description: Forbidden
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
    delete:
      summary: Delete ACLs
      description: Delete ACL rules that match the specified definitions exactly.
      operationId: delete_security_acls
      consumes:
      - application/json
      parameters:
      - name: acls
        in: body
        required: true
        schema:
          type: array
          items:
            "$ref": "#/definitions/security_acl"
      responses:
        '200':
          description: ACLs deleted
          schema:
            type: array
            items:
              "$ref": "#/definitions/security_acl"
        '400':
          description: Bad request
          schema:
            "$ref": "#/definitions/error_body"
        '401':
          description: Unauthorized
          schema:
            "$ref": "#/definitions/error_body"
        '403':
          description: Forbidden
          schema:
            "$ref": "#/definitions/error_body"
        '500':
          description: Internal Server Error
          schema:
            "$ref": "#/definitions/error_body"
definitions:
  error_body:
    type: object
    properties:
      error_code:
        type: integer
      message:
        type: string
  schema_reference:
    type: object
    properties:
      name:
        type: string
        description: The name used to reference this schema in the dependent schema
          definition.
      subject:
        type: string
        description: The subject name of the referenced schema. Use [:.<context>:]<subject>
          for context-qualified subjects, or just <subject> for the default context.
      version:
        type: integer
        description: The version of the referenced schema.
  schema_metadata_request:
    type: object
    description: A map of user-defined properties associated with this schema
    properties:
      properties:
        type: object
        description: Accepted values may be string, number, or boolean. All values
          are converted to strings.
        additionalProperties:
          type: string
  schema_metadata_response:
    type: object
    properties:
      properties:
        type: object
        additionalProperties:
          type: string
  schema_def_request:
    type: object
    properties:
      schema:
        type: string
      schemaType:
        type: string
      references:
        type: array
        items:
          "$ref": "#/definitions/schema_reference"
      metadata:
        "$ref": "#/definitions/schema_metadata_request"
  schema_def_response:
    type: object
    properties:
      schema:
        type: string
      schemaType:
        type: string
      references:
        type: array
        items:
          "$ref": "#/definitions/schema_reference"
      metadata:
        "$ref": "#/definitions/schema_metadata_response"
  stored_schema_request:
    type: object
    properties:
      subject:
        type: string
      version:
        type: integer
      id:
        type: integer
      schemaType:
        type: string
      references:
        type: array
        items:
          "$ref": "#/definitions/schema_reference"
      metadata:
        "$ref": "#/definitions/schema_metadata_request"
      schema:
        type: string
  stored_schema_response:
    type: object
    properties:
      subject:
        type: string
      version:
        type: integer
      id:
        type: integer
      schemaType:
        type: string
      references:
        type: array
        items:
          "$ref": "#/definitions/schema_reference"
      metadata:
        "$ref": "#/definitions/schema_metadata_response"
      schema:
        type: string
  get_subject_versions_version_response:
    type: object
    properties:
      subject:
        type: string
      version:
        type: integer
      id:
        type: integer
      schemaType:
        type: string
      references:
        type: array
        items:
          "$ref": "#/definitions/schema_reference"
      metadata:
        "$ref": "#/definitions/schema_metadata_response"
      schema:
        type: string
      deleted:
        type: boolean
  post_subject_versions_response:
    type: object
    properties:
      id:
        type: integer
      version:
        type: integer
      schemaType:
        type: string
      references:
        type: array
        items:
          "$ref": "#/definitions/schema_reference"
      metadata:
        "$ref": "#/definitions/schema_metadata_response"
      schema:
        type: string
  get_compatibility:
    type: object
    properties:
      compatibilityLevel:
        type: string
        description: Compatibility level
        example: FULL_TRANSITIVE
        enum:
        - BACKWARD
        - BACKWARD_TRANSITIVE
        - FORWARD
        - FORWARD_TRANSITIVE
        - FULL
        - FULL_TRANSITIVE
        - NONE
  put_compatibility:
    type: object
    properties:
      compatibility:
        type: string
        description: Compatibility level
        example: FULL_TRANSITIVE
        enum:
        - BACKWARD
        - BACKWARD_TRANSITIVE
        - FORWARD
        - FORWARD_TRANSITIVE
        - FULL
        - FULL_TRANSITIVE
        - NONE
  mode:
    type: object
    properties:
      mode:
        type: string
        enum:
        - READWRITE
        - READONLY
        - IMPORT
  is_compatibile:
    type: object
    properties:
      is_compatible:
        type: boolean
      messages:
        type: array
        items:
          type: string
  security_acl:
    type: object
    required:
    - principal
    - resource
    - resource_type
    - pattern_type
    - host
    - operation
    - permission
    properties:
      principal:
        type: string
        description: The name of the principal, for example, User:alice or RedpandaRole:admin.
          Use "*" to represent a wildcard.
      resource:
        type: string
        description: The name of the resource. Use "*" to represent a wildcard.
      resource_type:
        type: string
        enum:
        - REGISTRY
        - SUBJECT
        description: The type of resource being secured.
      pattern_type:
        type: string
        enum:
        - LITERAL
        - PREFIXED
        description: Pattern match type for the resource. Only applies when `resource_type`
          is SUBJECT.
      host:
        type: string
        description: Originating host for which this rule applies. Use "*" to represent
          a wildcard.
      operation:
        type: string
        enum:
        - ALL
        - READ
        - WRITE
        - DELETE
        - DESCRIBE
        - DESCRIBE_CONFIGS
        - ALTER_CONFIGS
        description: The operation to allow or deny.
      permission:
        type: string
        enum:
        - ALLOW
        - DENY
        description: Specifies whether the operation is allowed or denied.
