# 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 ResourceMetadata(Model):
    """Represents a Resource metadata.

    :param kind: Possible values include: 'bearerAuthenticationConnection',
     'sshKeyAuthenticationConnection', 'apiKeyAuthenticationConnection',
     'basicAuthenticationConnection', 'firstPartyADConnection',
     'amazonS3Connection', 'adlsGen2', 'd365Sales', 'd365Marketing',
     'attachCds', 'ftp', 'facebookAds', 'amlWorkspace', 'mlStudioWebservice',
     'adRoll', 'rollWorks', 'constantContact', 'campaignMonitor', 'http',
     'dotDigital', 'mailchimp', 'linkedIn', 'googleAds', 'marketo',
     'microsoftAds', 'omnisend', 'sendGrid', 'sendinblue', 'activeCampaign',
     'autopilot', 'klaviyo', 'snapchat', 'powerBI', 'azureSql', 'synapse'
    :type kind: str or ~dynamics.customerinsights.api.models.enum
    :param resource_id: Gets the Id of the resource.
    :type resource_id: str
    :param operation_id: Gets the Id of the operation being performed on the
     resource.
    :type operation_id: str
    :param name: Gets the Name of the resource.
    :type name: str
    :param description: Gets the Description of the resource.
    :type description: str
    :param key_vault_metadata_id: MetadataId for Linked KeyVaultMetadata
    :type key_vault_metadata_id: str
    :param mapped_secrets:
    :type mapped_secrets:
     ~dynamics.customerinsights.api.models.MappedSecretMetadata
    :param version: Version number of this object.
    :type version: long
    :param updated_by: UPN of the user who last updated this record.
    :type updated_by: str
    :param updated_utc: Time this object was last updated.
    :type updated_utc: datetime
    :param created_by: Email address of the user who created this record.
    :type created_by: str
    :param created_utc: Time this object was initially created.
    :type created_utc: datetime
    :param instance_id: Customer Insights instance id associated with this
     object.
    :type instance_id: str
    """

    _attribute_map = {
        'kind': {'key': 'kind', 'type': 'str'},
        'resource_id': {'key': 'resourceId', 'type': 'str'},
        'operation_id': {'key': 'operationId', 'type': 'str'},
        'name': {'key': 'name', 'type': 'str'},
        'description': {'key': 'description', 'type': 'str'},
        'key_vault_metadata_id': {'key': 'keyVaultMetadataId', 'type': 'str'},
        'mapped_secrets': {'key': 'mappedSecrets', 'type': 'MappedSecretMetadata'},
        'version': {'key': 'version', 'type': 'long'},
        'updated_by': {'key': 'updatedBy', 'type': 'str'},
        'updated_utc': {'key': 'updatedUtc', 'type': 'iso-8601'},
        'created_by': {'key': 'createdBy', 'type': 'str'},
        'created_utc': {'key': 'createdUtc', 'type': 'iso-8601'},
        'instance_id': {'key': 'instanceId', 'type': 'str'},
    }

    def __init__(self, *, kind=None, resource_id: str=None, operation_id: str=None, name: str=None, description: str=None, key_vault_metadata_id: str=None, mapped_secrets=None, version: int=None, updated_by: str=None, updated_utc=None, created_by: str=None, created_utc=None, instance_id: str=None, **kwargs) -> None:
        super(ResourceMetadata, self).__init__(**kwargs)
        self.kind = kind
        self.resource_id = resource_id
        self.operation_id = operation_id
        self.name = name
        self.description = description
        self.key_vault_metadata_id = key_vault_metadata_id
        self.mapped_secrets = mapped_secrets
        self.version = version
        self.updated_by = updated_by
        self.updated_utc = updated_utc
        self.created_by = created_by
        self.created_utc = created_utc
        self.instance_id = instance_id
