- release_tracks: [ALPHA, BETA, GA]
  help_text:
    brief: Create a new composite index.
    description: Create a new composite index.
    examples: |
      The following command creates a composite index with fields `user_id` (in descending order)
      followed by `timestamp` (in descending order) in the `Events` collection group.

        $ {command} --collection-group=Events \
            --field-config=field-path=user-id,order=descending \
            --field-config=field-path=timestamp,order=descending

        $ {command} --database=(default) --collection-group=Events \
            --field-config=field-path=user-id,order=descending \
            --field-config=field-path=timestamp,order=descending

  request:
    collection: firestore.projects.databases.collectionGroups.indexes
    display_resource_type: index
    modify_request_hooks:
    # Normally we would perform this validation when parsing the '--field-config' arg but then we
    # would have to write a whole custom 'type' hook and we would miss out on the built-in
    # declarative ArgDict support. It's easier and it involves less custom hook code to do it here
    # (which still happens before the API request is made, so ultimately it's not that much
    # different).
    - googlecloudsdk.command_lib.firestore.util:ValidateFieldConfig

  response:
    modify_response_hooks:
    - googlecloudsdk.command_lib.firestore.util:ExtractOperationMetadata

  async:
    collection: firestore.projects.databases.operations
    api_version: v1
    extract_resource_result: false

  arguments:
    resource:
      help_text: Collection group of the index.
      is_positional: false
      is_parent_resource: true
      spec: !REF googlecloudsdk.command_lib.firestore.resources:collection_group

    params:
    - _REF_: googlecloudsdk.command_lib.firestore.flags:field_config
      required: true
    - _REF_: googlecloudsdk.command_lib.firestore.flags:query_scope
    - _REF_: googlecloudsdk.command_lib.firestore.flags:api_scope
    - _REF_: googlecloudsdk.command_lib.firestore.flags:multikey
    - _REF_: googlecloudsdk.command_lib.firestore.flags:density
    - _REF_: googlecloudsdk.command_lib.firestore.flags:unique
