# coding: utf-8

from __future__ import absolute_import
from datetime import date, datetime  # noqa: F401

from typing import List, Dict  # noqa: F401

from activity_index_server.models.base_model_ import Model
from activity_index_server import util


class AlignmentObject(Model):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """

    def __init__(self, target_description: str=None, alignment_type: str=None, target_url: str=None, target_name: str=None, educational_framework: str=None, same_as: str=None, url: str=None, image: object=None, additional_type: str=None, name: str=None, identifier: str=None, potential_action: object=None, main_entity_of_page: str=None, description: str=None, disambiguating_description: str=None, alternate_name: str=None):  # noqa: E501
        """AlignmentObject - a model defined in Swagger

        :param target_description: The target_description of this AlignmentObject.  # noqa: E501
        :type target_description: str
        :param alignment_type: The alignment_type of this AlignmentObject.  # noqa: E501
        :type alignment_type: str
        :param target_url: The target_url of this AlignmentObject.  # noqa: E501
        :type target_url: str
        :param target_name: The target_name of this AlignmentObject.  # noqa: E501
        :type target_name: str
        :param educational_framework: The educational_framework of this AlignmentObject.  # noqa: E501
        :type educational_framework: str
        :param same_as: The same_as of this AlignmentObject.  # noqa: E501
        :type same_as: str
        :param url: The url of this AlignmentObject.  # noqa: E501
        :type url: str
        :param image: The image of this AlignmentObject.  # noqa: E501
        :type image: object
        :param additional_type: The additional_type of this AlignmentObject.  # noqa: E501
        :type additional_type: str
        :param name: The name of this AlignmentObject.  # noqa: E501
        :type name: str
        :param identifier: The identifier of this AlignmentObject.  # noqa: E501
        :type identifier: str
        :param potential_action: The potential_action of this AlignmentObject.  # noqa: E501
        :type potential_action: object
        :param main_entity_of_page: The main_entity_of_page of this AlignmentObject.  # noqa: E501
        :type main_entity_of_page: str
        :param description: The description of this AlignmentObject.  # noqa: E501
        :type description: str
        :param disambiguating_description: The disambiguating_description of this AlignmentObject.  # noqa: E501
        :type disambiguating_description: str
        :param alternate_name: The alternate_name of this AlignmentObject.  # noqa: E501
        :type alternate_name: str
        """
        self.swagger_types = {
            'target_description': str,
            'alignment_type': str,
            'target_url': str,
            'target_name': str,
            'educational_framework': str,
            'same_as': str,
            'url': str,
            'image': object,
            'additional_type': str,
            'name': str,
            'identifier': str,
            'potential_action': object,
            'main_entity_of_page': str,
            'description': str,
            'disambiguating_description': str,
            'alternate_name': str
        }

        self.attribute_map = {
            'target_description': 'targetDescription',
            'alignment_type': 'alignmentType',
            'target_url': 'targetUrl',
            'target_name': 'targetName',
            'educational_framework': 'educationalFramework',
            'same_as': 'sameAs',
            'url': 'url',
            'image': 'image',
            'additional_type': 'additionalType',
            'name': 'name',
            'identifier': 'identifier',
            'potential_action': 'potentialAction',
            'main_entity_of_page': 'mainEntityOfPage',
            'description': 'description',
            'disambiguating_description': 'disambiguatingDescription',
            'alternate_name': 'alternateName'
        }

        self._target_description = target_description
        self._alignment_type = alignment_type
        self._target_url = target_url
        self._target_name = target_name
        self._educational_framework = educational_framework
        self._same_as = same_as
        self._url = url
        self._image = image
        self._additional_type = additional_type
        self._name = name
        self._identifier = identifier
        self._potential_action = potential_action
        self._main_entity_of_page = main_entity_of_page
        self._description = description
        self._disambiguating_description = disambiguating_description
        self._alternate_name = alternate_name

    @classmethod
    def from_dict(cls, dikt) -> 'AlignmentObject':
        """Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The AlignmentObject of this AlignmentObject.  # noqa: E501
        :rtype: AlignmentObject
        """
        return util.deserialize_model(dikt, cls)

    @property
    def target_description(self) -> str:
        """Gets the target_description of this AlignmentObject.

        The description of a node in an established educational framework.  # noqa: E501

        :return: The target_description of this AlignmentObject.
        :rtype: str
        """
        return self._target_description

    @target_description.setter
    def target_description(self, target_description: str):
        """Sets the target_description of this AlignmentObject.

        The description of a node in an established educational framework.  # noqa: E501

        :param target_description: The target_description of this AlignmentObject.
        :type target_description: str
        """

        self._target_description = target_description

    @property
    def alignment_type(self) -> str:
        """Gets the alignment_type of this AlignmentObject.

        A category of alignment between the learning resource and the framework node. Recommended values include:  assesses ,  teaches ,  requires ,  textComplexity ,  readingLevel ,  educationalSubject , and  educationalLevel .  # noqa: E501

        :return: The alignment_type of this AlignmentObject.
        :rtype: str
        """
        return self._alignment_type

    @alignment_type.setter
    def alignment_type(self, alignment_type: str):
        """Sets the alignment_type of this AlignmentObject.

        A category of alignment between the learning resource and the framework node. Recommended values include:  assesses ,  teaches ,  requires ,  textComplexity ,  readingLevel ,  educationalSubject , and  educationalLevel .  # noqa: E501

        :param alignment_type: The alignment_type of this AlignmentObject.
        :type alignment_type: str
        """

        self._alignment_type = alignment_type

    @property
    def target_url(self) -> str:
        """Gets the target_url of this AlignmentObject.

        The URL of a node in an established educational framework.  # noqa: E501

        :return: The target_url of this AlignmentObject.
        :rtype: str
        """
        return self._target_url

    @target_url.setter
    def target_url(self, target_url: str):
        """Sets the target_url of this AlignmentObject.

        The URL of a node in an established educational framework.  # noqa: E501

        :param target_url: The target_url of this AlignmentObject.
        :type target_url: str
        """

        self._target_url = target_url

    @property
    def target_name(self) -> str:
        """Gets the target_name of this AlignmentObject.

        The name of a node in an established educational framework.  # noqa: E501

        :return: The target_name of this AlignmentObject.
        :rtype: str
        """
        return self._target_name

    @target_name.setter
    def target_name(self, target_name: str):
        """Sets the target_name of this AlignmentObject.

        The name of a node in an established educational framework.  # noqa: E501

        :param target_name: The target_name of this AlignmentObject.
        :type target_name: str
        """

        self._target_name = target_name

    @property
    def educational_framework(self) -> str:
        """Gets the educational_framework of this AlignmentObject.

        The framework to which the resource being described is aligned.  # noqa: E501

        :return: The educational_framework of this AlignmentObject.
        :rtype: str
        """
        return self._educational_framework

    @educational_framework.setter
    def educational_framework(self, educational_framework: str):
        """Sets the educational_framework of this AlignmentObject.

        The framework to which the resource being described is aligned.  # noqa: E501

        :param educational_framework: The educational_framework of this AlignmentObject.
        :type educational_framework: str
        """

        self._educational_framework = educational_framework

    @property
    def same_as(self) -> str:
        """Gets the same_as of this AlignmentObject.

        URL of a reference Web page that unambiguously indicates the item s identity. E.g. the URL of the item s Wikipedia page, Wikidata entry, or official website.  # noqa: E501

        :return: The same_as of this AlignmentObject.
        :rtype: str
        """
        return self._same_as

    @same_as.setter
    def same_as(self, same_as: str):
        """Sets the same_as of this AlignmentObject.

        URL of a reference Web page that unambiguously indicates the item s identity. E.g. the URL of the item s Wikipedia page, Wikidata entry, or official website.  # noqa: E501

        :param same_as: The same_as of this AlignmentObject.
        :type same_as: str
        """

        self._same_as = same_as

    @property
    def url(self) -> str:
        """Gets the url of this AlignmentObject.

        URL of the item.  # noqa: E501

        :return: The url of this AlignmentObject.
        :rtype: str
        """
        return self._url

    @url.setter
    def url(self, url: str):
        """Sets the url of this AlignmentObject.

        URL of the item.  # noqa: E501

        :param url: The url of this AlignmentObject.
        :type url: str
        """

        self._url = url

    @property
    def image(self) -> object:
        """Gets the image of this AlignmentObject.

        An image of the item. This can be a URL or a fully described ImageObject.  # noqa: E501

        :return: The image of this AlignmentObject.
        :rtype: object
        """
        return self._image

    @image.setter
    def image(self, image: object):
        """Sets the image of this AlignmentObject.

        An image of the item. This can be a URL or a fully described ImageObject.  # noqa: E501

        :param image: The image of this AlignmentObject.
        :type image: object
        """

        self._image = image

    @property
    def additional_type(self) -> str:
        """Gets the additional_type of this AlignmentObject.

        An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. In RDFa syntax, it is better to use the native RDFa syntax - the  typeof  attribute - for multiple types. Schema.org tools may have only weaker understanding of extra types, in particular those defined externally.  # noqa: E501

        :return: The additional_type of this AlignmentObject.
        :rtype: str
        """
        return self._additional_type

    @additional_type.setter
    def additional_type(self, additional_type: str):
        """Sets the additional_type of this AlignmentObject.

        An additional type for the item, typically used for adding more specific types from external vocabularies in microdata syntax. This is a relationship between something and a class that the thing is in. In RDFa syntax, it is better to use the native RDFa syntax - the  typeof  attribute - for multiple types. Schema.org tools may have only weaker understanding of extra types, in particular those defined externally.  # noqa: E501

        :param additional_type: The additional_type of this AlignmentObject.
        :type additional_type: str
        """

        self._additional_type = additional_type

    @property
    def name(self) -> str:
        """Gets the name of this AlignmentObject.

        The name of the item.  # noqa: E501

        :return: The name of this AlignmentObject.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name: str):
        """Sets the name of this AlignmentObject.

        The name of the item.  # noqa: E501

        :param name: The name of this AlignmentObject.
        :type name: str
        """

        self._name = name

    @property
    def identifier(self) -> str:
        """Gets the identifier of this AlignmentObject.

        The identifier property represents any kind of identifier for any kind of Thing, such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties for representing many of these, either as textual strings or as URL (URI) links. See background notes for more details.  # noqa: E501

        :return: The identifier of this AlignmentObject.
        :rtype: str
        """
        return self._identifier

    @identifier.setter
    def identifier(self, identifier: str):
        """Sets the identifier of this AlignmentObject.

        The identifier property represents any kind of identifier for any kind of Thing, such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides dedicated properties for representing many of these, either as textual strings or as URL (URI) links. See background notes for more details.  # noqa: E501

        :param identifier: The identifier of this AlignmentObject.
        :type identifier: str
        """

        self._identifier = identifier

    @property
    def potential_action(self) -> object:
        """Gets the potential_action of this AlignmentObject.

        Indicates a potential Action, which describes an idealized action in which this thing would play an  object  role.  # noqa: E501

        :return: The potential_action of this AlignmentObject.
        :rtype: object
        """
        return self._potential_action

    @potential_action.setter
    def potential_action(self, potential_action: object):
        """Sets the potential_action of this AlignmentObject.

        Indicates a potential Action, which describes an idealized action in which this thing would play an  object  role.  # noqa: E501

        :param potential_action: The potential_action of this AlignmentObject.
        :type potential_action: object
        """

        self._potential_action = potential_action

    @property
    def main_entity_of_page(self) -> str:
        """Gets the main_entity_of_page of this AlignmentObject.

        Indicates a page (or other CreativeWork) for which this thing is the main entity being described. See background notes for details.  # noqa: E501

        :return: The main_entity_of_page of this AlignmentObject.
        :rtype: str
        """
        return self._main_entity_of_page

    @main_entity_of_page.setter
    def main_entity_of_page(self, main_entity_of_page: str):
        """Sets the main_entity_of_page of this AlignmentObject.

        Indicates a page (or other CreativeWork) for which this thing is the main entity being described. See background notes for details.  # noqa: E501

        :param main_entity_of_page: The main_entity_of_page of this AlignmentObject.
        :type main_entity_of_page: str
        """

        self._main_entity_of_page = main_entity_of_page

    @property
    def description(self) -> str:
        """Gets the description of this AlignmentObject.

        A description of the item.  # noqa: E501

        :return: The description of this AlignmentObject.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description: str):
        """Sets the description of this AlignmentObject.

        A description of the item.  # noqa: E501

        :param description: The description of this AlignmentObject.
        :type description: str
        """

        self._description = description

    @property
    def disambiguating_description(self) -> str:
        """Gets the disambiguating_description of this AlignmentObject.

        A sub property of description. A short description of the item used to disambiguate from other, similar items. Information from other properties (in particular, name) may be necessary for the description to be useful for disambiguation.  # noqa: E501

        :return: The disambiguating_description of this AlignmentObject.
        :rtype: str
        """
        return self._disambiguating_description

    @disambiguating_description.setter
    def disambiguating_description(self, disambiguating_description: str):
        """Sets the disambiguating_description of this AlignmentObject.

        A sub property of description. A short description of the item used to disambiguate from other, similar items. Information from other properties (in particular, name) may be necessary for the description to be useful for disambiguation.  # noqa: E501

        :param disambiguating_description: The disambiguating_description of this AlignmentObject.
        :type disambiguating_description: str
        """

        self._disambiguating_description = disambiguating_description

    @property
    def alternate_name(self) -> str:
        """Gets the alternate_name of this AlignmentObject.

        An alias for the item.  # noqa: E501

        :return: The alternate_name of this AlignmentObject.
        :rtype: str
        """
        return self._alternate_name

    @alternate_name.setter
    def alternate_name(self, alternate_name: str):
        """Sets the alternate_name of this AlignmentObject.

        An alias for the item.  # noqa: E501

        :param alternate_name: The alternate_name of this AlignmentObject.
        :type alternate_name: str
        """

        self._alternate_name = alternate_name
