# Copyright 2019 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.
- release_tracks: [ALPHA, BETA, GA]

  help_text:
    brief: Create a new membership in an existing group.
    description: Create a new membership in an existing group.
    examples: |
      To create a new membership in a group:

        $ {command} --group-email="eng-discuss@foo.com"  \
            --member-email="user@foo.com"

  request:
    collection: cloudidentity.groups.memberships
    disable_resource_check: true
    method: create
    ALPHA:
      api_version: v1alpha1
    BETA:
      api_version: v1beta1
    GA:
      api_version: v1
    modify_request_hooks:
    - googlecloudsdk.command_lib.identity.groups.memberships.hooks:SetMembership
    - googlecloudsdk.command_lib.identity.groups.memberships.hooks:SetMembershipParent
    - googlecloudsdk.command_lib.identity.groups.memberships.hooks:SetEntityKey
    - googlecloudsdk.command_lib.identity.groups.memberships.hooks:SetMembershipRoles
    - googlecloudsdk.command_lib.identity.groups.memberships.hooks:SetExpiryDetail

  arguments:
    params:
    - arg_name: group-email
      type: str
      required: true
      help_text: |
        The email address of the group the new membership is being added to.

    - arg_name: member-email
      type: str
      required: true
      help_text: |
        The email address of the group or user being added to a group.

    - arg_name: organization
      release_tracks: [ALPHA, BETA]
      type: str
      help_text: |
        The organization ID of the group the new membership is being added to.

    - arg_name: expiration
      type: str
      help_text: |
        Optional time of expiration for the membership. This is given as a duration from now, for
        example '30d', '6m', '3y' for 30 days, 6 months, or 3 years respectively.

    - arg_name: roles
      type: arg_list
      help_text: |
        A comma-separated list of roles for a member within the Group. If not specified,
        MEMBER will be used as a default value.
