# coding=utf-8
# --------------------------------------------------------------------------
# Code generated by Microsoft (R) AutoRest Code Generator.
# Changes may cause incorrect behavior and will be lost if the code is
# regenerated.
# --------------------------------------------------------------------------

from msrest.serialization import Model


class UserGroupRequest(Model):
    """UserGroupRequest.

    All required parameters must be populated in order to send to Azure.

    :param user_group_name: Required. The user group name <span
     class='property-internal'>Must be between 0 and 64 characters</span> <span
     class='property-internal'>Required</span>
    :type user_group_name: str
    :param description: A description of the user group <span
     class='property-internal'>Must be between 0 and 255 characters</span>
    :type description: str
    :param members: List of system user ids in the group
     Hidden users cannot be added to groups
     On PUT request, if this property is null or not passed the group
     membership will not change
     To remove all members pass an empty list
    :type members: list[int]
    :param new_user_email: List of new users to create and add to the group
     The email cannot be currently used by another user
     Users are created as limited users with the Contact role and default
     topmost
    :type new_user_email: list[str]
    """

    _validation = {
        'user_group_name': {'required': True, 'max_length': 64, 'min_length': 0},
        'description': {'max_length': 255, 'min_length': 0},
    }

    _attribute_map = {
        'user_group_name': {'key': 'userGroupName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'members': {'key': 'members', 'type': '[int]'},
        'new_user_email': {'key': 'newUserEmail', 'type': '[str]'},
    }

    def __init__(self, *, user_group_name: str, description: str=None, members=None, new_user_email=None, **kwargs) -> None:
        super(UserGroupRequest, self).__init__(**kwargs)
        self.user_group_name = user_group_name
        self.description = description
        self.members = members
        self.new_user_email = new_user_email
