- release_tracks: [GA]
  help_text:
    brief: Create a Data Catalog entry.
    description: Create a Data Catalog entry.
    examples: |-
      To create an entry for a Google Cloud Storage fileset, run:

        $ {command} entry1 \
            --location=us-central1 --entry-group=group1 \
            --gcs-file-patterns="gs://bucket1/abc/*,gs://bucket1/file1" \
            --display-name="analytics data" --type=FILESET

      To create an entry for a Google Cloud Storage fileset with an inline schema, run:

        $ {command} entry1 \
            --location=us-central1 --entry-group=group1 \
            --gcs-file-patterns="gs://bucket1/*" --display-name="sales data" \
            --schema="qtr=STRING,sales=FLOAT,year=STRING"

      To create an entry for a resource of a custom type, run:

        $ {command} entry1 \
            --location=us-central1 --entry-group=group1 \
            --display-name="sales data" --linked-resource="www.resource.com" \
            --user-specified-type="type_name" --user-specified-system="system_name"

      To create an entry for a Google Cloud Storage fileset with a schema from a file, run:

        $ {command} entry1 \
            --location=us-central1 --entry-group=group1 \
            --gcs-file-patterns="gs://bucket1/*" --display-name="sales data" \
            --schema-from-file=/tmp/schema.json --type=FILESET

  deprecate:
    is_removed: false
    warning: "This command is deprecated. Please use `gcloud dataplex entries` instead."
    error: "This command has been removed. Please use `gcloud dataplex entries` instead."

  request:
    api_version: v1
    collection: datacatalog.projects.locations.entryGroups.entries
    modify_request_hooks:
    - googlecloudsdk.command_lib.data_catalog.entries.v1_util:DetectType
    - googlecloudsdk.command_lib.data_catalog.entries.v1_util:ParseFilesetRequirements
    - googlecloudsdk.command_lib.data_catalog.entries.v1_util:ParsePhysicalSchema

  arguments:
    resource:
      help_text: Entry to create.
      spec: !REF googlecloudsdk.command_lib.data_catalog.resources:entry
      is_positional: true
    params:
    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:display_name
    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:description
    - group:
        params:
        - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:fully_qualified_name
    - group:
        mutex: true
        required: true
        help_text: |
          Types can either be specified as a built-in type or described as a custom type.
        params:
        - group:
            help_text: |
              Built-in type can be specified for an entry. For types FILESET,
              a file pattern must be specified.
            params:
            - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:type
            - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:gcs_file_patterns
        - group:
            params:
            - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:required_user_specified_system
            - group:
                mutex: true
                required: true
                params:
                - group:
                    help_text: |
                      For externally ingested resources, `--user-specified-type` and `--user-specified-system`
                      are required. Linked resource and source system time stamps are optional.
                    params:
                    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:required_user_specified_type
                    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:linked_resource
                    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:source_system_create_time
                    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:source_system_update_time
                - group:
                    hidden: true
                    help_text: |
                      Create a Kafka Cluster entry.
                    params:
                    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:kafka_cluster_bootstrap_servers_required
                - group:
                    hidden: true
                    params:
                    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:kafka_cluster_required
                    - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:kafka_topic_required
                    - group:
                        params:
                        - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:physical_schema_type
                        - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:physical_schema_file
    - group:
        mutex: true
        help_text: |
          Column schema for the entry. A schema consists of a list of column names along with
          their types, descriptions, modes, and nested subcolumns. For example:

          ```
          - column: first_name
            description: First name
            mode: REQUIRED
            type: STRING
          - column: last_name
            description: Last name
            mode: REQUIRED
            type: STRING
          - column: addresses
            description: Addresses
            mode: REPEATED
            type: RECORD
            subcolumns:
            - column: city
              description: City
              mode: NULLABLE
              type: STRING
            - column: state
              description: State
              mode: NULLABLE
              type: STRING

          ```
        params:
        - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:schema
        - !REF googlecloudsdk.command_lib.data_catalog.entries.v1_flags:schema_from_file

- release_tracks: [ALPHA, BETA]
  help_text:
    brief: Create a Data Catalog entry.
    description: Create a Data Catalog entry.
    examples: |-
      To create an entry for a Google Cloud Storage fileset, run:

        $ {command} entry1 \
            --location=us-central1 --entry-group=group1 \
            --gcs-file-patterns="gs://bucket1/abc/*,gs://bucket1/file1" \
            --display-name="analytics data"

      To create an entry for a Google Cloud Storage fileset with an inline schema, run:

        $ {command} entry1 \
            --location=us-central1 --entry-group=group1 \
            --gcs-file-patterns="gs://bucket1/*" --display-name="sales data" \
            --schema="qtr=STRING,sales=FLOAT,year=STRING"

      To create an entry for a Google Cloud Storage fileset with a schema from a file, run:

        $ {command} entry1 \
            --location=us-central1 --entry-group=group1 \
            --gcs-file-patterns="gs://bucket1/*" --display-name="sales data" \
            --schema-from-file=/tmp/schema.json

  deprecate:
    is_removed: false
    warning: "This command is deprecated. Please use `gcloud dataplex entries` instead."
    error: "This command has been removed. Please use `gcloud dataplex entries` instead."

  request:
    collection: datacatalog.projects.locations.entryGroups.entries
    static_fields:
      googleCloudDatacatalogV1beta1Entry.type: FILESET

  arguments:
    resource:
      help_text: Entry to create.
      spec: !REF googlecloudsdk.command_lib.data_catalog.resources:entry
      is_positional: true
    params:
    - !REF googlecloudsdk.command_lib.data_catalog.entries.flags:display_name
    - !REF googlecloudsdk.command_lib.data_catalog.entries.flags:description
    - !REF googlecloudsdk.command_lib.data_catalog.entries.flags:gcs_file_patterns
    - group:
        mutex: true
        help_text: |
          Column schema for the entry. A schema consists of a list of column names along with
          their types, descriptions, modes, and nested subcolumns. For example:

          ```
          - column: first_name
            description: First name
            mode: REQUIRED
            type: STRING
          - column: last_name
            description: Last name
            mode: REQUIRED
            type: STRING
          - column: addresses
            description: Addresses
            mode: REPEATED
            type: RECORD
            subcolumns:
            - column: city
              description: City
              mode: NULLABLE
              type: STRING
            - column: state
              description: State
              mode: NULLABLE
              type: STRING

          ```
        params:
        - !REF googlecloudsdk.command_lib.data_catalog.entries.flags:schema
        - !REF googlecloudsdk.command_lib.data_catalog.entries.flags:schema_from_file
