- release_tracks: [ALPHA, BETA, GA]

  help_text:
    brief: Validate a Pub/Sub schema.
    description: |
      Validate a new Pub/Sub schema.
    examples: |
      To validate a PROTOCOL_BUFFER schema, run:

        $ {command} --definition="syntax = 'proto3'; message Message { optional string key = 1; }" --type=PROTOCOL_BUFFER

      To validate an equivalent AVRO schema, run:

        $ {command} --definition='{ "type": "record", "namespace": "my.ns", "name": "KeyMsg", "fields": [ { "name": "key", "type": "string" } ] }' --type=AVRO

  request:
    collection: pubsub.projects.schemas
    api_version: v1
    method: validate

  arguments:
    resource:
      help_text: |
        Parent Pub/Sub project in which to validate the schema.
      spec: !REF googlecloudsdk.command_lib.pubsub.resources:project
      is_parent_resource: true
    params:
    - group:
        help_text: |
          Schema definition.
        mutex: true
        required: true
        params:
        - arg_name: definition
          api_field: validateSchemaRequest.schema.definition
          help_text: |
            Inline schema definition.
        - arg_name: definition-file
          api_field: validateSchemaRequest.schema.definition
          type: "googlecloudsdk.calliope.arg_parsers:FileContents:"
          help_text: |
            File containing schema definition.
    - arg_name: type
      api_field: validateSchemaRequest.schema.type
      required: true
      help_text: |
        Type of the schema.
      choices:
      - arg_value: avro
        enum_value: AVRO
      - arg_value: protocol-buffer
        enum_value: PROTOCOL_BUFFER

  response:
    modify_response_hooks:
    - googlecloudsdk.command_lib.pubsub.util:OutputSchemaValidated
