- release_tracks: [ALPHA, GA]

  help_text:
    brief: Create a Security Health Analytics custom module.
    description: Create a Security Health Analytics custom module.
    examples: |
      To create a Security Health Analytics custom module for given organization `123`, run:

        $ {command} --organization=organizations/123 \
            --display-name="test_display_name" \
            --enablement-state="ENABLED" \
            --custom-config-from-file=custom_config.yaml

      To create a Security Health Analytics custom module for given folder `456`, run:

        $ {command} --folder=folders/456 \
            --display-name="test_display_name" \
            --enablement-state="ENABLED"
            --custom-config-from-file=custom_config.yaml

      To create a Security Health Analytics custom module for given project `789`, run:

        $ {command} --project=projects/789 \
            --display-name="test_display_name" \
            --enablement-state="ENABLED"
            --custom-config-from-file=custom_config.yaml

  request:
    collection: securitycenter.organizations.securityHealthAnalyticsSettings.customModules
    disable_resource_check: true
    api_version: v1
    modify_request_hooks:
    - googlecloudsdk.command_lib.scc.custom_modules.sha.request_hooks:CreateSecurityHealthAnalyticsCustomModuleReqHook

  arguments:
    params:
    - group:
        mutex: true
        params:
        - arg_name: organization
          api_field: parent
          help_text: |
            Organization where the Security Health Analytics custom module resides. Formatted as `organizations/123` or just `123`.

        - arg_name: folder
          api_field: parent
          help_text: |
            Folder where the Security Health Analytics custom module resides. Formatted as `folders/456` or just `456`.

        - arg_name: project
          api_field: parent
          help_text: |
            ID or number of the project where the Security Health Analytics custom module resides. Formatted as `projects/789` or just `789`.

    - arg_name: display-name
      api_field: googleCloudSecuritycenterV1SecurityHealthAnalyticsCustomModule.displayName
      is_positional: false
      required: true
      help_text: |
        Sets the display name of the Security Health Analytics custom module. This display name becomes the finding category for all findings that are returned by this custom module. The display name must be between 1 and 128 characters, start with a lowercase letter, and contain alphanumeric characters or underscores only.

    - arg_name: enablement-state
      api_field: googleCloudSecuritycenterV1SecurityHealthAnalyticsCustomModule.enablementState
      is_positional: false
      required: true
      help_text: |
        Sets the enablement state of the Security Health Analytics custom module. From the following list of possible enablement states, specify either enabled or disabled only

    - arg_name: custom-config-from-file
      api_field: googleCloudSecuritycenterV1SecurityHealthAnalyticsCustomModule.customConfig
      type: "googlecloudsdk.calliope.arg_parsers:FileContents:"
      processor: googlecloudsdk.command_lib.scc.hooks:ProcessCustomConfigFile
      is_positional: false
      required: true
      help_text: |
        Path to a YAML file that contains the configuration for the Security Health Analytics custom module.

  output:
    format: yaml
