Virtru policy.kasregistry.KeyAccessServerRegistryService API

The policy.kasregistry.KeyAccessServerRegistryService API from Virtru — 14 operation(s) for policy.kasregistry.keyaccessserverregistryservice.

OpenAPI Specification

virtru-policy-kasregistry-keyaccessserverregistryservice-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: authorization authorization.AuthorizationService policy.kasregistry.KeyAccessServerRegistryService API
security: []
tags:
- name: policy.kasregistry.KeyAccessServerRegistryService
paths:
  /policy.kasregistry.KeyAccessServerRegistryService/ListKeyAccessServers:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: ListKeyAccessServers
      operationId: policy.kasregistry.KeyAccessServerRegistryService.ListKeyAccessServers
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.ListKeyAccessServersRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.ListKeyAccessServersResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/GetKeyAccessServer:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: GetKeyAccessServer
      operationId: policy.kasregistry.KeyAccessServerRegistryService.GetKeyAccessServer
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.GetKeyAccessServerRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.GetKeyAccessServerResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/CreateKeyAccessServer:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: CreateKeyAccessServer
      operationId: policy.kasregistry.KeyAccessServerRegistryService.CreateKeyAccessServer
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.CreateKeyAccessServerRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.CreateKeyAccessServerResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/UpdateKeyAccessServer:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: UpdateKeyAccessServer
      operationId: policy.kasregistry.KeyAccessServerRegistryService.UpdateKeyAccessServer
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.UpdateKeyAccessServerRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.UpdateKeyAccessServerResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/DeleteKeyAccessServer:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: DeleteKeyAccessServer
      operationId: policy.kasregistry.KeyAccessServerRegistryService.DeleteKeyAccessServer
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.DeleteKeyAccessServerRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.DeleteKeyAccessServerResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/ListKeyAccessServerGrants:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: ListKeyAccessServerGrants
      description: Deprecated
      operationId: policy.kasregistry.KeyAccessServerRegistryService.ListKeyAccessServerGrants
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.ListKeyAccessServerGrantsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.ListKeyAccessServerGrantsResponse'
      deprecated: true
  /policy.kasregistry.KeyAccessServerRegistryService/CreateKey:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: CreateKey
      description: "KAS Key Management\n Request to create a new key in the Key Access Service."
      operationId: policy.kasregistry.KeyAccessServerRegistryService.CreateKey
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.CreateKeyRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.CreateKeyResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/GetKey:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: GetKey
      description: Request to retrieve a key from the Key Access Service.
      operationId: policy.kasregistry.KeyAccessServerRegistryService.GetKey
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.GetKeyRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.GetKeyResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/ListKeys:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: ListKeys
      description: Request to list keys in the Key Access Service.
      operationId: policy.kasregistry.KeyAccessServerRegistryService.ListKeys
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.ListKeysRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.ListKeysResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/UpdateKey:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: UpdateKey
      description: Request to update a key in the Key Access Service.
      operationId: policy.kasregistry.KeyAccessServerRegistryService.UpdateKey
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.UpdateKeyRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.UpdateKeyResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/RotateKey:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: RotateKey
      description: Request to rotate a key in the Key Access Service.
      operationId: policy.kasregistry.KeyAccessServerRegistryService.RotateKey
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.RotateKeyRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.RotateKeyResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/SetBaseKey:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: SetBaseKey
      description: Request to set the default a default kas key.
      operationId: policy.kasregistry.KeyAccessServerRegistryService.SetBaseKey
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.SetBaseKeyRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.SetBaseKeyResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/GetBaseKey:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: GetBaseKey
      description: Get Default kas keys
      operationId: policy.kasregistry.KeyAccessServerRegistryService.GetBaseKey
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.GetBaseKeyRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.GetBaseKeyResponse'
  /policy.kasregistry.KeyAccessServerRegistryService/ListKeyMappings:
    post:
      tags:
      - policy.kasregistry.KeyAccessServerRegistryService
      summary: ListKeyMappings
      description: Request to list key mappings in the Key Access Service.
      operationId: policy.kasregistry.KeyAccessServerRegistryService.ListKeyMappings
      parameters:
      - name: Connect-Protocol-Version
        in: header
        required: true
        schema:
          $ref: '#/components/schemas/connect-protocol-version'
      - name: Connect-Timeout-Ms
        in: header
        schema:
          $ref: '#/components/schemas/connect-timeout-header'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/policy.kasregistry.ListKeyMappingsRequest'
        required: true
      responses:
        default:
          description: Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/connect.error'
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/policy.kasregistry.ListKeyMappingsResponse'
components:
  schemas:
    policy.PublicKey:
      type: object
      oneOf:
      - properties:
          cached:
            title: cached
            description: public key with additional information. Current preferred version
            $ref: '#/components/schemas/policy.KasPublicKeySet'
        title: cached
        required:
        - cached
      - properties:
          remote:
            type: string
            title: remote
            description: 'kas public key url - optional since can also be retrieved via public key

              URI must be a valid URL (e.g., ''https://demo.com/'') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.:

              ```

              this.matches(''^https://[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*(/.*)?$'')

              ```


              '
        title: remote
        required:
        - remote
      title: PublicKey
      additionalProperties: false
      description: Deprecated
    policy.kasregistry.GrantedPolicyObject:
      type: object
      properties:
        id:
          type: string
          title: id
        fqn:
          type: string
          title: fqn
      title: GrantedPolicyObject
      additionalProperties: false
      description: Can be namespace, attribute definition, or value
    policy.Algorithm:
      type: string
      title: Algorithm
      enum:
      - ALGORITHM_UNSPECIFIED
      - ALGORITHM_RSA_2048
      - ALGORITHM_RSA_4096
      - ALGORITHM_EC_P256
      - ALGORITHM_EC_P384
      - ALGORITHM_EC_P521
      - ALGORITHM_HPQT_XWING
      - ALGORITHM_HPQT_SECP256R1_MLKEM768
      - ALGORITHM_HPQT_SECP384R1_MLKEM1024
      - ALGORITHM_MLKEM_768
      - ALGORITHM_MLKEM_1024
      description: Supported key algorithms.
    policy.SourceType:
      type: string
      title: SourceType
      enum:
      - SOURCE_TYPE_UNSPECIFIED
      - SOURCE_TYPE_INTERNAL
      - SOURCE_TYPE_EXTERNAL
      description: "Describes whether this kas is managed by the organization or if they imported\n the kas information from an external party. These two modes are necessary in order\n to encrypt a tdf dek with an external parties kas public key."
    policy.PublicKeyCtx:
      type: object
      properties:
        pem:
          type: string
          title: pem
          minLength: 1
          description: Required Base64 encoded public key in PEM format
      title: PublicKeyCtx
      additionalProperties: false
    policy.kasregistry.KeyAccessServerGrants:
      type: object
      properties:
        keyAccessServer:
          title: key_access_server
          $ref: '#/components/schemas/policy.KeyAccessServer'
        namespaceGrants:
          type: array
          items:
            $ref: '#/components/schemas/policy.kasregistry.GrantedPolicyObject'
          title: namespace_grants
        attributeGrants:
          type: array
          items:
            $ref: '#/components/schemas/policy.kasregistry.GrantedPolicyObject'
          title: attribute_grants
        valueGrants:
          type: array
          items:
            $ref: '#/components/schemas/policy.kasregistry.GrantedPolicyObject'
          title: value_grants
      title: KeyAccessServerGrants
      additionalProperties: false
      description: Deprecated
    common.Metadata:
      type: object
      properties:
        createdAt:
          title: created_at
          description: created_at set by server (entity who created will recorded in an audit event)
          $ref: '#/components/schemas/google.protobuf.Timestamp'
        updatedAt:
          title: updated_at
          description: updated_at set by server (entity who updated will recorded in an audit event)
          $ref: '#/components/schemas/google.protobuf.Timestamp'
        labels:
          type: object
          title: labels
          additionalProperties:
            type: string
            title: value
          description: optional short description
      title: Metadata
      additionalProperties: false
      description: Struct to uniquely identify a resource with optional additional metadata
    policy.kasregistry.GetBaseKeyRequest:
      type: object
      title: GetBaseKeyRequest
      additionalProperties: false
    policy.KasKey:
      type: object
      properties:
        kasId:
          type: string
          title: kas_id
        key:
          title: key
          $ref: '#/components/schemas/policy.AsymmetricKey'
        kasUri:
          type: string
          title: kas_uri
      title: KasKey
      additionalProperties: false
    policy.kasregistry.RotateKeyRequest:
      type: object
      oneOf:
      - properties:
          id:
            type: string
            title: id
            format: uuid
            description: Current Active Key UUID
        title: id
        required:
        - id
      - properties:
          key:
            title: key
            description: Alternative way to specify the active key using KAS ID and Key ID
            $ref: '#/components/schemas/policy.kasregistry.KasKeyIdentifier'
        title: key
        required:
        - key
      properties:
        newKey:
          title: new_key
          description: Information about the new key to be rotated in
          $ref: '#/components/schemas/policy.kasregistry.RotateKeyRequest.NewKey'
      title: RotateKeyRequest
      additionalProperties: false
      description: 'For the new key, the wrapped_key is required if key_mode is KEY_MODE_CONFIG_ROOT_KEY or KEY_MODE_PROVIDER_ROOT_KEY. The wrapped_key must be empty if key_mode is KEY_MODE_REMOTE or KEY_MODE_PUBLIC_KEY_ONLY.:

        ```

        ((this.new_key.key_mode == 1 || this.new_key.key_mode == 2) && this.new_key.private_key_ctx.wrapped_key != '''') || ((this.new_key.key_mode == 3 || this.new_key.key_mode == 4) && this.new_key.private_key_ctx.wrapped_key == '''')

        ```


        For the new key, provider config id is required if key_mode is KEY_MODE_PROVIDER_ROOT_KEY or KEY_MODE_REMOTE. It must be empty for KEY_MODE_CONFIG_ROOT_KEY and KEY_MODE_PUBLIC_KEY_ONLY.:

        ```

        ((this.new_key.key_mode == 1 || this.new_key.key_mode == 4) && this.new_key.provider_config_id == '''') || ((this.new_key.key_mode == 2 || this.new_key.key_mode == 3) && this.new_key.provider_config_id != '''')

        ```


        private_key_ctx must not be set if key_mode is KEY_MODE_PUBLIC_KEY_ONLY.:

        ```

        !(this.new_key.key_mode == 4 && has(this.new_key.private_key_ctx))

        ```


        '
    connect-protocol-version:
      type: number
      title: Connect-Protocol-Version
      enum:
      - 1
      description: Define the version of the Connect protocol
      const: 1
    policy.kasregistry.UpdateKeyResponse:
      type: object
      properties:
        kasKey:
          title: kas_key
          description: The updated kas key
          $ref: '#/components/schemas/policy.KasKey'
      title: UpdateKeyResponse
      additionalProperties: false
      description: Response to an UpdateKeyRequest, containing the updated asymmetric key
    policy.AsymmetricKey:
      type: object
      properties:
        id:
          type: string
          title: id
          description: Required
        keyId:
          type: string
          title: key_id
          description: Required
        keyAlgorithm:
          title: key_algorithm
          description: Required
          $ref: '#/components/schemas/policy.Algorithm'
        keyStatus:
          title: key_status
          description: Required
          $ref: '#/components/schemas/policy.KeyStatus'
        keyMode:
          title: key_mode
          description: Required Specifies how the key is managed (local or remote)
          $ref: '#/components/schemas/policy.KeyMode'
        publicKeyCtx:
          title: public_key_ctx
          description: Required Specific structure based on key provider implementation
          $ref: '#/components/schemas/policy.PublicKeyCtx'
        privateKeyCtx:
          title: private_key_ctx
          description: Optional Specific structure based on key provider implementation
          $ref: '#/components/schemas/policy.PrivateKeyCtx'
        providerConfig:
          title: provider_config
          description: Optional Configuration for the key provider
          $ref: '#/components/schemas/policy.KeyProviderConfig'
        legacy:
          type: boolean
          title: legacy
          description: Optional Indicates a key may be found in TDFs without key identifiers
        metadata:
          title: metadata
          description: Common metadata fields
          $ref: '#/components/schemas/common.Metadata'
      title: AsymmetricKey
      additionalProperties: false
    google.protobuf.Any:
      type: object
      properties:
        type:
          type: string
        value:
          type: string
          format: binary
        debug:
          type: object
          additionalProperties: true
      additionalProperties: true
      description: Contains an arbitrary serialized message along with a @type that describes the type of the serialized message.
    policy.KasPublicKey:
      type: object
      properties:
        pem:
          type: string
          title: pem
          maxLength: 8192
          minLength: 1
          description: x509 ASN.1 content in PEM envelope, usually
        kid:
          type: string
          title: kid
          maxLength: 32
          minLength: 1
          description: A unique string identifier for this key
        alg:
          not:
            enum:
            - 0
          title: alg
          description: "A known algorithm type with any additional parameters encoded.\n To start, these may be `rsa:2048` for RSA-based wrapping and\n `ec:secp256r1` for EC-based wrapping, but more formats may be added as needed."
          $ref: '#/components/schemas/policy.KasPublicKeyAlgEnum'
      title: KasPublicKey
      additionalProperties: false
      description: "Deprecated\n A KAS public key and some associated metadata for further identifcation"
    policy.KeyAccessServer:
      type: object
      properties:
        id:
          type: string
          title: id
        uri:
          type: string
          title: uri
          description: 'Address of a KAS instance

            URI must be a valid URL (e.g., ''https://demo.com/'') followed by additional segments. Each segment must start and end with an alphanumeric character, can contain hyphens, alphanumeric characters, and slashes.:

            ```

            this.matches(''^https?://[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?(\\.[a-zA-Z0-9]([a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9])?)*(:[0-9]+)?(/.*)?$'')

            ```


            '
        publicKey:
          title: public_key
          description: 'Deprecated: KAS can have multiple key pairs'
          $ref: '#/components/schemas/policy.PublicKey'
        sourceType:
          title: source_type
          description: 'The source of the KAS: (INTERNAL, EXTERNAL)'
          $ref: '#/components/schemas/policy.SourceType'
        kasKeys:
          type: array
          items:
            $ref: '#/components/schemas/policy.SimpleKasKey'
          title: kas_keys
          description: Kas keys associated with this KAS
        name:
          type: string
          title: name
          description: "Optional\n Unique name of the KAS instance"
        metadata:
          title: metadata
          description: Common metadata
          $ref: '#/components/schemas/common.Metadata'
      title: KeyAccessServer
      additionalProperties: false
      description: Key Access Server Registry
    policy.kasregistry.ChangeMappings:
      type: object
      properties:
        id:
          type: string
          title: id
        fqn:
          type: string
          title: fqn
      title: ChangeMappings
      additionalProperties: false
      description: "*\n Simplified information about the resources that were rotated as part of the key rotation process."
    policy.kasregistry.GetKeyResponse:
      type: object
      properties:
        kasKey:
          title: kas_key
          description: The requested asymmetric key for a KAS.
          $ref: '#/components/schemas/policy.KasKey'
      title: GetKeyResponse
      additionalProperties: false
      description: Response to a GetKeyRequest, containing the requested asymmetric key
    policy.kasregistry.ListKeyAccessServersRequest:
      type: object
      properties:
        pagination:
          title: pagination
          description: Optional
          $ref: '#/components/schemas/policy.PageRequest'
        sort:
          type: array
          items:
            $ref: '#/components/schemas/policy.kasregistry.KeyAccessServersSort'
          title: sort
          maxItems: 1
          description: "Optional - CONSTRAINT: max 1 item\n Sort defaults:\n   - direction UNSPECIFIED defaults to DESC for the specified field\n   - field UNSPECIFIED defaults to created_at with the specified direction\n   - both UNSPECIFIED or sort omitted defaults to created_at DESC"
        search:
          title: search
          description: Optional
          $ref: '#/components/schemas/policy.Search'
      title: ListKeyAccessServersRequest
      additionalProperties: false
    policy.kasregistry.ListKeysResponse:
      type: object
      properties:
        kasKeys:
          type: array
          items:
            $ref: '#/components/schemas/policy.KasKey'
          title: kas_keys
          description: The list of kas keys
        pagination:
          title: pagination
          description: Pagination response for the list of keys
          $ref: '#/components/schemas/policy.PageResponse'
      title: ListKeysResponse
      additionalProperties: false
      description: Response to a ListKeysRequest, containing the list of asymmetric keys and pagination information
    google.protobuf.Timestamp:
      type: string
      examples:
      - 1s
      - 1.000340012s
      format: date-time
      description: "A Timestamp represents a point in time independent of any time zone or local\n calendar, encoded as a count of seconds and fractions of seconds at\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\n January 1, 1970, in the proleptic Gregorian calendar which extends the\n Gregorian calendar backwards to year one.\n\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n second table is needed for interpretation, using a [24-hour linear\n smear](https://developers.google.com/time/smear).\n\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n restricting to that range, we ensure that we can convert to and from [RFC\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n\n # Examples\n\n Example 1: Compute Timestamp from POSIX `time()`.\n\n     Timestamp timestamp;\n     timestamp.set_seconds(time(NULL));\n     timestamp.set_nanos(0);\n\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n\n     struct timeval tv;\n     gettimeofday(&tv, NULL);\n\n     Timestamp timestamp;\n     timestamp.set_seconds(tv.tv_sec);\n     timestamp.set_nanos(tv.tv_usec * 1000);\n\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n\n     FILETIME ft;\n     GetSystemTimeAsFileTime(&ft);\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n     // is 11644

# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/virtru/refs/heads/main/openapi/virtru-policy-kasregistry-keyaccessserverregistryservice-api-openapi.yml