- release_tracks: [ALPHA, BETA]
  help_text:
    brief: Update Privileged Access Manager (PAM) settings configured on a project, folder, or organization.
    description: |
      Update the Privileged Access Manager (PAM) settings configured for a specified project,
      folder, or organization. This command allows you to modify the settings using a YAML file.
    examples: |
      The following command updates PAM settings for the project named `sample-project` in location
      `global`, using the settings defined in a file named `pam_settings.yaml`:

      $ {command} --project=sample-project --location=global --settings-file=pam_settings.yaml

      The following command updates PAM settings for the folder with ID `FOLDER_ID` in location
      `global`, using the settings defined in a file named `pam_settings.yaml`:

      $ {command} --folder=FOLDER_ID --location=global --settings-file=pam_settings.yaml

      The following command updates PAM settings for the organization with ID `ORGANIZATION_ID`
      in location `global`, using the settings defined in a file named `pam_settings.yaml`:

      $ {command} --organization=ORGANIZATION_ID --location=global --settings-file=pam_settings.yaml

  request:
    ALPHA:
      api_version: v1alpha
    BETA:
      api_version: v1beta
    method: updateSettings
    collection:
    - privilegedaccessmanager.projects.locations
    - privilegedaccessmanager.folders.locations
    - privilegedaccessmanager.organizations.locations
    modify_request_hooks:
    - googlecloudsdk.command_lib.pam.util:SetUpdateMaskInUpdateSettingsRequest
    - googlecloudsdk.command_lib.pam.util:UpdateSettingsResource

  arguments:
    resource:
      arg_name: location
      is_positional: false
      spec: !REF googlecloudsdk.command_lib.pam.resources:location
      help_text: |
        The project/organization/folder location for which the settings are to be updated.

    params:
    - arg_name: settings-file
      api_field: settings
      required: true
      type: "googlecloudsdk.calliope.arg_parsers:FileContents:"
      processor: googlecloudsdk.core.yaml:load
      help_text: |
        YAML file containing the new configuration of the PAM settings.

  async:
    ALPHA:
      api_version: v1alpha
    collection:
    - privilegedaccessmanager.projects.locations.operations
    - privilegedaccessmanager.folders.locations.operations
    - privilegedaccessmanager.organizations.locations.operations
    extract_resource_result: false
    result_attribute: response

  output:
    format: yaml
