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

from typing import Dict, List, Optional

import msrest.serialization


class AccessAssignment(msrest.serialization.Model):
    """AccessAssignment.

    :param action_ids:
    :type action_ids: list[str]
    :param attribute_conditions:
    :type attribute_conditions: list[~oscp.controlplane.models.AttributeCondition]
    """

    _attribute_map = {
        'action_ids': {'key': 'actionIds', 'type': '[str]'},
        'attribute_conditions': {'key': 'attributeConditions', 'type': '[AttributeCondition]'},
    }

    def __init__(
        self,
        *,
        action_ids: Optional[List[str]] = None,
        attribute_conditions: Optional[List["AttributeCondition"]] = None,
        **kwargs
    ):
        super(AccessAssignment, self).__init__(**kwargs)
        self.action_ids = action_ids
        self.attribute_conditions = attribute_conditions


class AttributeCondition(msrest.serialization.Model):
    """AttributeCondition.

    :param attribute_name:
    :type attribute_name: str
    :param values:
    :type values: list[str]
    :param attribute_matching_scheme:
    :type attribute_matching_scheme: str
    """

    _attribute_map = {
        'attribute_name': {'key': 'attributeName', 'type': 'str'},
        'values': {'key': 'values', 'type': '[str]'},
        'attribute_matching_scheme': {'key': 'attributeMatchingScheme', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        attribute_name: Optional[str] = None,
        values: Optional[List[str]] = None,
        attribute_matching_scheme: Optional[str] = None,
        **kwargs
    ):
        super(AttributeCondition, self).__init__(**kwargs)
        self.attribute_name = attribute_name
        self.values = values
        self.attribute_matching_scheme = attribute_matching_scheme


class ResourceOfShare(msrest.serialization.Model):
    """ResourceOfShare.

    :param id:
    :type id: str
    :param name:
    :type name: str
    :param type:
    :type type: str
    :param location:
    :type location: str
    :param e_tag:
    :type e_tag: str
    :param tags: A set of tags. The insensitive version of dictionary.
    :type tags: dict[str, str]
    :param properties:
    :type properties: ~oscp.controlplane.models.Share
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': 'Share'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        type: Optional[str] = None,
        location: Optional[str] = None,
        e_tag: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional["Share"] = None,
        **kwargs
    ):
        super(ResourceOfShare, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.type = type
        self.location = location
        self.e_tag = e_tag
        self.tags = tags
        self.properties = properties


class ResourceOfWorkspace(msrest.serialization.Model):
    """ResourceOfWorkspace.

    :param id:
    :type id: str
    :param name:
    :type name: str
    :param type:
    :type type: str
    :param location:
    :type location: str
    :param e_tag:
    :type e_tag: str
    :param tags: A set of tags. The insensitive version of dictionary.
    :type tags: dict[str, str]
    :param properties:
    :type properties: ~oscp.controlplane.models.Workspace
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': 'Workspace'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        type: Optional[str] = None,
        location: Optional[str] = None,
        e_tag: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional["Workspace"] = None,
        **kwargs
    ):
        super(ResourceOfWorkspace, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.type = type
        self.location = location
        self.e_tag = e_tag
        self.tags = tags
        self.properties = properties


class Share(msrest.serialization.Model):
    """Share.

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

    :param share_id: Gets or sets shareId.
    :type share_id: str
    :param share_name: Gets or sets the share Name.
    :type share_name: str
    :param description: Gets or sets the share description.
    :type description: str
    :param source_tenant_id:
    :type source_tenant_id: str
    :param target_tenant_id: Required. Gets or sets the Target TenantId.
    :type target_tenant_id: str
    :param share_state: Gets or sets the state.
    :type share_state: str
    :param access_assignments: Gets or sets the accessAssignments.
    :type access_assignments: list[~oscp.controlplane.models.AccessAssignment]
    """

    _validation = {
        'share_name': {'max_length': 512, 'min_length': 0},
        'description': {'max_length': 512, 'min_length': 0},
        'target_tenant_id': {'required': True, 'min_length': 1},
    }

    _attribute_map = {
        'share_id': {'key': 'shareId', 'type': 'str'},
        'share_name': {'key': 'shareName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'source_tenant_id': {'key': 'sourceTenantId', 'type': 'str'},
        'target_tenant_id': {'key': 'targetTenantId', 'type': 'str'},
        'share_state': {'key': 'shareState', 'type': 'str'},
        'access_assignments': {'key': 'accessAssignments', 'type': '[AccessAssignment]'},
    }

    def __init__(
        self,
        *,
        target_tenant_id: str,
        share_id: Optional[str] = None,
        share_name: Optional[str] = None,
        description: Optional[str] = None,
        source_tenant_id: Optional[str] = None,
        share_state: Optional[str] = None,
        access_assignments: Optional[List["AccessAssignment"]] = None,
        **kwargs
    ):
        super(Share, self).__init__(**kwargs)
        self.share_id = share_id
        self.share_name = share_name
        self.description = description
        self.source_tenant_id = source_tenant_id
        self.target_tenant_id = target_tenant_id
        self.share_state = share_state
        self.access_assignments = access_assignments


class Workspace(msrest.serialization.Model):
    """Workspace.

    :param workspace_id: The workspace Id.
    :type workspace_id: str
    :param provisioning_state: The provisioning state.
    :type provisioning_state: str
    :param share_id: Gets or sets the Share Id for projected Resource.
    :type share_id: str
    :param workspace_url: The Workspace Url.
    :type workspace_url: str
    """

    _validation = {
        'workspace_id': {'max_length': 128, 'min_length': 0},
    }

    _attribute_map = {
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'share_id': {'key': 'shareId', 'type': 'str'},
        'workspace_url': {'key': 'workspaceUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        workspace_id: Optional[str] = None,
        provisioning_state: Optional[str] = None,
        share_id: Optional[str] = None,
        workspace_url: Optional[str] = None,
        **kwargs
    ):
        super(Workspace, self).__init__(**kwargs)
        self.workspace_id = workspace_id
        self.provisioning_state = provisioning_state
        self.share_id = share_id
        self.workspace_url = workspace_url

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

from typing import Dict, List, Optional

import msrest.serialization


class AccessAssignment(msrest.serialization.Model):
    """AccessAssignment.

    :param action_ids:
    :type action_ids: list[str]
    :param attribute_conditions:
    :type attribute_conditions: list[~oscp.controlplane.models.AttributeCondition]
    """

    _attribute_map = {
        'action_ids': {'key': 'actionIds', 'type': '[str]'},
        'attribute_conditions': {'key': 'attributeConditions', 'type': '[AttributeCondition]'},
    }

    def __init__(
        self,
        *,
        action_ids: Optional[List[str]] = None,
        attribute_conditions: Optional[List["AttributeCondition"]] = None,
        **kwargs
    ):
        super(AccessAssignment, self).__init__(**kwargs)
        self.action_ids = action_ids
        self.attribute_conditions = attribute_conditions


class AttributeCondition(msrest.serialization.Model):
    """AttributeCondition.

    :param attribute_name:
    :type attribute_name: str
    :param values:
    :type values: list[str]
    :param attribute_matching_scheme:
    :type attribute_matching_scheme: str
    """

    _attribute_map = {
        'attribute_name': {'key': 'attributeName', 'type': 'str'},
        'values': {'key': 'values', 'type': '[str]'},
        'attribute_matching_scheme': {'key': 'attributeMatchingScheme', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        attribute_name: Optional[str] = None,
        values: Optional[List[str]] = None,
        attribute_matching_scheme: Optional[str] = None,
        **kwargs
    ):
        super(AttributeCondition, self).__init__(**kwargs)
        self.attribute_name = attribute_name
        self.values = values
        self.attribute_matching_scheme = attribute_matching_scheme


class ResourceOfShare(msrest.serialization.Model):
    """ResourceOfShare.

    :param id:
    :type id: str
    :param name:
    :type name: str
    :param type:
    :type type: str
    :param location:
    :type location: str
    :param e_tag:
    :type e_tag: str
    :param tags: A set of tags. The insensitive version of dictionary.
    :type tags: dict[str, str]
    :param properties:
    :type properties: ~oscp.controlplane.models.Share
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': 'Share'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        type: Optional[str] = None,
        location: Optional[str] = None,
        e_tag: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional["Share"] = None,
        **kwargs
    ):
        super(ResourceOfShare, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.type = type
        self.location = location
        self.e_tag = e_tag
        self.tags = tags
        self.properties = properties


class ResourceOfWorkspace(msrest.serialization.Model):
    """ResourceOfWorkspace.

    :param id:
    :type id: str
    :param name:
    :type name: str
    :param type:
    :type type: str
    :param location:
    :type location: str
    :param e_tag:
    :type e_tag: str
    :param tags: A set of tags. The insensitive version of dictionary.
    :type tags: dict[str, str]
    :param properties:
    :type properties: ~oscp.controlplane.models.Workspace
    """

    _attribute_map = {
        'id': {'key': 'id', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'type': {'key': 'type', 'type': 'str'},
        'location': {'key': 'location', 'type': 'str'},
        'e_tag': {'key': 'eTag', 'type': 'str'},
        'tags': {'key': 'tags', 'type': '{str}'},
        'properties': {'key': 'properties', 'type': 'Workspace'},
    }

    def __init__(
        self,
        *,
        id: Optional[str] = None,
        name: Optional[str] = None,
        type: Optional[str] = None,
        location: Optional[str] = None,
        e_tag: Optional[str] = None,
        tags: Optional[Dict[str, str]] = None,
        properties: Optional["Workspace"] = None,
        **kwargs
    ):
        super(ResourceOfWorkspace, self).__init__(**kwargs)
        self.id = id
        self.name = name
        self.type = type
        self.location = location
        self.e_tag = e_tag
        self.tags = tags
        self.properties = properties


class Share(msrest.serialization.Model):
    """Share.

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

    :param share_id: Gets or sets shareId.
    :type share_id: str
    :param share_name: Gets or sets the share Name.
    :type share_name: str
    :param description: Gets or sets the share description.
    :type description: str
    :param source_tenant_id:
    :type source_tenant_id: str
    :param target_tenant_id: Required. Gets or sets the Target TenantId.
    :type target_tenant_id: str
    :param share_state: Gets or sets the state.
    :type share_state: str
    :param access_assignments: Gets or sets the accessAssignments.
    :type access_assignments: list[~oscp.controlplane.models.AccessAssignment]
    """

    _validation = {
        'share_name': {'max_length': 512, 'min_length': 0},
        'description': {'max_length': 512, 'min_length': 0},
        'target_tenant_id': {'required': True, 'min_length': 1},
    }

    _attribute_map = {
        'share_id': {'key': 'shareId', 'type': 'str'},
        'share_name': {'key': 'shareName', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'source_tenant_id': {'key': 'sourceTenantId', 'type': 'str'},
        'target_tenant_id': {'key': 'targetTenantId', 'type': 'str'},
        'share_state': {'key': 'shareState', 'type': 'str'},
        'access_assignments': {'key': 'accessAssignments', 'type': '[AccessAssignment]'},
    }

    def __init__(
        self,
        *,
        target_tenant_id: str,
        share_id: Optional[str] = None,
        share_name: Optional[str] = None,
        description: Optional[str] = None,
        source_tenant_id: Optional[str] = None,
        share_state: Optional[str] = None,
        access_assignments: Optional[List["AccessAssignment"]] = None,
        **kwargs
    ):
        super(Share, self).__init__(**kwargs)
        self.share_id = share_id
        self.share_name = share_name
        self.description = description
        self.source_tenant_id = source_tenant_id
        self.target_tenant_id = target_tenant_id
        self.share_state = share_state
        self.access_assignments = access_assignments


class Workspace(msrest.serialization.Model):
    """Workspace.

    :param workspace_id: The workspace Id.
    :type workspace_id: str
    :param provisioning_state: The provisioning state.
    :type provisioning_state: str
    :param share_id: Gets or sets the Share Id for projected Resource.
    :type share_id: str
    :param workspace_url: The Workspace Url.
    :type workspace_url: str
    """

    _validation = {
        'workspace_id': {'max_length': 128, 'min_length': 0},
    }

    _attribute_map = {
        'workspace_id': {'key': 'workspaceId', 'type': 'str'},
        'provisioning_state': {'key': 'provisioningState', 'type': 'str'},
        'share_id': {'key': 'shareId', 'type': 'str'},
        'workspace_url': {'key': 'workspaceUrl', 'type': 'str'},
    }

    def __init__(
        self,
        *,
        workspace_id: Optional[str] = None,
        provisioning_state: Optional[str] = None,
        share_id: Optional[str] = None,
        workspace_url: Optional[str] = None,
        **kwargs
    ):
        super(Workspace, self).__init__(**kwargs)
        self.workspace_id = workspace_id
        self.provisioning_state = provisioning_state
        self.share_id = share_id
        self.workspace_url = workspace_url

# coding=utf-8 # -------------------------------------------------------------------------- # Code generated by Microsoft (R) AutoRest Code Generator (autorest: 3.2.1, generator: {generator}) # Changes may cause incorrect behavior and will be lost if the code is regenerated. # -------------------------------------------------------------------------- AccessAssignment.      :param action_ids:     :type action_ids: list[str]     :param attribute_conditions:     :type attribute_conditions: list[~oscp.controlplane.models.AttributeCondition] AttributeCondition.      :param attribute_name:     :type attribute_name: str     :param values:     :type values: list[str]     :param attribute_matching_scheme:     :type attribute_matching_scheme: str ResourceOfShare.      :param id:     :type id: str     :param name:     :type name: str     :param type:     :type type: str     :param location:     :type location: str     :param e_tag:     :type e_tag: str     :param tags: A set of tags. The insensitive version of dictionary.     :type tags: dict[str, str]     :param properties:     :type properties: ~oscp.controlplane.models.Share ResourceOfWorkspace.      :param id:     :type id: str     :param name:     :type name: str     :param type:     :type type: str     :param location:     :type location: str     :param e_tag:     :type e_tag: str     :param tags: A set of tags. The insensitive version of dictionary.     :type tags: dict[str, str]     :param properties:     :type properties: ~oscp.controlplane.models.Workspace Share.      All required parameters must be populated in order to send to Azure.      :param share_id: Gets or sets shareId.     :type share_id: str     :param share_name: Gets or sets the share Name.     :type share_name: str     :param description: Gets or sets the share description.     :type description: str     :param source_tenant_id:     :type source_tenant_id: str     :param target_tenant_id: Required. Gets or sets the Target TenantId.     :type target_tenant_id: str     :param share_state: Gets or sets the state.     :type share_state: str     :param access_assignments: Gets or sets the accessAssignments.     :type access_assignments: list[~oscp.controlplane.models.AccessAssignment] Workspace.      :param workspace_id: The workspace Id.     :type workspace_id: str     :param provisioning_state: The provisioning state.     :type provisioning_state: str     :param share_id: Gets or sets the Share Id for projected Resource.     :type share_id: str     :param workspace_url: The Workspace Url.     :type workspace_url: str