# 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 FileResponse(Model):
    """FileResponse.

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

    :param type: Required. Possible values include: 'Invalid', 'Picture',
     'Folder'
    :type type: str or ~smartdiagnostics_sdk.models.enum
    :param display_name:
    :type display_name: str
    :param parent_folder_id: Required.
    :type parent_folder_id: str
    :param description:
    :type description: str
    :param location:
    :type location: ~smartdiagnostics_sdk.models.LocationChild
    :param corporation:
    :type corporation: ~smartdiagnostics_sdk.models.CorporationChild
    :param group_ids: Ids of groups the file belongs to
    :type group_ids: list[str]
    :param id:
    :type id: str
    :param file_name:
    :type file_name: str
    :param thumbnail_file_name:
    :type thumbnail_file_name: str
    :param creation_date:
    :type creation_date: datetime
    :param update_date:
    :type update_date: datetime
    :param file_count:
    :type file_count: int
    :param folder_count:
    :type folder_count: int
    :param is_root_folder:
    :type is_root_folder: bool
    :param tags:
    :type tags: list[~smartdiagnostics_sdk.models.TagChild]
    """

    _validation = {
        'type': {'required': True},
        'display_name': {'max_length': 223},
        'parent_folder_id': {'required': True},
    }

    _attribute_map = {
        'type': {'key': 'Type', 'type': 'str'},
        'display_name': {'key': 'DisplayName', 'type': 'str'},
        'parent_folder_id': {'key': 'ParentFolderId', 'type': 'str'},
        'description': {'key': 'Description', 'type': 'str'},
        'location': {'key': 'Location', 'type': 'LocationChild'},
        'corporation': {'key': 'Corporation', 'type': 'CorporationChild'},
        'group_ids': {'key': 'GroupIds', 'type': '[str]'},
        'id': {'key': 'Id', 'type': 'str'},
        'file_name': {'key': 'FileName', 'type': 'str'},
        'thumbnail_file_name': {'key': 'ThumbnailFileName', 'type': 'str'},
        'creation_date': {'key': 'CreationDate', 'type': 'iso-8601'},
        'update_date': {'key': 'UpdateDate', 'type': 'iso-8601'},
        'file_count': {'key': 'FileCount', 'type': 'int'},
        'folder_count': {'key': 'FolderCount', 'type': 'int'},
        'is_root_folder': {'key': 'IsRootFolder', 'type': 'bool'},
        'tags': {'key': 'Tags', 'type': '[TagChild]'},
    }

    def __init__(self, *, type, parent_folder_id: str, display_name: str=None, description: str=None, location=None, corporation=None, group_ids=None, id: str=None, file_name: str=None, thumbnail_file_name: str=None, creation_date=None, update_date=None, file_count: int=None, folder_count: int=None, is_root_folder: bool=None, tags=None, **kwargs) -> None:
        super(FileResponse, self).__init__(**kwargs)
        self.type = type
        self.display_name = display_name
        self.parent_folder_id = parent_folder_id
        self.description = description
        self.location = location
        self.corporation = corporation
        self.group_ids = group_ids
        self.id = id
        self.file_name = file_name
        self.thumbnail_file_name = thumbnail_file_name
        self.creation_date = creation_date
        self.update_date = update_date
        self.file_count = file_count
        self.folder_count = folder_count
        self.is_root_folder = is_root_folder
        self.tags = tags
