# coding: utf-8

"""
    Pages

    Use these endpoints for interacting with Landing Pages and Site Pages  # noqa: E501

    The version of the OpenAPI document: v3
    Generated by: https://openapi-generator.tech
"""


try:
    from inspect import getfullargspec
except ImportError:
    from inspect import getargspec as getfullargspec
import pprint
import re  # noqa: F401
import six

from hubspot.cms.pages.configuration import Configuration


class Page(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        "publish_date": "datetime",
        "language": "str",
        "enable_layout_stylesheets": "bool",
        "meta_description": "str",
        "attached_stylesheets": "list[dict[str, object]]",
        "password": "str",
        "publish_immediately": "bool",
        "html_title": "str",
        "translations": "dict[str, ContentLanguageVariation]",
        "id": "str",
        "state": "str",
        "slug": "str",
        "created_by_id": "str",
        "currently_published": "bool",
        "archived_in_dashboard": "bool",
        "created": "datetime",
        "content_type_category": "str",
        "mab_experiment_id": "str",
        "updated_by_id": "str",
        "translated_from_id": "str",
        "folder_id": "str",
        "widget_containers": "dict[str, object]",
        "page_expiry_redirect_id": "int",
        "dynamic_page_data_source_type": "int",
        "featured_image": "str",
        "author_name": "str",
        "domain": "str",
        "name": "str",
        "dynamic_page_hub_db_table_id": "str",
        "campaign": "str",
        "dynamic_page_data_source_id": "str",
        "enable_domain_stylesheets": "bool",
        "include_default_custom_css": "bool",
        "subcategory": "str",
        "layout_sections": "dict[str, LayoutSection]",
        "updated": "datetime",
        "footer_html": "str",
        "widgets": "dict[str, object]",
        "head_html": "str",
        "page_expiry_redirect_url": "str",
        "ab_status": "str",
        "use_featured_image": "bool",
        "ab_test_id": "str",
        "featured_image_alt_text": "str",
        "content_group_id": "str",
        "page_expiry_enabled": "bool",
        "template_path": "str",
        "url": "str",
        "public_access_rules": "list[object]",
        "archived_at": "datetime",
        "theme_settings_values": "dict[str, object]",
        "page_expiry_date": "int",
        "public_access_rules_enabled": "bool",
        "page_redirected": "bool",
        "current_state": "str",
        "category_id": "int",
        "link_rel_canonical_url": "str",
    }

    attribute_map = {
        "publish_date": "publishDate",
        "language": "language",
        "enable_layout_stylesheets": "enableLayoutStylesheets",
        "meta_description": "metaDescription",
        "attached_stylesheets": "attachedStylesheets",
        "password": "password",
        "publish_immediately": "publishImmediately",
        "html_title": "htmlTitle",
        "translations": "translations",
        "id": "id",
        "state": "state",
        "slug": "slug",
        "created_by_id": "createdById",
        "currently_published": "currentlyPublished",
        "archived_in_dashboard": "archivedInDashboard",
        "created": "created",
        "content_type_category": "contentTypeCategory",
        "mab_experiment_id": "mabExperimentId",
        "updated_by_id": "updatedById",
        "translated_from_id": "translatedFromId",
        "folder_id": "folderId",
        "widget_containers": "widgetContainers",
        "page_expiry_redirect_id": "pageExpiryRedirectId",
        "dynamic_page_data_source_type": "dynamicPageDataSourceType",
        "featured_image": "featuredImage",
        "author_name": "authorName",
        "domain": "domain",
        "name": "name",
        "dynamic_page_hub_db_table_id": "dynamicPageHubDbTableId",
        "campaign": "campaign",
        "dynamic_page_data_source_id": "dynamicPageDataSourceId",
        "enable_domain_stylesheets": "enableDomainStylesheets",
        "include_default_custom_css": "includeDefaultCustomCss",
        "subcategory": "subcategory",
        "layout_sections": "layoutSections",
        "updated": "updated",
        "footer_html": "footerHtml",
        "widgets": "widgets",
        "head_html": "headHtml",
        "page_expiry_redirect_url": "pageExpiryRedirectUrl",
        "ab_status": "abStatus",
        "use_featured_image": "useFeaturedImage",
        "ab_test_id": "abTestId",
        "featured_image_alt_text": "featuredImageAltText",
        "content_group_id": "contentGroupId",
        "page_expiry_enabled": "pageExpiryEnabled",
        "template_path": "templatePath",
        "url": "url",
        "public_access_rules": "publicAccessRules",
        "archived_at": "archivedAt",
        "theme_settings_values": "themeSettingsValues",
        "page_expiry_date": "pageExpiryDate",
        "public_access_rules_enabled": "publicAccessRulesEnabled",
        "page_redirected": "pageRedirected",
        "current_state": "currentState",
        "category_id": "categoryId",
        "link_rel_canonical_url": "linkRelCanonicalUrl",
    }

    def __init__(
        self,
        publish_date=None,
        language=None,
        enable_layout_stylesheets=None,
        meta_description=None,
        attached_stylesheets=None,
        password=None,
        publish_immediately=None,
        html_title=None,
        translations=None,
        id=None,
        state=None,
        slug=None,
        created_by_id=None,
        currently_published=None,
        archived_in_dashboard=None,
        created=None,
        content_type_category=None,
        mab_experiment_id=None,
        updated_by_id=None,
        translated_from_id=None,
        folder_id=None,
        widget_containers=None,
        page_expiry_redirect_id=None,
        dynamic_page_data_source_type=None,
        featured_image=None,
        author_name=None,
        domain=None,
        name=None,
        dynamic_page_hub_db_table_id=None,
        campaign=None,
        dynamic_page_data_source_id=None,
        enable_domain_stylesheets=None,
        include_default_custom_css=None,
        subcategory=None,
        layout_sections=None,
        updated=None,
        footer_html=None,
        widgets=None,
        head_html=None,
        page_expiry_redirect_url=None,
        ab_status=None,
        use_featured_image=None,
        ab_test_id=None,
        featured_image_alt_text=None,
        content_group_id=None,
        page_expiry_enabled=None,
        template_path=None,
        url=None,
        public_access_rules=None,
        archived_at=None,
        theme_settings_values=None,
        page_expiry_date=None,
        public_access_rules_enabled=None,
        page_redirected=None,
        current_state=None,
        category_id=None,
        link_rel_canonical_url=None,
        local_vars_configuration=None,
    ):  # noqa: E501
        """Page - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration.get_default_copy()
        self.local_vars_configuration = local_vars_configuration

        self._publish_date = None
        self._language = None
        self._enable_layout_stylesheets = None
        self._meta_description = None
        self._attached_stylesheets = None
        self._password = None
        self._publish_immediately = None
        self._html_title = None
        self._translations = None
        self._id = None
        self._state = None
        self._slug = None
        self._created_by_id = None
        self._currently_published = None
        self._archived_in_dashboard = None
        self._created = None
        self._content_type_category = None
        self._mab_experiment_id = None
        self._updated_by_id = None
        self._translated_from_id = None
        self._folder_id = None
        self._widget_containers = None
        self._page_expiry_redirect_id = None
        self._dynamic_page_data_source_type = None
        self._featured_image = None
        self._author_name = None
        self._domain = None
        self._name = None
        self._dynamic_page_hub_db_table_id = None
        self._campaign = None
        self._dynamic_page_data_source_id = None
        self._enable_domain_stylesheets = None
        self._include_default_custom_css = None
        self._subcategory = None
        self._layout_sections = None
        self._updated = None
        self._footer_html = None
        self._widgets = None
        self._head_html = None
        self._page_expiry_redirect_url = None
        self._ab_status = None
        self._use_featured_image = None
        self._ab_test_id = None
        self._featured_image_alt_text = None
        self._content_group_id = None
        self._page_expiry_enabled = None
        self._template_path = None
        self._url = None
        self._public_access_rules = None
        self._archived_at = None
        self._theme_settings_values = None
        self._page_expiry_date = None
        self._public_access_rules_enabled = None
        self._page_redirected = None
        self._current_state = None
        self._category_id = None
        self._link_rel_canonical_url = None
        self.discriminator = None

        self.publish_date = publish_date
        self.language = language
        self.enable_layout_stylesheets = enable_layout_stylesheets
        self.meta_description = meta_description
        self.attached_stylesheets = attached_stylesheets
        self.password = password
        self.publish_immediately = publish_immediately
        self.html_title = html_title
        self.translations = translations
        self.id = id
        self.state = state
        self.slug = slug
        self.created_by_id = created_by_id
        self.currently_published = currently_published
        self.archived_in_dashboard = archived_in_dashboard
        self.created = created
        self.content_type_category = content_type_category
        self.mab_experiment_id = mab_experiment_id
        self.updated_by_id = updated_by_id
        self.translated_from_id = translated_from_id
        self.folder_id = folder_id
        self.widget_containers = widget_containers
        self.page_expiry_redirect_id = page_expiry_redirect_id
        self.dynamic_page_data_source_type = dynamic_page_data_source_type
        self.featured_image = featured_image
        self.author_name = author_name
        self.domain = domain
        self.name = name
        self.dynamic_page_hub_db_table_id = dynamic_page_hub_db_table_id
        self.campaign = campaign
        self.dynamic_page_data_source_id = dynamic_page_data_source_id
        self.enable_domain_stylesheets = enable_domain_stylesheets
        self.include_default_custom_css = include_default_custom_css
        self.subcategory = subcategory
        self.layout_sections = layout_sections
        self.updated = updated
        self.footer_html = footer_html
        self.widgets = widgets
        self.head_html = head_html
        self.page_expiry_redirect_url = page_expiry_redirect_url
        self.ab_status = ab_status
        self.use_featured_image = use_featured_image
        self.ab_test_id = ab_test_id
        self.featured_image_alt_text = featured_image_alt_text
        self.content_group_id = content_group_id
        self.page_expiry_enabled = page_expiry_enabled
        self.template_path = template_path
        self.url = url
        self.public_access_rules = public_access_rules
        self.archived_at = archived_at
        self.theme_settings_values = theme_settings_values
        self.page_expiry_date = page_expiry_date
        self.public_access_rules_enabled = public_access_rules_enabled
        self.page_redirected = page_redirected
        self.current_state = current_state
        self.category_id = category_id
        self.link_rel_canonical_url = link_rel_canonical_url

    @property
    def publish_date(self):
        """Gets the publish_date of this Page.  # noqa: E501

        The date (ISO8601 format) the page is to be published at.  # noqa: E501

        :return: The publish_date of this Page.  # noqa: E501
        :rtype: datetime
        """
        return self._publish_date

    @publish_date.setter
    def publish_date(self, publish_date):
        """Sets the publish_date of this Page.

        The date (ISO8601 format) the page is to be published at.  # noqa: E501

        :param publish_date: The publish_date of this Page.  # noqa: E501
        :type publish_date: datetime
        """
        if self.local_vars_configuration.client_side_validation and publish_date is None:  # noqa: E501
            raise ValueError("Invalid value for `publish_date`, must not be `None`")  # noqa: E501

        self._publish_date = publish_date

    @property
    def language(self):
        """Gets the language of this Page.  # noqa: E501

        The explicitly defined ISO 639 language code of the page. If null, the page will default to the language of the Domain.  # noqa: E501

        :return: The language of this Page.  # noqa: E501
        :rtype: str
        """
        return self._language

    @language.setter
    def language(self, language):
        """Sets the language of this Page.

        The explicitly defined ISO 639 language code of the page. If null, the page will default to the language of the Domain.  # noqa: E501

        :param language: The language of this Page.  # noqa: E501
        :type language: str
        """
        if self.local_vars_configuration.client_side_validation and language is None:  # noqa: E501
            raise ValueError("Invalid value for `language`, must not be `None`")  # noqa: E501
        allowed_values = [
            "af",
            "af-na",
            "af-za",
            "agq",
            "agq-cm",
            "ak",
            "ak-gh",
            "am",
            "am-et",
            "ar",
            "ar-001",
            "ar-ae",
            "ar-bh",
            "ar-dj",
            "ar-dz",
            "ar-eg",
            "ar-eh",
            "ar-er",
            "ar-il",
            "ar-iq",
            "ar-jo",
            "ar-km",
            "ar-kw",
            "ar-lb",
            "ar-ly",
            "ar-ma",
            "ar-mr",
            "ar-om",
            "ar-ps",
            "ar-qa",
            "ar-sa",
            "ar-sd",
            "ar-so",
            "ar-ss",
            "ar-sy",
            "ar-td",
            "ar-tn",
            "ar-ye",
            "as",
            "as-in",
            "asa",
            "asa-tz",
            "ast",
            "ast-es",
            "az",
            "az-az",
            "bas",
            "bas-cm",
            "be",
            "be-by",
            "bem",
            "bem-zm",
            "bez",
            "bez-tz",
            "bg",
            "bg-bg",
            "bm",
            "bm-ml",
            "bn",
            "bn-bd",
            "bn-in",
            "bo",
            "bo-cn",
            "bo-in",
            "br",
            "br-fr",
            "brx",
            "brx-in",
            "bs",
            "bs-ba",
            "ca",
            "ca-ad",
            "ca-es",
            "ca-fr",
            "ca-it",
            "ccp",
            "ccp-bd",
            "ccp-in",
            "ce",
            "ce-ru",
            "ceb",
            "ceb-ph",
            "cgg",
            "cgg-ug",
            "chr",
            "chr-us",
            "ckb",
            "ckb-iq",
            "ckb-ir",
            "cs",
            "cs-cz",
            "cu",
            "cu-ru",
            "cy",
            "cy-gb",
            "da",
            "da-dk",
            "da-gl",
            "dav",
            "dav-ke",
            "de",
            "de-at",
            "de-be",
            "de-ch",
            "de-de",
            "de-gr",
            "de-it",
            "de-li",
            "de-lu",
            "dje",
            "dje-ne",
            "doi",
            "doi-in",
            "dsb",
            "dsb-de",
            "dua",
            "dua-cm",
            "dyo",
            "dyo-sn",
            "dz",
            "dz-bt",
            "ebu",
            "ebu-ke",
            "ee",
            "ee-gh",
            "ee-tg",
            "el",
            "el-cy",
            "el-gr",
            "en",
            "en-001",
            "en-150",
            "en-ae",
            "en-ag",
            "en-ai",
            "en-as",
            "en-at",
            "en-au",
            "en-bb",
            "en-be",
            "en-bi",
            "en-bm",
            "en-bs",
            "en-bw",
            "en-bz",
            "en-ca",
            "en-cc",
            "en-ch",
            "en-ck",
            "en-cm",
            "en-cn",
            "en-cx",
            "en-cy",
            "en-de",
            "en-dg",
            "en-dk",
            "en-dm",
            "en-er",
            "en-fi",
            "en-fj",
            "en-fk",
            "en-fm",
            "en-gb",
            "en-gd",
            "en-gg",
            "en-gh",
            "en-gi",
            "en-gm",
            "en-gu",
            "en-gy",
            "en-hk",
            "en-ie",
            "en-il",
            "en-im",
            "en-in",
            "en-io",
            "en-je",
            "en-jm",
            "en-ke",
            "en-ki",
            "en-kn",
            "en-ky",
            "en-lc",
            "en-lr",
            "en-ls",
            "en-lu",
            "en-mg",
            "en-mh",
            "en-mo",
            "en-mp",
            "en-ms",
            "en-mt",
            "en-mu",
            "en-mw",
            "en-mx",
            "en-my",
            "en-na",
            "en-nf",
            "en-ng",
            "en-nl",
            "en-nr",
            "en-nu",
            "en-nz",
            "en-pg",
            "en-ph",
            "en-pk",
            "en-pn",
            "en-pr",
            "en-pw",
            "en-rw",
            "en-sb",
            "en-sc",
            "en-sd",
            "en-se",
            "en-sg",
            "en-sh",
            "en-si",
            "en-sl",
            "en-ss",
            "en-sx",
            "en-sz",
            "en-tc",
            "en-tk",
            "en-to",
            "en-tt",
            "en-tv",
            "en-tz",
            "en-ug",
            "en-um",
            "en-us",
            "en-vc",
            "en-vg",
            "en-vi",
            "en-vu",
            "en-ws",
            "en-za",
            "en-zm",
            "en-zw",
            "eo",
            "eo-001",
            "es",
            "es-419",
            "es-ar",
            "es-bo",
            "es-br",
            "es-bz",
            "es-cl",
            "es-co",
            "es-cr",
            "es-cu",
            "es-do",
            "es-ea",
            "es-ec",
            "es-es",
            "es-gq",
            "es-gt",
            "es-hn",
            "es-ic",
            "es-mx",
            "es-ni",
            "es-pa",
            "es-pe",
            "es-ph",
            "es-pr",
            "es-py",
            "es-sv",
            "es-us",
            "es-uy",
            "es-ve",
            "et",
            "et-ee",
            "eu",
            "eu-es",
            "ewo",
            "ewo-cm",
            "fa",
            "fa-af",
            "fa-ir",
            "ff",
            "ff-bf",
            "ff-cm",
            "ff-gh",
            "ff-gm",
            "ff-gn",
            "ff-gw",
            "ff-lr",
            "ff-mr",
            "ff-ne",
            "ff-ng",
            "ff-sl",
            "ff-sn",
            "fi",
            "fi-fi",
            "fil",
            "fil-ph",
            "fo",
            "fo-dk",
            "fo-fo",
            "fr",
            "fr-be",
            "fr-bf",
            "fr-bi",
            "fr-bj",
            "fr-bl",
            "fr-ca",
            "fr-cd",
            "fr-cf",
            "fr-cg",
            "fr-ch",
            "fr-ci",
            "fr-cm",
            "fr-dj",
            "fr-dz",
            "fr-fr",
            "fr-ga",
            "fr-gf",
            "fr-gn",
            "fr-gp",
            "fr-gq",
            "fr-ht",
            "fr-km",
            "fr-lu",
            "fr-ma",
            "fr-mc",
            "fr-mf",
            "fr-mg",
            "fr-ml",
            "fr-mq",
            "fr-mr",
            "fr-mu",
            "fr-nc",
            "fr-ne",
            "fr-pf",
            "fr-pm",
            "fr-re",
            "fr-rw",
            "fr-sc",
            "fr-sn",
            "fr-sy",
            "fr-td",
            "fr-tg",
            "fr-tn",
            "fr-vu",
            "fr-wf",
            "fr-yt",
            "fur",
            "fur-it",
            "fy",
            "fy-nl",
            "ga",
            "ga-gb",
            "ga-ie",
            "gd",
            "gd-gb",
            "gl",
            "gl-es",
            "gsw",
            "gsw-ch",
            "gsw-fr",
            "gsw-li",
            "gu",
            "gu-in",
            "guz",
            "guz-ke",
            "gv",
            "gv-im",
            "ha",
            "ha-gh",
            "ha-ne",
            "ha-ng",
            "haw",
            "haw-us",
            "he",
            "hi",
            "hi-in",
            "hr",
            "hr-ba",
            "hr-hr",
            "hsb",
            "hsb-de",
            "hu",
            "hu-hu",
            "hy",
            "hy-am",
            "ia",
            "ia-001",
            "id",
            "ig",
            "ig-ng",
            "ii",
            "ii-cn",
            "id-id",
            "is",
            "is-is",
            "it",
            "it-ch",
            "it-it",
            "it-sm",
            "it-va",
            "he-il",
            "ja",
            "ja-jp",
            "jgo",
            "jgo-cm",
            "yi",
            "yi-001",
            "jmc",
            "jmc-tz",
            "jv",
            "jv-id",
            "ka",
            "ka-ge",
            "kab",
            "kab-dz",
            "kam",
            "kam-ke",
            "kde",
            "kde-tz",
            "kea",
            "kea-cv",
            "khq",
            "khq-ml",
            "ki",
            "ki-ke",
            "kk",
            "kk-kz",
            "kkj",
            "kkj-cm",
            "kl",
            "kl-gl",
            "kln",
            "kln-ke",
            "km",
            "km-kh",
            "kn",
            "kn-in",
            "ko",
            "ko-kp",
            "ko-kr",
            "kok",
            "kok-in",
            "ks",
            "ks-in",
            "ksb",
            "ksb-tz",
            "ksf",
            "ksf-cm",
            "ksh",
            "ksh-de",
            "kw",
            "kw-gb",
            "ku",
            "ku-tr",
            "ky",
            "ky-kg",
            "lag",
            "lag-tz",
            "lb",
            "lb-lu",
            "lg",
            "lg-ug",
            "lkt",
            "lkt-us",
            "ln",
            "ln-ao",
            "ln-cd",
            "ln-cf",
            "ln-cg",
            "lo",
            "lo-la",
            "lrc",
            "lrc-iq",
            "lrc-ir",
            "lt",
            "lt-lt",
            "lu",
            "lu-cd",
            "luo",
            "luo-ke",
            "luy",
            "luy-ke",
            "lv",
            "lv-lv",
            "mai",
            "mai-in",
            "mas",
            "mas-ke",
            "mas-tz",
            "mer",
            "mer-ke",
            "mfe",
            "mfe-mu",
            "mg",
            "mg-mg",
            "mgh",
            "mgh-mz",
            "mgo",
            "mgo-cm",
            "mi",
            "mi-nz",
            "mk",
            "mk-mk",
            "ml",
            "ml-in",
            "mn",
            "mn-mn",
            "mni",
            "mni-in",
            "mr",
            "mr-in",
            "ms",
            "ms-bn",
            "ms-id",
            "ms-my",
            "ms-sg",
            "mt",
            "mt-mt",
            "mua",
            "mua-cm",
            "my",
            "my-mm",
            "mzn",
            "mzn-ir",
            "naq",
            "naq-na",
            "nb",
            "nb-no",
            "nb-sj",
            "nd",
            "nd-zw",
            "nds",
            "nds-de",
            "nds-nl",
            "ne",
            "ne-in",
            "ne-np",
            "nl",
            "nl-aw",
            "nl-be",
            "nl-ch",
            "nl-bq",
            "nl-cw",
            "nl-lu",
            "nl-nl",
            "nl-sr",
            "nl-sx",
            "nmg",
            "nmg-cm",
            "nn",
            "nn-no",
            "nnh",
            "nnh-cm",
            "no",
            "no-no",
            "nus",
            "nus-ss",
            "nyn",
            "nyn-ug",
            "om",
            "om-et",
            "om-ke",
            "or",
            "or-in",
            "os",
            "os-ge",
            "os-ru",
            "pa",
            "pa-in",
            "pa-pk",
            "pcm",
            "pcm-ng",
            "pl",
            "pl-pl",
            "prg",
            "prg-001",
            "ps",
            "ps-af",
            "ps-pk",
            "pt",
            "pt-ao",
            "pt-br",
            "pt-ch",
            "pt-cv",
            "pt-gq",
            "pt-gw",
            "pt-lu",
            "pt-mo",
            "pt-mz",
            "pt-pt",
            "pt-st",
            "pt-tl",
            "qu",
            "qu-bo",
            "qu-ec",
            "qu-pe",
            "rm",
            "rm-ch",
            "rn",
            "rn-bi",
            "ro",
            "ro-md",
            "ro-ro",
            "rof",
            "rof-tz",
            "ru",
            "ru-by",
            "ru-kg",
            "ru-kz",
            "ru-md",
            "ru-ru",
            "ru-ua",
            "rw",
            "rw-rw",
            "rwk",
            "rwk-tz",
            "sa",
            "sa-in",
            "sah",
            "sah-ru",
            "saq",
            "saq-ke",
            "sat",
            "sat-in",
            "sbp",
            "sbp-tz",
            "sd",
            "sd-in",
            "sd-pk",
            "se",
            "se-fi",
            "se-no",
            "se-se",
            "seh",
            "seh-mz",
            "ses",
            "ses-ml",
            "sg",
            "sg-cf",
            "shi",
            "shi-ma",
            "si",
            "si-lk",
            "sk",
            "sk-sk",
            "sl",
            "sl-si",
            "smn",
            "smn-fi",
            "sn",
            "sn-zw",
            "so",
            "so-dj",
            "so-et",
            "so-ke",
            "so-so",
            "sq",
            "sq-al",
            "sq-mk",
            "sq-xk",
            "sr",
            "sr-ba",
            "sr-cs",
            "sr-me",
            "sr-rs",
            "sr-xk",
            "su",
            "su-id",
            "sv",
            "sv-ax",
            "sv-fi",
            "sv-se",
            "sw",
            "sw-cd",
            "sw-ke",
            "sw-tz",
            "sw-ug",
            "sy",
            "ta",
            "ta-in",
            "ta-lk",
            "ta-my",
            "ta-sg",
            "te",
            "te-in",
            "teo",
            "teo-ke",
            "teo-ug",
            "tg",
            "tg-tj",
            "th",
            "th-th",
            "ti",
            "ti-er",
            "ti-et",
            "tk",
            "tk-tm",
            "tl",
            "to",
            "to-to",
            "tr",
            "tr-cy",
            "tr-tr",
            "tt",
            "tt-ru",
            "twq",
            "twq-ne",
            "tzm",
            "tzm-ma",
            "ug",
            "ug-cn",
            "uk",
            "uk-ua",
            "ur",
            "ur-in",
            "ur-pk",
            "uz",
            "uz-af",
            "uz-uz",
            "vai",
            "vai-lr",
            "vi",
            "vi-vn",
            "vo",
            "vo-001",
            "vun",
            "vun-tz",
            "wae",
            "wae-ch",
            "wo",
            "wo-sn",
            "xh",
            "xh-za",
            "xog",
            "xog-ug",
            "yav",
            "yav-cm",
            "yo",
            "yo-bj",
            "yo-ng",
            "yue",
            "yue-cn",
            "yue-hk",
            "zgh",
            "zgh-ma",
            "zh",
            "zh-cn",
            "zh-hk",
            "zh-mo",
            "zh-sg",
            "zh-tw",
            "zh-hans",
            "zh-hant",
            "zu",
            "zu-za",
        ]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and language not in allowed_values:  # noqa: E501
            raise ValueError("Invalid value for `language` ({0}), must be one of {1}".format(language, allowed_values))  # noqa: E501

        self._language = language

    @property
    def enable_layout_stylesheets(self):
        """Gets the enable_layout_stylesheets of this Page.  # noqa: E501

        Boolean to determine whether or not the styles from the template should be applied.  # noqa: E501

        :return: The enable_layout_stylesheets of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._enable_layout_stylesheets

    @enable_layout_stylesheets.setter
    def enable_layout_stylesheets(self, enable_layout_stylesheets):
        """Sets the enable_layout_stylesheets of this Page.

        Boolean to determine whether or not the styles from the template should be applied.  # noqa: E501

        :param enable_layout_stylesheets: The enable_layout_stylesheets of this Page.  # noqa: E501
        :type enable_layout_stylesheets: bool
        """
        if self.local_vars_configuration.client_side_validation and enable_layout_stylesheets is None:  # noqa: E501
            raise ValueError("Invalid value for `enable_layout_stylesheets`, must not be `None`")  # noqa: E501

        self._enable_layout_stylesheets = enable_layout_stylesheets

    @property
    def meta_description(self):
        """Gets the meta_description of this Page.  # noqa: E501

        A description that goes in <meta> tag on the page.  # noqa: E501

        :return: The meta_description of this Page.  # noqa: E501
        :rtype: str
        """
        return self._meta_description

    @meta_description.setter
    def meta_description(self, meta_description):
        """Sets the meta_description of this Page.

        A description that goes in <meta> tag on the page.  # noqa: E501

        :param meta_description: The meta_description of this Page.  # noqa: E501
        :type meta_description: str
        """
        if self.local_vars_configuration.client_side_validation and meta_description is None:  # noqa: E501
            raise ValueError("Invalid value for `meta_description`, must not be `None`")  # noqa: E501

        self._meta_description = meta_description

    @property
    def attached_stylesheets(self):
        """Gets the attached_stylesheets of this Page.  # noqa: E501

        List of stylesheets to attach to this page. These stylesheets are attached to just this page. Order of precedence is bottom to top, just like in the HTML.  # noqa: E501

        :return: The attached_stylesheets of this Page.  # noqa: E501
        :rtype: list[dict[str, object]]
        """
        return self._attached_stylesheets

    @attached_stylesheets.setter
    def attached_stylesheets(self, attached_stylesheets):
        """Sets the attached_stylesheets of this Page.

        List of stylesheets to attach to this page. These stylesheets are attached to just this page. Order of precedence is bottom to top, just like in the HTML.  # noqa: E501

        :param attached_stylesheets: The attached_stylesheets of this Page.  # noqa: E501
        :type attached_stylesheets: list[dict[str, object]]
        """
        if self.local_vars_configuration.client_side_validation and attached_stylesheets is None:  # noqa: E501
            raise ValueError("Invalid value for `attached_stylesheets`, must not be `None`")  # noqa: E501

        self._attached_stylesheets = attached_stylesheets

    @property
    def password(self):
        """Gets the password of this Page.  # noqa: E501

        Set this to create a password protected page. Entering the password will be required to view the page.  # noqa: E501

        :return: The password of this Page.  # noqa: E501
        :rtype: str
        """
        return self._password

    @password.setter
    def password(self, password):
        """Sets the password of this Page.

        Set this to create a password protected page. Entering the password will be required to view the page.  # noqa: E501

        :param password: The password of this Page.  # noqa: E501
        :type password: str
        """
        if self.local_vars_configuration.client_side_validation and password is None:  # noqa: E501
            raise ValueError("Invalid value for `password`, must not be `None`")  # noqa: E501

        self._password = password

    @property
    def publish_immediately(self):
        """Gets the publish_immediately of this Page.  # noqa: E501

        Set this to true if you want to be published immediately when the schedule publish endpoint is called, and to ignore the publish_date setting.  # noqa: E501

        :return: The publish_immediately of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._publish_immediately

    @publish_immediately.setter
    def publish_immediately(self, publish_immediately):
        """Sets the publish_immediately of this Page.

        Set this to true if you want to be published immediately when the schedule publish endpoint is called, and to ignore the publish_date setting.  # noqa: E501

        :param publish_immediately: The publish_immediately of this Page.  # noqa: E501
        :type publish_immediately: bool
        """
        if self.local_vars_configuration.client_side_validation and publish_immediately is None:  # noqa: E501
            raise ValueError("Invalid value for `publish_immediately`, must not be `None`")  # noqa: E501

        self._publish_immediately = publish_immediately

    @property
    def html_title(self):
        """Gets the html_title of this Page.  # noqa: E501

        The html title of this page.  # noqa: E501

        :return: The html_title of this Page.  # noqa: E501
        :rtype: str
        """
        return self._html_title

    @html_title.setter
    def html_title(self, html_title):
        """Sets the html_title of this Page.

        The html title of this page.  # noqa: E501

        :param html_title: The html_title of this Page.  # noqa: E501
        :type html_title: str
        """
        if self.local_vars_configuration.client_side_validation and html_title is None:  # noqa: E501
            raise ValueError("Invalid value for `html_title`, must not be `None`")  # noqa: E501

        self._html_title = html_title

    @property
    def translations(self):
        """Gets the translations of this Page.  # noqa: E501


        :return: The translations of this Page.  # noqa: E501
        :rtype: dict[str, ContentLanguageVariation]
        """
        return self._translations

    @translations.setter
    def translations(self, translations):
        """Sets the translations of this Page.


        :param translations: The translations of this Page.  # noqa: E501
        :type translations: dict[str, ContentLanguageVariation]
        """
        if self.local_vars_configuration.client_side_validation and translations is None:  # noqa: E501
            raise ValueError("Invalid value for `translations`, must not be `None`")  # noqa: E501

        self._translations = translations

    @property
    def id(self):
        """Gets the id of this Page.  # noqa: E501

        The unique ID of the page.  # noqa: E501

        :return: The id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this Page.

        The unique ID of the page.  # noqa: E501

        :param id: The id of this Page.  # noqa: E501
        :type id: str
        """
        if self.local_vars_configuration.client_side_validation and id is None:  # noqa: E501
            raise ValueError("Invalid value for `id`, must not be `None`")  # noqa: E501

        self._id = id

    @property
    def state(self):
        """Gets the state of this Page.  # noqa: E501

        An ENUM descibing the current state of this page.  # noqa: E501

        :return: The state of this Page.  # noqa: E501
        :rtype: str
        """
        return self._state

    @state.setter
    def state(self, state):
        """Sets the state of this Page.

        An ENUM descibing the current state of this page.  # noqa: E501

        :param state: The state of this Page.  # noqa: E501
        :type state: str
        """
        if self.local_vars_configuration.client_side_validation and state is None:  # noqa: E501
            raise ValueError("Invalid value for `state`, must not be `None`")  # noqa: E501
        if self.local_vars_configuration.client_side_validation and state is not None and len(state) > 25:
            raise ValueError("Invalid value for `state`, length must be less than or equal to `25`")  # noqa: E501

        self._state = state

    @property
    def slug(self):
        """Gets the slug of this Page.  # noqa: E501

        The path of the this page. This field is appended to the domain to construct the url of this page.  # noqa: E501

        :return: The slug of this Page.  # noqa: E501
        :rtype: str
        """
        return self._slug

    @slug.setter
    def slug(self, slug):
        """Sets the slug of this Page.

        The path of the this page. This field is appended to the domain to construct the url of this page.  # noqa: E501

        :param slug: The slug of this Page.  # noqa: E501
        :type slug: str
        """
        if self.local_vars_configuration.client_side_validation and slug is None:  # noqa: E501
            raise ValueError("Invalid value for `slug`, must not be `None`")  # noqa: E501

        self._slug = slug

    @property
    def created_by_id(self):
        """Gets the created_by_id of this Page.  # noqa: E501

        The ID of the user that created this page.  # noqa: E501

        :return: The created_by_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._created_by_id

    @created_by_id.setter
    def created_by_id(self, created_by_id):
        """Sets the created_by_id of this Page.

        The ID of the user that created this page.  # noqa: E501

        :param created_by_id: The created_by_id of this Page.  # noqa: E501
        :type created_by_id: str
        """
        if self.local_vars_configuration.client_side_validation and created_by_id is None:  # noqa: E501
            raise ValueError("Invalid value for `created_by_id`, must not be `None`")  # noqa: E501

        self._created_by_id = created_by_id

    @property
    def currently_published(self):
        """Gets the currently_published of this Page.  # noqa: E501


        :return: The currently_published of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._currently_published

    @currently_published.setter
    def currently_published(self, currently_published):
        """Sets the currently_published of this Page.


        :param currently_published: The currently_published of this Page.  # noqa: E501
        :type currently_published: bool
        """
        if self.local_vars_configuration.client_side_validation and currently_published is None:  # noqa: E501
            raise ValueError("Invalid value for `currently_published`, must not be `None`")  # noqa: E501

        self._currently_published = currently_published

    @property
    def archived_in_dashboard(self):
        """Gets the archived_in_dashboard of this Page.  # noqa: E501

        If True, the page will not show up in your dashboard, although the page could still be live.  # noqa: E501

        :return: The archived_in_dashboard of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._archived_in_dashboard

    @archived_in_dashboard.setter
    def archived_in_dashboard(self, archived_in_dashboard):
        """Sets the archived_in_dashboard of this Page.

        If True, the page will not show up in your dashboard, although the page could still be live.  # noqa: E501

        :param archived_in_dashboard: The archived_in_dashboard of this Page.  # noqa: E501
        :type archived_in_dashboard: bool
        """
        if self.local_vars_configuration.client_side_validation and archived_in_dashboard is None:  # noqa: E501
            raise ValueError("Invalid value for `archived_in_dashboard`, must not be `None`")  # noqa: E501

        self._archived_in_dashboard = archived_in_dashboard

    @property
    def created(self):
        """Gets the created of this Page.  # noqa: E501


        :return: The created of this Page.  # noqa: E501
        :rtype: datetime
        """
        return self._created

    @created.setter
    def created(self, created):
        """Sets the created of this Page.


        :param created: The created of this Page.  # noqa: E501
        :type created: datetime
        """
        if self.local_vars_configuration.client_side_validation and created is None:  # noqa: E501
            raise ValueError("Invalid value for `created`, must not be `None`")  # noqa: E501

        self._created = created

    @property
    def content_type_category(self):
        """Gets the content_type_category of this Page.  # noqa: E501

        An ENUM descibing the type of this object. Should be either LANDING_PAGE or SITE_PAGE.  # noqa: E501

        :return: The content_type_category of this Page.  # noqa: E501
        :rtype: str
        """
        return self._content_type_category

    @content_type_category.setter
    def content_type_category(self, content_type_category):
        """Sets the content_type_category of this Page.

        An ENUM descibing the type of this object. Should be either LANDING_PAGE or SITE_PAGE.  # noqa: E501

        :param content_type_category: The content_type_category of this Page.  # noqa: E501
        :type content_type_category: str
        """
        if self.local_vars_configuration.client_side_validation and content_type_category is None:  # noqa: E501
            raise ValueError("Invalid value for `content_type_category`, must not be `None`")  # noqa: E501
        allowed_values = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and content_type_category not in allowed_values:  # noqa: E501
            raise ValueError("Invalid value for `content_type_category` ({0}), must be one of {1}".format(content_type_category, allowed_values))  # noqa: E501

        self._content_type_category = content_type_category

    @property
    def mab_experiment_id(self):
        """Gets the mab_experiment_id of this Page.  # noqa: E501

        The ID of the MAB test (or dynamic test) associated with this page, if applicable  # noqa: E501

        :return: The mab_experiment_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._mab_experiment_id

    @mab_experiment_id.setter
    def mab_experiment_id(self, mab_experiment_id):
        """Sets the mab_experiment_id of this Page.

        The ID of the MAB test (or dynamic test) associated with this page, if applicable  # noqa: E501

        :param mab_experiment_id: The mab_experiment_id of this Page.  # noqa: E501
        :type mab_experiment_id: str
        """
        if self.local_vars_configuration.client_side_validation and mab_experiment_id is None:  # noqa: E501
            raise ValueError("Invalid value for `mab_experiment_id`, must not be `None`")  # noqa: E501

        self._mab_experiment_id = mab_experiment_id

    @property
    def updated_by_id(self):
        """Gets the updated_by_id of this Page.  # noqa: E501

        The ID of the user that updated this page.  # noqa: E501

        :return: The updated_by_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._updated_by_id

    @updated_by_id.setter
    def updated_by_id(self, updated_by_id):
        """Sets the updated_by_id of this Page.

        The ID of the user that updated this page.  # noqa: E501

        :param updated_by_id: The updated_by_id of this Page.  # noqa: E501
        :type updated_by_id: str
        """
        if self.local_vars_configuration.client_side_validation and updated_by_id is None:  # noqa: E501
            raise ValueError("Invalid value for `updated_by_id`, must not be `None`")  # noqa: E501

        self._updated_by_id = updated_by_id

    @property
    def translated_from_id(self):
        """Gets the translated_from_id of this Page.  # noqa: E501

        ID of the primary page this object was translated from.  # noqa: E501

        :return: The translated_from_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._translated_from_id

    @translated_from_id.setter
    def translated_from_id(self, translated_from_id):
        """Sets the translated_from_id of this Page.

        ID of the primary page this object was translated from.  # noqa: E501

        :param translated_from_id: The translated_from_id of this Page.  # noqa: E501
        :type translated_from_id: str
        """
        if self.local_vars_configuration.client_side_validation and translated_from_id is None:  # noqa: E501
            raise ValueError("Invalid value for `translated_from_id`, must not be `None`")  # noqa: E501

        self._translated_from_id = translated_from_id

    @property
    def folder_id(self):
        """Gets the folder_id of this Page.  # noqa: E501

        The ID of the associated folder this landing page is organized under in the app dashboard.  # noqa: E501

        :return: The folder_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._folder_id

    @folder_id.setter
    def folder_id(self, folder_id):
        """Sets the folder_id of this Page.

        The ID of the associated folder this landing page is organized under in the app dashboard.  # noqa: E501

        :param folder_id: The folder_id of this Page.  # noqa: E501
        :type folder_id: str
        """
        if self.local_vars_configuration.client_side_validation and folder_id is None:  # noqa: E501
            raise ValueError("Invalid value for `folder_id`, must not be `None`")  # noqa: E501

        self._folder_id = folder_id

    @property
    def widget_containers(self):
        """Gets the widget_containers of this Page.  # noqa: E501

        A data structure containing the data for all the modules inside the containers for this page. This will only be populated if the page has widget containers.  # noqa: E501

        :return: The widget_containers of this Page.  # noqa: E501
        :rtype: dict[str, object]
        """
        return self._widget_containers

    @widget_containers.setter
    def widget_containers(self, widget_containers):
        """Sets the widget_containers of this Page.

        A data structure containing the data for all the modules inside the containers for this page. This will only be populated if the page has widget containers.  # noqa: E501

        :param widget_containers: The widget_containers of this Page.  # noqa: E501
        :type widget_containers: dict[str, object]
        """
        if self.local_vars_configuration.client_side_validation and widget_containers is None:  # noqa: E501
            raise ValueError("Invalid value for `widget_containers`, must not be `None`")  # noqa: E501

        self._widget_containers = widget_containers

    @property
    def page_expiry_redirect_id(self):
        """Gets the page_expiry_redirect_id of this Page.  # noqa: E501

        The ID of another page this page's url should redirect to once this page expires. Should only set this or pageExpiryRedirectUrl.  # noqa: E501

        :return: The page_expiry_redirect_id of this Page.  # noqa: E501
        :rtype: int
        """
        return self._page_expiry_redirect_id

    @page_expiry_redirect_id.setter
    def page_expiry_redirect_id(self, page_expiry_redirect_id):
        """Sets the page_expiry_redirect_id of this Page.

        The ID of another page this page's url should redirect to once this page expires. Should only set this or pageExpiryRedirectUrl.  # noqa: E501

        :param page_expiry_redirect_id: The page_expiry_redirect_id of this Page.  # noqa: E501
        :type page_expiry_redirect_id: int
        """
        if self.local_vars_configuration.client_side_validation and page_expiry_redirect_id is None:  # noqa: E501
            raise ValueError("Invalid value for `page_expiry_redirect_id`, must not be `None`")  # noqa: E501

        self._page_expiry_redirect_id = page_expiry_redirect_id

    @property
    def dynamic_page_data_source_type(self):
        """Gets the dynamic_page_data_source_type of this Page.  # noqa: E501


        :return: The dynamic_page_data_source_type of this Page.  # noqa: E501
        :rtype: int
        """
        return self._dynamic_page_data_source_type

    @dynamic_page_data_source_type.setter
    def dynamic_page_data_source_type(self, dynamic_page_data_source_type):
        """Sets the dynamic_page_data_source_type of this Page.


        :param dynamic_page_data_source_type: The dynamic_page_data_source_type of this Page.  # noqa: E501
        :type dynamic_page_data_source_type: int
        """
        if self.local_vars_configuration.client_side_validation and dynamic_page_data_source_type is None:  # noqa: E501
            raise ValueError("Invalid value for `dynamic_page_data_source_type`, must not be `None`")  # noqa: E501

        self._dynamic_page_data_source_type = dynamic_page_data_source_type

    @property
    def featured_image(self):
        """Gets the featured_image of this Page.  # noqa: E501

        The featuredImage of this page.  # noqa: E501

        :return: The featured_image of this Page.  # noqa: E501
        :rtype: str
        """
        return self._featured_image

    @featured_image.setter
    def featured_image(self, featured_image):
        """Sets the featured_image of this Page.

        The featuredImage of this page.  # noqa: E501

        :param featured_image: The featured_image of this Page.  # noqa: E501
        :type featured_image: str
        """
        if self.local_vars_configuration.client_side_validation and featured_image is None:  # noqa: E501
            raise ValueError("Invalid value for `featured_image`, must not be `None`")  # noqa: E501

        self._featured_image = featured_image

    @property
    def author_name(self):
        """Gets the author_name of this Page.  # noqa: E501

        The name of the user that updated this page.  # noqa: E501

        :return: The author_name of this Page.  # noqa: E501
        :rtype: str
        """
        return self._author_name

    @author_name.setter
    def author_name(self, author_name):
        """Sets the author_name of this Page.

        The name of the user that updated this page.  # noqa: E501

        :param author_name: The author_name of this Page.  # noqa: E501
        :type author_name: str
        """
        if self.local_vars_configuration.client_side_validation and author_name is None:  # noqa: E501
            raise ValueError("Invalid value for `author_name`, must not be `None`")  # noqa: E501

        self._author_name = author_name

    @property
    def domain(self):
        """Gets the domain of this Page.  # noqa: E501

        The domain this page will resolve to. If null, the page will default to the primary domain for this content type.  # noqa: E501

        :return: The domain of this Page.  # noqa: E501
        :rtype: str
        """
        return self._domain

    @domain.setter
    def domain(self, domain):
        """Sets the domain of this Page.

        The domain this page will resolve to. If null, the page will default to the primary domain for this content type.  # noqa: E501

        :param domain: The domain of this Page.  # noqa: E501
        :type domain: str
        """
        if self.local_vars_configuration.client_side_validation and domain is None:  # noqa: E501
            raise ValueError("Invalid value for `domain`, must not be `None`")  # noqa: E501

        self._domain = domain

    @property
    def name(self):
        """Gets the name of this Page.  # noqa: E501

        The internal name of the page.  # noqa: E501

        :return: The name of this Page.  # noqa: E501
        :rtype: str
        """
        return self._name

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

        The internal name of the page.  # noqa: E501

        :param name: The name of this Page.  # noqa: E501
        :type name: str
        """
        if self.local_vars_configuration.client_side_validation and name is None:  # noqa: E501
            raise ValueError("Invalid value for `name`, must not be `None`")  # noqa: E501

        self._name = name

    @property
    def dynamic_page_hub_db_table_id(self):
        """Gets the dynamic_page_hub_db_table_id of this Page.  # noqa: E501

        The ID of the HubDB table this page references, if applicable  # noqa: E501

        :return: The dynamic_page_hub_db_table_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._dynamic_page_hub_db_table_id

    @dynamic_page_hub_db_table_id.setter
    def dynamic_page_hub_db_table_id(self, dynamic_page_hub_db_table_id):
        """Sets the dynamic_page_hub_db_table_id of this Page.

        The ID of the HubDB table this page references, if applicable  # noqa: E501

        :param dynamic_page_hub_db_table_id: The dynamic_page_hub_db_table_id of this Page.  # noqa: E501
        :type dynamic_page_hub_db_table_id: str
        """
        if self.local_vars_configuration.client_side_validation and dynamic_page_hub_db_table_id is None:  # noqa: E501
            raise ValueError("Invalid value for `dynamic_page_hub_db_table_id`, must not be `None`")  # noqa: E501

        self._dynamic_page_hub_db_table_id = dynamic_page_hub_db_table_id

    @property
    def campaign(self):
        """Gets the campaign of this Page.  # noqa: E501

        The GUID of the marketing campaign this page is a part of.  # noqa: E501

        :return: The campaign of this Page.  # noqa: E501
        :rtype: str
        """
        return self._campaign

    @campaign.setter
    def campaign(self, campaign):
        """Sets the campaign of this Page.

        The GUID of the marketing campaign this page is a part of.  # noqa: E501

        :param campaign: The campaign of this Page.  # noqa: E501
        :type campaign: str
        """
        if self.local_vars_configuration.client_side_validation and campaign is None:  # noqa: E501
            raise ValueError("Invalid value for `campaign`, must not be `None`")  # noqa: E501

        self._campaign = campaign

    @property
    def dynamic_page_data_source_id(self):
        """Gets the dynamic_page_data_source_id of this Page.  # noqa: E501


        :return: The dynamic_page_data_source_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._dynamic_page_data_source_id

    @dynamic_page_data_source_id.setter
    def dynamic_page_data_source_id(self, dynamic_page_data_source_id):
        """Sets the dynamic_page_data_source_id of this Page.


        :param dynamic_page_data_source_id: The dynamic_page_data_source_id of this Page.  # noqa: E501
        :type dynamic_page_data_source_id: str
        """
        if self.local_vars_configuration.client_side_validation and dynamic_page_data_source_id is None:  # noqa: E501
            raise ValueError("Invalid value for `dynamic_page_data_source_id`, must not be `None`")  # noqa: E501

        self._dynamic_page_data_source_id = dynamic_page_data_source_id

    @property
    def enable_domain_stylesheets(self):
        """Gets the enable_domain_stylesheets of this Page.  # noqa: E501

        Boolean to determine whether or not the styles from the template should be applied.  # noqa: E501

        :return: The enable_domain_stylesheets of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._enable_domain_stylesheets

    @enable_domain_stylesheets.setter
    def enable_domain_stylesheets(self, enable_domain_stylesheets):
        """Sets the enable_domain_stylesheets of this Page.

        Boolean to determine whether or not the styles from the template should be applied.  # noqa: E501

        :param enable_domain_stylesheets: The enable_domain_stylesheets of this Page.  # noqa: E501
        :type enable_domain_stylesheets: bool
        """
        if self.local_vars_configuration.client_side_validation and enable_domain_stylesheets is None:  # noqa: E501
            raise ValueError("Invalid value for `enable_domain_stylesheets`, must not be `None`")  # noqa: E501

        self._enable_domain_stylesheets = enable_domain_stylesheets

    @property
    def include_default_custom_css(self):
        """Gets the include_default_custom_css of this Page.  # noqa: E501

        Boolean to determine whether or not the Primary CSS Files should be applied.  # noqa: E501

        :return: The include_default_custom_css of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._include_default_custom_css

    @include_default_custom_css.setter
    def include_default_custom_css(self, include_default_custom_css):
        """Sets the include_default_custom_css of this Page.

        Boolean to determine whether or not the Primary CSS Files should be applied.  # noqa: E501

        :param include_default_custom_css: The include_default_custom_css of this Page.  # noqa: E501
        :type include_default_custom_css: bool
        """
        if self.local_vars_configuration.client_side_validation and include_default_custom_css is None:  # noqa: E501
            raise ValueError("Invalid value for `include_default_custom_css`, must not be `None`")  # noqa: E501

        self._include_default_custom_css = include_default_custom_css

    @property
    def subcategory(self):
        """Gets the subcategory of this Page.  # noqa: E501

        Details the type of page this is. Should always be landing_page or site_page  # noqa: E501

        :return: The subcategory of this Page.  # noqa: E501
        :rtype: str
        """
        return self._subcategory

    @subcategory.setter
    def subcategory(self, subcategory):
        """Sets the subcategory of this Page.

        Details the type of page this is. Should always be landing_page or site_page  # noqa: E501

        :param subcategory: The subcategory of this Page.  # noqa: E501
        :type subcategory: str
        """
        if self.local_vars_configuration.client_side_validation and subcategory is None:  # noqa: E501
            raise ValueError("Invalid value for `subcategory`, must not be `None`")  # noqa: E501

        self._subcategory = subcategory

    @property
    def layout_sections(self):
        """Gets the layout_sections of this Page.  # noqa: E501

          # noqa: E501

        :return: The layout_sections of this Page.  # noqa: E501
        :rtype: dict[str, LayoutSection]
        """
        return self._layout_sections

    @layout_sections.setter
    def layout_sections(self, layout_sections):
        """Sets the layout_sections of this Page.

          # noqa: E501

        :param layout_sections: The layout_sections of this Page.  # noqa: E501
        :type layout_sections: dict[str, LayoutSection]
        """
        if self.local_vars_configuration.client_side_validation and layout_sections is None:  # noqa: E501
            raise ValueError("Invalid value for `layout_sections`, must not be `None`")  # noqa: E501

        self._layout_sections = layout_sections

    @property
    def updated(self):
        """Gets the updated of this Page.  # noqa: E501


        :return: The updated of this Page.  # noqa: E501
        :rtype: datetime
        """
        return self._updated

    @updated.setter
    def updated(self, updated):
        """Sets the updated of this Page.


        :param updated: The updated of this Page.  # noqa: E501
        :type updated: datetime
        """
        if self.local_vars_configuration.client_side_validation and updated is None:  # noqa: E501
            raise ValueError("Invalid value for `updated`, must not be `None`")  # noqa: E501

        self._updated = updated

    @property
    def footer_html(self):
        """Gets the footer_html of this Page.  # noqa: E501

        Custom HTML for embed codes, javascript that should be placed before the </body> tag of the page.  # noqa: E501

        :return: The footer_html of this Page.  # noqa: E501
        :rtype: str
        """
        return self._footer_html

    @footer_html.setter
    def footer_html(self, footer_html):
        """Sets the footer_html of this Page.

        Custom HTML for embed codes, javascript that should be placed before the </body> tag of the page.  # noqa: E501

        :param footer_html: The footer_html of this Page.  # noqa: E501
        :type footer_html: str
        """
        if self.local_vars_configuration.client_side_validation and footer_html is None:  # noqa: E501
            raise ValueError("Invalid value for `footer_html`, must not be `None`")  # noqa: E501

        self._footer_html = footer_html

    @property
    def widgets(self):
        """Gets the widgets of this Page.  # noqa: E501

        A data structure containing the data for all the modules for this page.  # noqa: E501

        :return: The widgets of this Page.  # noqa: E501
        :rtype: dict[str, object]
        """
        return self._widgets

    @widgets.setter
    def widgets(self, widgets):
        """Sets the widgets of this Page.

        A data structure containing the data for all the modules for this page.  # noqa: E501

        :param widgets: The widgets of this Page.  # noqa: E501
        :type widgets: dict[str, object]
        """
        if self.local_vars_configuration.client_side_validation and widgets is None:  # noqa: E501
            raise ValueError("Invalid value for `widgets`, must not be `None`")  # noqa: E501

        self._widgets = widgets

    @property
    def head_html(self):
        """Gets the head_html of this Page.  # noqa: E501

        Custom HTML for embed codes, javascript, etc. that goes in the <head> tag of the page.  # noqa: E501

        :return: The head_html of this Page.  # noqa: E501
        :rtype: str
        """
        return self._head_html

    @head_html.setter
    def head_html(self, head_html):
        """Sets the head_html of this Page.

        Custom HTML for embed codes, javascript, etc. that goes in the <head> tag of the page.  # noqa: E501

        :param head_html: The head_html of this Page.  # noqa: E501
        :type head_html: str
        """
        if self.local_vars_configuration.client_side_validation and head_html is None:  # noqa: E501
            raise ValueError("Invalid value for `head_html`, must not be `None`")  # noqa: E501

        self._head_html = head_html

    @property
    def page_expiry_redirect_url(self):
        """Gets the page_expiry_redirect_url of this Page.  # noqa: E501

        The URL this page's url should redirect to once this page expires. Should only set this or pageExpiryRedirectId.  # noqa: E501

        :return: The page_expiry_redirect_url of this Page.  # noqa: E501
        :rtype: str
        """
        return self._page_expiry_redirect_url

    @page_expiry_redirect_url.setter
    def page_expiry_redirect_url(self, page_expiry_redirect_url):
        """Sets the page_expiry_redirect_url of this Page.

        The URL this page's url should redirect to once this page expires. Should only set this or pageExpiryRedirectId.  # noqa: E501

        :param page_expiry_redirect_url: The page_expiry_redirect_url of this Page.  # noqa: E501
        :type page_expiry_redirect_url: str
        """
        if self.local_vars_configuration.client_side_validation and page_expiry_redirect_url is None:  # noqa: E501
            raise ValueError("Invalid value for `page_expiry_redirect_url`, must not be `None`")  # noqa: E501

        self._page_expiry_redirect_url = page_expiry_redirect_url

    @property
    def ab_status(self):
        """Gets the ab_status of this Page.  # noqa: E501

        The status of the AB test associated with this page, if applicable  # noqa: E501

        :return: The ab_status of this Page.  # noqa: E501
        :rtype: str
        """
        return self._ab_status

    @ab_status.setter
    def ab_status(self, ab_status):
        """Sets the ab_status of this Page.

        The status of the AB test associated with this page, if applicable  # noqa: E501

        :param ab_status: The ab_status of this Page.  # noqa: E501
        :type ab_status: str
        """
        if self.local_vars_configuration.client_side_validation and ab_status is None:  # noqa: E501
            raise ValueError("Invalid value for `ab_status`, must not be `None`")  # noqa: E501
        allowed_values = ["master", "variant", "loser_variant", "mab_master", "mab_variant", "automated_master", "automated_variant", "automated_loser_variant"]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and ab_status not in allowed_values:  # noqa: E501
            raise ValueError("Invalid value for `ab_status` ({0}), must be one of {1}".format(ab_status, allowed_values))  # noqa: E501

        self._ab_status = ab_status

    @property
    def use_featured_image(self):
        """Gets the use_featured_image of this Page.  # noqa: E501

        Boolean to determine if this page should use a featuredImage.  # noqa: E501

        :return: The use_featured_image of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._use_featured_image

    @use_featured_image.setter
    def use_featured_image(self, use_featured_image):
        """Sets the use_featured_image of this Page.

        Boolean to determine if this page should use a featuredImage.  # noqa: E501

        :param use_featured_image: The use_featured_image of this Page.  # noqa: E501
        :type use_featured_image: bool
        """
        if self.local_vars_configuration.client_side_validation and use_featured_image is None:  # noqa: E501
            raise ValueError("Invalid value for `use_featured_image`, must not be `None`")  # noqa: E501

        self._use_featured_image = use_featured_image

    @property
    def ab_test_id(self):
        """Gets the ab_test_id of this Page.  # noqa: E501

        The ID of the AB test associated with this page, if applicable  # noqa: E501

        :return: The ab_test_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._ab_test_id

    @ab_test_id.setter
    def ab_test_id(self, ab_test_id):
        """Sets the ab_test_id of this Page.

        The ID of the AB test associated with this page, if applicable  # noqa: E501

        :param ab_test_id: The ab_test_id of this Page.  # noqa: E501
        :type ab_test_id: str
        """
        if self.local_vars_configuration.client_side_validation and ab_test_id is None:  # noqa: E501
            raise ValueError("Invalid value for `ab_test_id`, must not be `None`")  # noqa: E501

        self._ab_test_id = ab_test_id

    @property
    def featured_image_alt_text(self):
        """Gets the featured_image_alt_text of this Page.  # noqa: E501

        Alt Text of the featuredImage.  # noqa: E501

        :return: The featured_image_alt_text of this Page.  # noqa: E501
        :rtype: str
        """
        return self._featured_image_alt_text

    @featured_image_alt_text.setter
    def featured_image_alt_text(self, featured_image_alt_text):
        """Sets the featured_image_alt_text of this Page.

        Alt Text of the featuredImage.  # noqa: E501

        :param featured_image_alt_text: The featured_image_alt_text of this Page.  # noqa: E501
        :type featured_image_alt_text: str
        """
        if self.local_vars_configuration.client_side_validation and featured_image_alt_text is None:  # noqa: E501
            raise ValueError("Invalid value for `featured_image_alt_text`, must not be `None`")  # noqa: E501

        self._featured_image_alt_text = featured_image_alt_text

    @property
    def content_group_id(self):
        """Gets the content_group_id of this Page.  # noqa: E501


        :return: The content_group_id of this Page.  # noqa: E501
        :rtype: str
        """
        return self._content_group_id

    @content_group_id.setter
    def content_group_id(self, content_group_id):
        """Sets the content_group_id of this Page.


        :param content_group_id: The content_group_id of this Page.  # noqa: E501
        :type content_group_id: str
        """
        if self.local_vars_configuration.client_side_validation and content_group_id is None:  # noqa: E501
            raise ValueError("Invalid value for `content_group_id`, must not be `None`")  # noqa: E501

        self._content_group_id = content_group_id

    @property
    def page_expiry_enabled(self):
        """Gets the page_expiry_enabled of this Page.  # noqa: E501

        Boolean describing if the page expiration feature is enabled for this page  # noqa: E501

        :return: The page_expiry_enabled of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._page_expiry_enabled

    @page_expiry_enabled.setter
    def page_expiry_enabled(self, page_expiry_enabled):
        """Sets the page_expiry_enabled of this Page.

        Boolean describing if the page expiration feature is enabled for this page  # noqa: E501

        :param page_expiry_enabled: The page_expiry_enabled of this Page.  # noqa: E501
        :type page_expiry_enabled: bool
        """
        if self.local_vars_configuration.client_side_validation and page_expiry_enabled is None:  # noqa: E501
            raise ValueError("Invalid value for `page_expiry_enabled`, must not be `None`")  # noqa: E501

        self._page_expiry_enabled = page_expiry_enabled

    @property
    def template_path(self):
        """Gets the template_path of this Page.  # noqa: E501

        String detailing the path of the template used for this page.  # noqa: E501

        :return: The template_path of this Page.  # noqa: E501
        :rtype: str
        """
        return self._template_path

    @template_path.setter
    def template_path(self, template_path):
        """Sets the template_path of this Page.

        String detailing the path of the template used for this page.  # noqa: E501

        :param template_path: The template_path of this Page.  # noqa: E501
        :type template_path: str
        """
        if self.local_vars_configuration.client_side_validation and template_path is None:  # noqa: E501
            raise ValueError("Invalid value for `template_path`, must not be `None`")  # noqa: E501

        self._template_path = template_path

    @property
    def url(self):
        """Gets the url of this Page.  # noqa: E501

        A generated field representing the URL of this page.  # noqa: E501

        :return: The url of this Page.  # noqa: E501
        :rtype: str
        """
        return self._url

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

        A generated field representing the URL of this page.  # noqa: E501

        :param url: The url of this Page.  # noqa: E501
        :type url: str
        """
        if self.local_vars_configuration.client_side_validation and url is None:  # noqa: E501
            raise ValueError("Invalid value for `url`, must not be `None`")  # noqa: E501

        self._url = url

    @property
    def public_access_rules(self):
        """Gets the public_access_rules of this Page.  # noqa: E501

        Rules for require member registration to access private content.  # noqa: E501

        :return: The public_access_rules of this Page.  # noqa: E501
        :rtype: list[object]
        """
        return self._public_access_rules

    @public_access_rules.setter
    def public_access_rules(self, public_access_rules):
        """Sets the public_access_rules of this Page.

        Rules for require member registration to access private content.  # noqa: E501

        :param public_access_rules: The public_access_rules of this Page.  # noqa: E501
        :type public_access_rules: list[object]
        """
        if self.local_vars_configuration.client_side_validation and public_access_rules is None:  # noqa: E501
            raise ValueError("Invalid value for `public_access_rules`, must not be `None`")  # noqa: E501

        self._public_access_rules = public_access_rules

    @property
    def archived_at(self):
        """Gets the archived_at of this Page.  # noqa: E501

        The timestamp (ISO8601 format) when this page was deleted.  # noqa: E501

        :return: The archived_at of this Page.  # noqa: E501
        :rtype: datetime
        """
        return self._archived_at

    @archived_at.setter
    def archived_at(self, archived_at):
        """Sets the archived_at of this Page.

        The timestamp (ISO8601 format) when this page was deleted.  # noqa: E501

        :param archived_at: The archived_at of this Page.  # noqa: E501
        :type archived_at: datetime
        """
        if self.local_vars_configuration.client_side_validation and archived_at is None:  # noqa: E501
            raise ValueError("Invalid value for `archived_at`, must not be `None`")  # noqa: E501

        self._archived_at = archived_at

    @property
    def theme_settings_values(self):
        """Gets the theme_settings_values of this Page.  # noqa: E501

          # noqa: E501

        :return: The theme_settings_values of this Page.  # noqa: E501
        :rtype: dict[str, object]
        """
        return self._theme_settings_values

    @theme_settings_values.setter
    def theme_settings_values(self, theme_settings_values):
        """Sets the theme_settings_values of this Page.

          # noqa: E501

        :param theme_settings_values: The theme_settings_values of this Page.  # noqa: E501
        :type theme_settings_values: dict[str, object]
        """
        if self.local_vars_configuration.client_side_validation and theme_settings_values is None:  # noqa: E501
            raise ValueError("Invalid value for `theme_settings_values`, must not be `None`")  # noqa: E501

        self._theme_settings_values = theme_settings_values

    @property
    def page_expiry_date(self):
        """Gets the page_expiry_date of this Page.  # noqa: E501

        The date at which this page should expire and begin redirecting to another url or page.  # noqa: E501

        :return: The page_expiry_date of this Page.  # noqa: E501
        :rtype: int
        """
        return self._page_expiry_date

    @page_expiry_date.setter
    def page_expiry_date(self, page_expiry_date):
        """Sets the page_expiry_date of this Page.

        The date at which this page should expire and begin redirecting to another url or page.  # noqa: E501

        :param page_expiry_date: The page_expiry_date of this Page.  # noqa: E501
        :type page_expiry_date: int
        """
        if self.local_vars_configuration.client_side_validation and page_expiry_date is None:  # noqa: E501
            raise ValueError("Invalid value for `page_expiry_date`, must not be `None`")  # noqa: E501

        self._page_expiry_date = page_expiry_date

    @property
    def public_access_rules_enabled(self):
        """Gets the public_access_rules_enabled of this Page.  # noqa: E501

        Boolean to determine whether or not to respect publicAccessRules.  # noqa: E501

        :return: The public_access_rules_enabled of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._public_access_rules_enabled

    @public_access_rules_enabled.setter
    def public_access_rules_enabled(self, public_access_rules_enabled):
        """Sets the public_access_rules_enabled of this Page.

        Boolean to determine whether or not to respect publicAccessRules.  # noqa: E501

        :param public_access_rules_enabled: The public_access_rules_enabled of this Page.  # noqa: E501
        :type public_access_rules_enabled: bool
        """
        if self.local_vars_configuration.client_side_validation and public_access_rules_enabled is None:  # noqa: E501
            raise ValueError("Invalid value for `public_access_rules_enabled`, must not be `None`")  # noqa: E501

        self._public_access_rules_enabled = public_access_rules_enabled

    @property
    def page_redirected(self):
        """Gets the page_redirected of this Page.  # noqa: E501

        A generated Boolean describing whether or not this page is currently expired and being redirected.  # noqa: E501

        :return: The page_redirected of this Page.  # noqa: E501
        :rtype: bool
        """
        return self._page_redirected

    @page_redirected.setter
    def page_redirected(self, page_redirected):
        """Sets the page_redirected of this Page.

        A generated Boolean describing whether or not this page is currently expired and being redirected.  # noqa: E501

        :param page_redirected: The page_redirected of this Page.  # noqa: E501
        :type page_redirected: bool
        """
        if self.local_vars_configuration.client_side_validation and page_redirected is None:  # noqa: E501
            raise ValueError("Invalid value for `page_redirected`, must not be `None`")  # noqa: E501

        self._page_redirected = page_redirected

    @property
    def current_state(self):
        """Gets the current_state of this Page.  # noqa: E501

        A generated ENUM descibing the current state of this page.  # noqa: E501

        :return: The current_state of this Page.  # noqa: E501
        :rtype: str
        """
        return self._current_state

    @current_state.setter
    def current_state(self, current_state):
        """Sets the current_state of this Page.

        A generated ENUM descibing the current state of this page.  # noqa: E501

        :param current_state: The current_state of this Page.  # noqa: E501
        :type current_state: str
        """
        if self.local_vars_configuration.client_side_validation and current_state is None:  # noqa: E501
            raise ValueError("Invalid value for `current_state`, must not be `None`")  # noqa: E501
        allowed_values = [
            "AUTOMATED",
            "AUTOMATED_DRAFT",
            "AUTOMATED_SENDING",
            "AUTOMATED_FOR_FORM",
            "AUTOMATED_FOR_FORM_BUFFER",
            "AUTOMATED_FOR_FORM_DRAFT",
            "AUTOMATED_FOR_FORM_LEGACY",
            "BLOG_EMAIL_DRAFT",
            "BLOG_EMAIL_PUBLISHED",
            "DRAFT",
            "DRAFT_AB",
            "DRAFT_AB_VARIANT",
            "ERROR",
            "LOSER_AB_VARIANT",
            "PAGE_STUB",
            "PRE_PROCESSING",
            "PROCESSING",
            "PUBLISHED",
            "PUBLISHED_AB",
            "PUBLISHED_AB_VARIANT",
            "PUBLISHED_OR_SCHEDULED",
            "RSS_TO_EMAIL_DRAFT",
            "RSS_TO_EMAIL_PUBLISHED",
            "SCHEDULED",
            "SCHEDULED_AB",
            "SCHEDULED_OR_PUBLISHED",
            "AUTOMATED_AB",
            "AUTOMATED_AB_VARIANT",
            "AUTOMATED_DRAFT_AB",
            "AUTOMATED_DRAFT_ABVARIANT",
            "AUTOMATED_LOSER_ABVARIANT",
        ]  # noqa: E501
        if self.local_vars_configuration.client_side_validation and current_state not in allowed_values:  # noqa: E501
            raise ValueError("Invalid value for `current_state` ({0}), must be one of {1}".format(current_state, allowed_values))  # noqa: E501

        self._current_state = current_state

    @property
    def category_id(self):
        """Gets the category_id of this Page.  # noqa: E501

        ID of the type of object this is. Should always .  # noqa: E501

        :return: The category_id of this Page.  # noqa: E501
        :rtype: int
        """
        return self._category_id

    @category_id.setter
    def category_id(self, category_id):
        """Sets the category_id of this Page.

        ID of the type of object this is. Should always .  # noqa: E501

        :param category_id: The category_id of this Page.  # noqa: E501
        :type category_id: int
        """
        if self.local_vars_configuration.client_side_validation and category_id is None:  # noqa: E501
            raise ValueError("Invalid value for `category_id`, must not be `None`")  # noqa: E501

        self._category_id = category_id

    @property
    def link_rel_canonical_url(self):
        """Gets the link_rel_canonical_url of this Page.  # noqa: E501

        Optional override to set the URL to be used in the rel=canonical link tag on the page.  # noqa: E501

        :return: The link_rel_canonical_url of this Page.  # noqa: E501
        :rtype: str
        """
        return self._link_rel_canonical_url

    @link_rel_canonical_url.setter
    def link_rel_canonical_url(self, link_rel_canonical_url):
        """Sets the link_rel_canonical_url of this Page.

        Optional override to set the URL to be used in the rel=canonical link tag on the page.  # noqa: E501

        :param link_rel_canonical_url: The link_rel_canonical_url of this Page.  # noqa: E501
        :type link_rel_canonical_url: str
        """
        if self.local_vars_configuration.client_side_validation and link_rel_canonical_url is None:  # noqa: E501
            raise ValueError("Invalid value for `link_rel_canonical_url`, must not be `None`")  # noqa: E501

        self._link_rel_canonical_url = link_rel_canonical_url

    def to_dict(self, serialize=False):
        """Returns the model properties as a dict"""
        result = {}

        def convert(x):
            if hasattr(x, "to_dict"):
                args = getfullargspec(x.to_dict).args
                if len(args) == 1:
                    return x.to_dict()
                else:
                    return x.to_dict(serialize)
            else:
                return x

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            attr = self.attribute_map.get(attr, attr) if serialize else attr
            if isinstance(value, list):
                result[attr] = list(map(lambda x: convert(x), value))
            elif isinstance(value, dict):
                result[attr] = dict(map(lambda item: (item[0], convert(item[1])), value.items()))
            else:
                result[attr] = convert(value)

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, Page):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, Page):
            return True

        return self.to_dict() != other.to_dict()
