- release_tracks: [ALPHA, BETA, GA]

  help_text:
    brief: List existing Cloud Spanner Cloud Spanner backups.
    description: List existing Cloud Spanner Cloud Spanner backups.
    examples: |
      To list existing backups for the instance, run:

        $ {command} --instance=INSTANCE_NAME

      To list existing backups for a database, run:

        $ {command} --instance=INSTANCE_NAME --database=DATABASE

  request:
    collection: spanner.projects.instances.backups
    modify_request_hooks:
    - googlecloudsdk.api_lib.spanner.backups:ModifyListRequest

  arguments:
    params:
    - arg_name: database
      api_field: filter
      required: false
      help_text: |
        ID of the source database. The database flag will take precedence over filters added for
        database.
    resource:
      help_text: Cloud Spanner instance ID.
      spec: !REF googlecloudsdk.command_lib.spanner.resources:instance

  response:
    modify_response_hooks:
    - googlecloudsdk.api_lib.spanner.backups:FormatListBackups

  # TODO: b/358133268 - Remove the alpha and beta track overrides once we have the instance
  # partitions column in the GA track.
  output:
    ALPHA:
      format: |
        table(
          name.basename(): label=BACKUP,
          database.basename(): label=SOURCE_DATABASE,
          versionTime: label=VERSION_TIME,
          createTime: label=CREATION_TIME,
          expireTime: label=EXPIRATION_TIME,
          state: label=STATE,
          backupSchedules.join(", "): label=BACKUP_SCHEDULES,
          instancePartitions.instancePartition.join(", "): label=INSTANCE_PARTITIONS,
          encryptionInfo.encryptionType: label=ENCRYPTION_TYPE,
          sizeBytes: label=BACKUP_SIZE_BYTES,
          exclusiveSizeBytes: label=EXCLUSIVE_SIZE_BYTES,
          oldestVersionTime: label=OLDEST_VERSION_TIME
        )
    BETA:
      format: |
        table(
          name.basename(): label=BACKUP,
          database.basename(): label=SOURCE_DATABASE,
          versionTime: label=VERSION_TIME,
          createTime: label=CREATION_TIME,
          expireTime: label=EXPIRATION_TIME,
          state: label=STATE,
          backupSchedules.join(", "): label=BACKUP_SCHEDULES,
          instancePartitions.instancePartition.join(", "): label=INSTANCE_PARTITIONS,
          encryptionInfo.encryptionType: label=ENCRYPTION_TYPE,
          sizeBytes: label=BACKUP_SIZE_BYTES,
          exclusiveSizeBytes: label=EXCLUSIVE_SIZE_BYTES,
          oldestVersionTime: label=OLDEST_VERSION_TIME
        )
    GA:
      format: |
        table(
          name.basename(): label=BACKUP,
          database.basename(): label=SOURCE_DATABASE,
          versionTime: label=VERSION_TIME,
          createTime: label=CREATION_TIME,
          expireTime: label=EXPIRATION_TIME,
          state: label=STATE,
          backupSchedules.join(", "): label=BACKUP_SCHEDULES,
          encryptionInfo.encryptionType: label=ENCRYPTION_TYPE,
          sizeBytes: label=BACKUP_SIZE_BYTES,
          exclusiveSizeBytes: label=EXCLUSIVE_SIZE_BYTES,
          oldestVersionTime: label=OLDEST_VERSION_TIME
        )
