# -*- coding: utf-8 -*- #
# Copyright 2025 Google LLC. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# NOTE: This file is autogenerated and should not be edited by hand.
# AUTOGEN_CLI_VERSION: HEAD
- release_tracks:
  - ALPHA
  auto_generated: true
  help_text:
    brief: Update an application
    description: Update an application in a space.
    examples: |-
      To update the display name to `My New Application Name` for the application `my-application` in space `my-space`, project `my-project` and location `us-central1`, run:

        $ {command} my-application --space=my-space --project=my-project --location=us-central1 --display-name="My New Application Name"

      Or run:

        $ {command} projects/my-project/locations/us-central1/spaces/my-space/applications/my-application --display-name="My New Application Name"

      To update the source application template revision to `projects/my-project/locations/us-central1/spaces/my-space/applicationTemplates/my-app-template/revisions/rev2` for the application `my-application` in space `my-space`, project `my-project` and location `us-central1`, run:

        $ {command} my-application --space=my-space --project=my-project --location=us-central1 --source-application-template-revision=projects/my-project/locations/us-central1/spaces/my-space/applicationTemplates/my-app-template/revisions/rev2

      To update the component parameters with new key-value pairs of `project_id:new-project` and `service_name:new-service` for the component `projects/my-project/locations/us-central1/spaces/my-space/applicationTemplates/my-app-template/components/my-component` in application `my-application`, space `my-space`, project `my-project` and location `us-central1`, run the following shorthand example:

        $ {command} my-application --space=my-space --project=my-project --location=us-central1 --component-parameters=component=projects/my-project/locations/us-central1/spaces/my-space/applicationTemplates/my-app-template/components/my-component,parameters='[{"key": "project_id", "value": "new-project"}, {"key": "service_name", "value": "new-service"}]'

      Or run the following JSON example:

        $ {command} my-application --space=my-space --project=my-project --location=us-central1 --component-parameters='[{"component": "projects/my-project/locations/us-central1/spaces/my-space/applicationTemplates/my-app-template/components/my-component", "parameters": [{"key": "project_id", "value": "new-project"}, {"key": "service_name", "value": "new-service"}]}]'

      Or create a YAML or JSON file with the parameters and run the following file example:

        $ {command} my-application --space=my-space --project=my-project --location=us-central1 --component-parameters=component-parameters.json
  arguments:
    params:
    - help_text: |-
        Identifier. The name of the application.
        Format:
        projects/{project}/locations/{location}/spaces/{space}/applications/{application}
      is_positional: true
      is_primary_resource: true
      resource_spec: !REF googlecloudsdk.command_lib.design_center.v1alpha_resources:projects_locations_spaces_applications
      required: true
    - group:
        api_field: application.source
        arg_name: source
        clearable: true
        required: false
        help_text: |-
          Source template information for the deployment.
        params:
        - group:
            mutex: true
            help_text: |-
              Arguments for the source.
            params:
            - arg_name: source-application-template-revision
              api_field: application.source.applicationTemplateRevision
              required: false
              repeated: false
              help_text: |-
                Application template revision URI.
            - arg_name: source-shared-template-revision-uri
              api_field: application.source.sharedTemplateRevisionUri
              required: false
              repeated: false
              help_text: |-
                Shared template revision URI.
    - arg_name: app-parameters
      api_field: application.appParameters
      required: false
      repeated: true
      help_text: |-
        A list of parameters to attach to the deployment source object, which is a
        catalog entry or application template snapshot.
      clearable: true
      spec:
      - api_field: key
        help_text: |-
          The key of the parameter.
      - api_field: value
        type: arg_json
        help_text: |-
          The value of the parameter.
    - arg_name: component-parameters
      api_field: application.componentParameters
      required: false
      repeated: true
      help_text: |-
        A list of component parameters to associate with the application.
      clearable: true
      spec:
      - api_field: component
        help_text: |-
          The name of the component parameter.
      - api_field: parameters
        help_text: |-
          A list of parameters associated with the component.
        spec:
        - api_field: key
          help_text: |-
            The key of the parameter.
        - api_field: value
          type: arg_json
          help_text: |-
            The value of the parameter.
    - arg_name: service-account
      api_field: application.serviceAccount
      required: false
      repeated: false
      help_text: |-
        Your own service account that you use to deploy an application.
    - arg_name: display-name
      api_field: application.displayName
      required: false
      repeated: false
      help_text: |-
        Display name of the application.
    - arg_name: description
      api_field: application.description
      required: false
      repeated: false
      help_text: |-
        Description of the application.
    - group:
        api_field: application.attributes
        arg_name: attributes
        clearable: true
        required: false
        help_text: |-
          Consumer provided attributes.
        params:
        - group:
            api_field: application.attributes.criticality
            required: false
            help_text: |-
              Criticality of the Application, Service, or Workload
            params:
            - arg_name: criticality-level
              api_field: application.attributes.criticality.level
              required: false
              repeated: false
              help_text: |-
                Criticality level.
                Can contain only lowercase letters, numeric characters,
                underscores, and dashes. Can have a maximum length of 63 characters.
                Deprecated: Please refer to type instead.
            - arg_name: criticality-mission-critical
              api_field: application.attributes.criticality.missionCritical
              action: store_true_false
              required: false
              type: bool
              help_text: |-
                Indicates mission-critical Application, Service, or Workload.
                Deprecated: Please refer to type instead.
            - arg_name: criticality-type
              api_field: application.attributes.criticality.type
              required: false
              help_text: |-
                Criticality Type.
              choices:
              - arg_value: mission-critical
                enum_value: MISSION_CRITICAL
                help_text: |-
                  Mission critical service, application or workload.
              - arg_value: high
                enum_value: HIGH
                help_text: |-
                  High impact.
              - arg_value: medium
                enum_value: MEDIUM
                help_text: |-
                  Medium impact.
              - arg_value: low
                enum_value: LOW
                help_text: |-
                  Low impact.
        - group:
            api_field: application.attributes.environment
            required: false
            help_text: |-
              Environment of the Application, Service, or Workload
            params:
            - arg_name: environment
              api_field: application.attributes.environment.environment
              required: false
              repeated: false
              help_text: |-
                Environment name.
                Can contain only lowercase letters, numeric characters,
                underscores, and dashes. Can have a maximum length of 63 characters.
                Deprecated: Please refer to type instead.
            - arg_name: environment-type
              api_field: application.attributes.environment.type
              required: false
              help_text: |-
                Environment Type.
              choices:
              - arg_value: production
                enum_value: PRODUCTION
                help_text: |-
                  Production environment.
              - arg_value: staging
                enum_value: STAGING
                help_text: |-
                  Staging environment.
              - arg_value: test
                enum_value: TEST
                help_text: |-
                  Test environment.
              - arg_value: development
                enum_value: DEVELOPMENT
                help_text: |-
                  Development environment.
        - arg_name: attributes-developer-owners
          api_field: application.attributes.developerOwners
          required: false
          repeated: true
          help_text: |-
            Developer team that owns development and coding.
          clearable: true
          spec:
          - api_field: displayName
            help_text: |-
              Contact's name.
              Can have a maximum length of 63 characters.
          - api_field: email
            help_text: |-
              Email address of the contacts.
          - api_field: channel
            help_text: |-
              Communication channel of the contacts.
            spec:
            - api_field: uri
              help_text: |-
                URI of the channel.
        - arg_name: attributes-operator-owners
          api_field: application.attributes.operatorOwners
          required: false
          repeated: true
          help_text: |-
            Operator team that ensures runtime and operations.
          clearable: true
          spec:
          - api_field: displayName
            help_text: |-
              Contact's name.
              Can have a maximum length of 63 characters.
          - api_field: email
            help_text: |-
              Email address of the contacts.
          - api_field: channel
            help_text: |-
              Communication channel of the contacts.
            spec:
            - api_field: uri
              help_text: |-
                URI of the channel.
        - arg_name: attributes-business-owners
          api_field: application.attributes.businessOwners
          required: false
          repeated: true
          help_text: |-
            Business team that ensures user needs are met and value is delivered
          clearable: true
          spec:
          - api_field: displayName
            help_text: |-
              Contact's name.
              Can have a maximum length of 63 characters.
          - api_field: email
            help_text: |-
              Email address of the contacts.
          - api_field: channel
            help_text: |-
              Communication channel of the contacts.
            spec:
            - api_field: uri
              help_text: |-
                URI of the channel.
    - group:
        api_field: application.scope
        arg_name: scope
        clearable: true
        required: false
        help_text: |-
          Scope of an application.
        params:
        - arg_name: scope-type
          api_field: application.scope.type
          required: false
          help_text: |-
            Scope Type.
          choices:
          - arg_value: regional
            enum_value: REGIONAL
            help_text: |-
              Regional type.
          - arg_value: global
            enum_value: GLOBAL
            help_text: |-
              Global type.
    - arg_name: import-existing-resources
      api_field: application.importExistingResources
      action: store_true_false
      required: false
      type: bool
      help_text: |-
        Import existing resources into the application.
    - arg_name: deployment-region
      api_field: application.deploymentRegion
      required: false
      repeated: false
      help_text: |-
        The region where the application is deployed.
    - arg_name: deployment-project
      api_field: application.deploymentProject
      required: false
      repeated: false
      help_text: |-
        Deployment project of the application.
    - arg_name: connection-configs
      api_field: application.connectionConfigs
      required: false
      repeated: true
      help_text: |-
        Connection configuration for the application.
      clearable: true
      spec:
      - api_field: connectionUri
        help_text: |-
          The connection URI.
      - api_field: sourceComponentParameters
        help_text: |-
          The parameters of the connection associated with the source component.
        spec:
        - api_field: key
          help_text: |-
            The key of the parameter.
        - api_field: value
          type: arg_json
          help_text: |-
            The value of the parameter.
      - api_field: destinationComponentParameters
        help_text: |-
          The parameters of the connection associated with the destination component.
        spec:
        - api_field: key
          help_text: |-
            The key of the parameter.
        - api_field: value
          type: arg_json
          help_text: |-
            The value of the parameter.
  request:
    api_version: v1alpha
    collection:
    - designcenter.projects.locations.spaces.applications
  update:
    read_modify_update: true
