<?php
/**
 * Domain
 *
 * PHP version 7.4
 *
 * @category Class
 * @package  HubSpot\Client\Cms\Domains
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 */

/**
 * Domains
 *
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: v3
 * Generated by: https://openapi-generator.tech
 * OpenAPI Generator version: 6.0.1-SNAPSHOT
 */

/**
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

namespace HubSpot\Client\Cms\Domains\Model;

use \ArrayAccess;
use \HubSpot\Client\Cms\Domains\ObjectSerializer;

/**
 * Domain Class Doc Comment
 *
 * @category Class
 * @package  HubSpot\Client\Cms\Domains
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 * @implements \ArrayAccess<TKey, TValue>
 * @template TKey int|null
 * @template TValue mixed|null
 */
class Domain implements ModelInterface, ArrayAccess, \JsonSerializable
{
    public const DISCRIMINATOR = null;

    /**
      * The original name of the model.
      *
      * @var string
      */
    protected static $openAPIModelName = 'Domain';

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $openAPITypes = [
        'portal_id' => 'int',
        'id' => 'int',
        'created' => 'int',
        'updated' => 'int',
        'domain' => 'string',
        'primary_landing_page' => 'bool',
        'primary_email' => 'bool',
        'primary_blog' => 'bool',
        'primary_blog_post' => 'bool',
        'primary_site_page' => 'bool',
        'primary_knowledge' => 'bool',
        'primary_legacy_page' => 'bool',
        'primary_click_tracking' => 'bool',
        'full_category_key' => 'string',
        'secondary_to_domain' => 'string',
        'is_resolving' => 'bool',
        'is_dns_correct' => 'bool',
        'manually_marked_as_resolving' => 'bool',
        'consecutive_non_resolving_count' => 'int',
        'ssl_cname' => 'string',
        'is_ssl_enabled' => 'bool',
        'is_ssl_only' => 'bool',
        'certificate_id' => 'int',
        'ssl_request_id' => 'int',
        'is_used_for_blog_post' => 'bool',
        'is_used_for_site_page' => 'bool',
        'is_used_for_landing_page' => 'bool',
        'is_used_for_email' => 'bool',
        'is_used_for_knowledge' => 'bool',
        'setup_task_id' => 'int',
        'is_setup_complete' => 'bool',
        'set_up_language' => 'string',
        'team_ids' => 'int[]',
        'actual_cname' => 'string',
        'correct_cname' => 'string',
        'actual_ip' => 'string',
        'apex_resolution_status' => 'string',
        'apex_domain' => 'string',
        'public_suffix' => 'string',
        'apex_ip_addresses' => 'string[]',
        'site_id' => 'int',
        'brand_id' => 'int',
        'deletable' => 'bool',
        'domain_cdn_config' => '\HubSpot\Client\Cms\Domains\Model\DomainCdnConfig',
        'setup_info' => '\HubSpot\Client\Cms\Domains\Model\DomainSetupInfo',
        'derived_brand_name' => 'string',
        'created_by_id' => 'int',
        'updated_by_id' => 'int',
        'label' => 'string',
        'is_any_primary' => 'bool',
        'is_legacy_domain' => 'bool',
        'is_internal_domain' => 'bool',
        'is_resolving_internal_property' => 'bool',
        'is_resolving_ignoring_manually_marked_as_resolving' => 'bool',
        'is_used_for_any_content_type' => 'bool',
        'is_legacy' => 'bool',
        'author_at' => 'int',
        'cos_object_type' => 'string',
        'cdn_purge_embargo_time' => 'int',
        'is_staging_domain' => 'bool'
    ];

    /**
      * Array of property to format mappings. Used for (de)serialization
      *
      * @var string[]
      * @phpstan-var array<string, string|null>
      * @psalm-var array<string, string|null>
      */
    protected static $openAPIFormats = [
        'portal_id' => 'int32',
        'id' => 'int64',
        'created' => 'int64',
        'updated' => 'int64',
        'domain' => null,
        'primary_landing_page' => null,
        'primary_email' => null,
        'primary_blog' => null,
        'primary_blog_post' => null,
        'primary_site_page' => null,
        'primary_knowledge' => null,
        'primary_legacy_page' => null,
        'primary_click_tracking' => null,
        'full_category_key' => null,
        'secondary_to_domain' => null,
        'is_resolving' => null,
        'is_dns_correct' => null,
        'manually_marked_as_resolving' => null,
        'consecutive_non_resolving_count' => 'int32',
        'ssl_cname' => null,
        'is_ssl_enabled' => null,
        'is_ssl_only' => null,
        'certificate_id' => 'int64',
        'ssl_request_id' => 'int64',
        'is_used_for_blog_post' => null,
        'is_used_for_site_page' => null,
        'is_used_for_landing_page' => null,
        'is_used_for_email' => null,
        'is_used_for_knowledge' => null,
        'setup_task_id' => 'int64',
        'is_setup_complete' => null,
        'set_up_language' => null,
        'team_ids' => 'int64',
        'actual_cname' => null,
        'correct_cname' => null,
        'actual_ip' => null,
        'apex_resolution_status' => null,
        'apex_domain' => null,
        'public_suffix' => null,
        'apex_ip_addresses' => null,
        'site_id' => 'int64',
        'brand_id' => 'int64',
        'deletable' => null,
        'domain_cdn_config' => null,
        'setup_info' => null,
        'derived_brand_name' => null,
        'created_by_id' => 'int32',
        'updated_by_id' => 'int32',
        'label' => null,
        'is_any_primary' => null,
        'is_legacy_domain' => null,
        'is_internal_domain' => null,
        'is_resolving_internal_property' => null,
        'is_resolving_ignoring_manually_marked_as_resolving' => null,
        'is_used_for_any_content_type' => null,
        'is_legacy' => null,
        'author_at' => 'int64',
        'cos_object_type' => null,
        'cdn_purge_embargo_time' => 'int64',
        'is_staging_domain' => null
    ];

    /**
     * Array of property to type mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function openAPITypes()
    {
        return self::$openAPITypes;
    }

    /**
     * Array of property to format mappings. Used for (de)serialization
     *
     * @return array
     */
    public static function openAPIFormats()
    {
        return self::$openAPIFormats;
    }

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'portal_id' => 'portalId',
        'id' => 'id',
        'created' => 'created',
        'updated' => 'updated',
        'domain' => 'domain',
        'primary_landing_page' => 'primaryLandingPage',
        'primary_email' => 'primaryEmail',
        'primary_blog' => 'primaryBlog',
        'primary_blog_post' => 'primaryBlogPost',
        'primary_site_page' => 'primarySitePage',
        'primary_knowledge' => 'primaryKnowledge',
        'primary_legacy_page' => 'primaryLegacyPage',
        'primary_click_tracking' => 'primaryClickTracking',
        'full_category_key' => 'fullCategoryKey',
        'secondary_to_domain' => 'secondaryToDomain',
        'is_resolving' => 'isResolving',
        'is_dns_correct' => 'isDnsCorrect',
        'manually_marked_as_resolving' => 'manuallyMarkedAsResolving',
        'consecutive_non_resolving_count' => 'consecutiveNonResolvingCount',
        'ssl_cname' => 'sslCname',
        'is_ssl_enabled' => 'isSslEnabled',
        'is_ssl_only' => 'isSslOnly',
        'certificate_id' => 'certificateId',
        'ssl_request_id' => 'sslRequestId',
        'is_used_for_blog_post' => 'isUsedForBlogPost',
        'is_used_for_site_page' => 'isUsedForSitePage',
        'is_used_for_landing_page' => 'isUsedForLandingPage',
        'is_used_for_email' => 'isUsedForEmail',
        'is_used_for_knowledge' => 'isUsedForKnowledge',
        'setup_task_id' => 'setupTaskId',
        'is_setup_complete' => 'isSetupComplete',
        'set_up_language' => 'setUpLanguage',
        'team_ids' => 'teamIds',
        'actual_cname' => 'actualCname',
        'correct_cname' => 'correctCname',
        'actual_ip' => 'actualIp',
        'apex_resolution_status' => 'apexResolutionStatus',
        'apex_domain' => 'apexDomain',
        'public_suffix' => 'publicSuffix',
        'apex_ip_addresses' => 'apexIpAddresses',
        'site_id' => 'siteId',
        'brand_id' => 'brandId',
        'deletable' => 'deletable',
        'domain_cdn_config' => 'domainCdnConfig',
        'setup_info' => 'setupInfo',
        'derived_brand_name' => 'derivedBrandName',
        'created_by_id' => 'createdById',
        'updated_by_id' => 'updatedById',
        'label' => 'label',
        'is_any_primary' => 'isAnyPrimary',
        'is_legacy_domain' => 'isLegacyDomain',
        'is_internal_domain' => 'isInternalDomain',
        'is_resolving_internal_property' => 'isResolvingInternalProperty',
        'is_resolving_ignoring_manually_marked_as_resolving' => 'isResolvingIgnoringManuallyMarkedAsResolving',
        'is_used_for_any_content_type' => 'isUsedForAnyContentType',
        'is_legacy' => 'isLegacy',
        'author_at' => 'authorAt',
        'cos_object_type' => 'cosObjectType',
        'cdn_purge_embargo_time' => 'cdnPurgeEmbargoTime',
        'is_staging_domain' => 'isStagingDomain'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var string[]
     */
    protected static $setters = [
        'portal_id' => 'setPortalId',
        'id' => 'setId',
        'created' => 'setCreated',
        'updated' => 'setUpdated',
        'domain' => 'setDomain',
        'primary_landing_page' => 'setPrimaryLandingPage',
        'primary_email' => 'setPrimaryEmail',
        'primary_blog' => 'setPrimaryBlog',
        'primary_blog_post' => 'setPrimaryBlogPost',
        'primary_site_page' => 'setPrimarySitePage',
        'primary_knowledge' => 'setPrimaryKnowledge',
        'primary_legacy_page' => 'setPrimaryLegacyPage',
        'primary_click_tracking' => 'setPrimaryClickTracking',
        'full_category_key' => 'setFullCategoryKey',
        'secondary_to_domain' => 'setSecondaryToDomain',
        'is_resolving' => 'setIsResolving',
        'is_dns_correct' => 'setIsDnsCorrect',
        'manually_marked_as_resolving' => 'setManuallyMarkedAsResolving',
        'consecutive_non_resolving_count' => 'setConsecutiveNonResolvingCount',
        'ssl_cname' => 'setSslCname',
        'is_ssl_enabled' => 'setIsSslEnabled',
        'is_ssl_only' => 'setIsSslOnly',
        'certificate_id' => 'setCertificateId',
        'ssl_request_id' => 'setSslRequestId',
        'is_used_for_blog_post' => 'setIsUsedForBlogPost',
        'is_used_for_site_page' => 'setIsUsedForSitePage',
        'is_used_for_landing_page' => 'setIsUsedForLandingPage',
        'is_used_for_email' => 'setIsUsedForEmail',
        'is_used_for_knowledge' => 'setIsUsedForKnowledge',
        'setup_task_id' => 'setSetupTaskId',
        'is_setup_complete' => 'setIsSetupComplete',
        'set_up_language' => 'setSetUpLanguage',
        'team_ids' => 'setTeamIds',
        'actual_cname' => 'setActualCname',
        'correct_cname' => 'setCorrectCname',
        'actual_ip' => 'setActualIp',
        'apex_resolution_status' => 'setApexResolutionStatus',
        'apex_domain' => 'setApexDomain',
        'public_suffix' => 'setPublicSuffix',
        'apex_ip_addresses' => 'setApexIpAddresses',
        'site_id' => 'setSiteId',
        'brand_id' => 'setBrandId',
        'deletable' => 'setDeletable',
        'domain_cdn_config' => 'setDomainCdnConfig',
        'setup_info' => 'setSetupInfo',
        'derived_brand_name' => 'setDerivedBrandName',
        'created_by_id' => 'setCreatedById',
        'updated_by_id' => 'setUpdatedById',
        'label' => 'setLabel',
        'is_any_primary' => 'setIsAnyPrimary',
        'is_legacy_domain' => 'setIsLegacyDomain',
        'is_internal_domain' => 'setIsInternalDomain',
        'is_resolving_internal_property' => 'setIsResolvingInternalProperty',
        'is_resolving_ignoring_manually_marked_as_resolving' => 'setIsResolvingIgnoringManuallyMarkedAsResolving',
        'is_used_for_any_content_type' => 'setIsUsedForAnyContentType',
        'is_legacy' => 'setIsLegacy',
        'author_at' => 'setAuthorAt',
        'cos_object_type' => 'setCosObjectType',
        'cdn_purge_embargo_time' => 'setCdnPurgeEmbargoTime',
        'is_staging_domain' => 'setIsStagingDomain'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var string[]
     */
    protected static $getters = [
        'portal_id' => 'getPortalId',
        'id' => 'getId',
        'created' => 'getCreated',
        'updated' => 'getUpdated',
        'domain' => 'getDomain',
        'primary_landing_page' => 'getPrimaryLandingPage',
        'primary_email' => 'getPrimaryEmail',
        'primary_blog' => 'getPrimaryBlog',
        'primary_blog_post' => 'getPrimaryBlogPost',
        'primary_site_page' => 'getPrimarySitePage',
        'primary_knowledge' => 'getPrimaryKnowledge',
        'primary_legacy_page' => 'getPrimaryLegacyPage',
        'primary_click_tracking' => 'getPrimaryClickTracking',
        'full_category_key' => 'getFullCategoryKey',
        'secondary_to_domain' => 'getSecondaryToDomain',
        'is_resolving' => 'getIsResolving',
        'is_dns_correct' => 'getIsDnsCorrect',
        'manually_marked_as_resolving' => 'getManuallyMarkedAsResolving',
        'consecutive_non_resolving_count' => 'getConsecutiveNonResolvingCount',
        'ssl_cname' => 'getSslCname',
        'is_ssl_enabled' => 'getIsSslEnabled',
        'is_ssl_only' => 'getIsSslOnly',
        'certificate_id' => 'getCertificateId',
        'ssl_request_id' => 'getSslRequestId',
        'is_used_for_blog_post' => 'getIsUsedForBlogPost',
        'is_used_for_site_page' => 'getIsUsedForSitePage',
        'is_used_for_landing_page' => 'getIsUsedForLandingPage',
        'is_used_for_email' => 'getIsUsedForEmail',
        'is_used_for_knowledge' => 'getIsUsedForKnowledge',
        'setup_task_id' => 'getSetupTaskId',
        'is_setup_complete' => 'getIsSetupComplete',
        'set_up_language' => 'getSetUpLanguage',
        'team_ids' => 'getTeamIds',
        'actual_cname' => 'getActualCname',
        'correct_cname' => 'getCorrectCname',
        'actual_ip' => 'getActualIp',
        'apex_resolution_status' => 'getApexResolutionStatus',
        'apex_domain' => 'getApexDomain',
        'public_suffix' => 'getPublicSuffix',
        'apex_ip_addresses' => 'getApexIpAddresses',
        'site_id' => 'getSiteId',
        'brand_id' => 'getBrandId',
        'deletable' => 'getDeletable',
        'domain_cdn_config' => 'getDomainCdnConfig',
        'setup_info' => 'getSetupInfo',
        'derived_brand_name' => 'getDerivedBrandName',
        'created_by_id' => 'getCreatedById',
        'updated_by_id' => 'getUpdatedById',
        'label' => 'getLabel',
        'is_any_primary' => 'getIsAnyPrimary',
        'is_legacy_domain' => 'getIsLegacyDomain',
        'is_internal_domain' => 'getIsInternalDomain',
        'is_resolving_internal_property' => 'getIsResolvingInternalProperty',
        'is_resolving_ignoring_manually_marked_as_resolving' => 'getIsResolvingIgnoringManuallyMarkedAsResolving',
        'is_used_for_any_content_type' => 'getIsUsedForAnyContentType',
        'is_legacy' => 'getIsLegacy',
        'author_at' => 'getAuthorAt',
        'cos_object_type' => 'getCosObjectType',
        'cdn_purge_embargo_time' => 'getCdnPurgeEmbargoTime',
        'is_staging_domain' => 'getIsStagingDomain'
    ];

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name
     *
     * @return array
     */
    public static function attributeMap()
    {
        return self::$attributeMap;
    }

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @return array
     */
    public static function setters()
    {
        return self::$setters;
    }

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @return array
     */
    public static function getters()
    {
        return self::$getters;
    }

    /**
     * The original name of the model.
     *
     * @return string
     */
    public function getModelName()
    {
        return self::$openAPIModelName;
    }

    public const APEX_RESOLUTION_STATUS_INELIGIBLE = 'INELIGIBLE';
    public const APEX_RESOLUTION_STATUS_SUGGEST_RESOLVING = 'SUGGEST_RESOLVING';
    public const APEX_RESOLUTION_STATUS_ALREADY_RESOLVING = 'ALREADY_RESOLVING';
    public const APEX_RESOLUTION_STATUS_ERROR = 'ERROR';
    public const COS_OBJECT_TYPE_CONTENT = 'CONTENT';
    public const COS_OBJECT_TYPE_EXTENSION_RESOURCE = 'EXTENSION_RESOURCE';
    public const COS_OBJECT_TYPE_LAYOUT = 'LAYOUT';
    public const COS_OBJECT_TYPE_CUSTOM_WIDGET = 'CUSTOM_WIDGET';
    public const COS_OBJECT_TYPE_WIDGET = 'WIDGET';
    public const COS_OBJECT_TYPE_FORM = 'FORM';
    public const COS_OBJECT_TYPE_PLACEMENT = 'PLACEMENT';
    public const COS_OBJECT_TYPE_IMAGE = 'IMAGE';
    public const COS_OBJECT_TYPE_DOMAIN_SETTINGS = 'DOMAIN_SETTINGS';
    public const COS_OBJECT_TYPE_SITE_SETTINGS = 'SITE_SETTINGS';
    public const COS_OBJECT_TYPE_EMAIL_ADDRESS = 'EMAIL_ADDRESS';
    public const COS_OBJECT_TYPE_WORKFLOW = 'WORKFLOW';
    public const COS_OBJECT_TYPE_HUBDB_TABLE = 'HUBDB_TABLE';
    public const COS_OBJECT_TYPE_REDIRECT_URL = 'REDIRECT_URL';
    public const COS_OBJECT_TYPE_DESIGN_FOLDER = 'DESIGN_FOLDER';
    public const COS_OBJECT_TYPE_SITE_MAP = 'SITE_MAP';
    public const COS_OBJECT_TYPE_DOMAIN = 'DOMAIN';
    public const COS_OBJECT_TYPE_BLOG = 'BLOG';
    public const COS_OBJECT_TYPE_FILE = 'FILE';
    public const COS_OBJECT_TYPE_FOLDER = 'FOLDER';
    public const COS_OBJECT_TYPE_SITE_MENU = 'SITE_MENU';
    public const COS_OBJECT_TYPE_THEME = 'THEME';
    public const COS_OBJECT_TYPE_CONTENT_GROUP = 'CONTENT_GROUP';
    public const COS_OBJECT_TYPE_FOLLOW_ME = 'FOLLOW_ME';
    public const COS_OBJECT_TYPE_KNOWLEDGE_BASE = 'KNOWLEDGE_BASE';
    public const COS_OBJECT_TYPE_LIST_MEMBERSHIP = 'LIST_MEMBERSHIP';
    public const COS_OBJECT_TYPE_CONTACT_MEMBERSHIP = 'CONTACT_MEMBERSHIP';
    public const COS_OBJECT_TYPE_PASSWORD_PROTECTED = 'PASSWORD_PROTECTED';
    public const COS_OBJECT_TYPE_UNRESTRICTED_ACCESS = 'UNRESTRICTED_ACCESS';
    public const COS_OBJECT_TYPE_MARKETPLACE_LISTING = 'MARKETPLACE_LISTING';
    public const COS_OBJECT_TYPE_LAYOUT_SECTION = 'LAYOUT_SECTION';
    public const COS_OBJECT_TYPE_THEME_SETTINGS = 'THEME_SETTINGS';
    public const COS_OBJECT_TYPE_VIDEO_PLAYER = 'VIDEO_PLAYER';
    public const COS_OBJECT_TYPE_URL_MAPPING = 'URL_MAPPING';
    public const COS_OBJECT_TYPE_KNOWLEDGE_CATEGORY = 'KNOWLEDGE_CATEGORY';
    public const COS_OBJECT_TYPE_KNOWLEDGE_HOMEPAGE_CATEGORY = 'KNOWLEDGE_HOMEPAGE_CATEGORY';
    public const COS_OBJECT_TYPE_RAW_ASSET = 'RAW_ASSET';
    public const COS_OBJECT_TYPE_GLOBAL_CONTENT = 'GLOBAL_CONTENT';
    public const COS_OBJECT_TYPE_HUBDB_TABLE_ROW = 'HUBDB_TABLE_ROW';
    public const COS_OBJECT_TYPE_BLOG_AUTHOR = 'BLOG_AUTHOR';
    public const COS_OBJECT_TYPE_SERVERLESS_FUNCTION = 'SERVERLESS_FUNCTION';
    public const COS_OBJECT_TYPE_KNOWLEDGE_CATEGORY_TRANSLATION = 'KNOWLEDGE_CATEGORY_TRANSLATION';

    /**
     * Gets allowable values of the enum
     *
     * @return string[]
     */
    public function getApexResolutionStatusAllowableValues()
    {
        return [
            self::APEX_RESOLUTION_STATUS_INELIGIBLE,
            self::APEX_RESOLUTION_STATUS_SUGGEST_RESOLVING,
            self::APEX_RESOLUTION_STATUS_ALREADY_RESOLVING,
            self::APEX_RESOLUTION_STATUS_ERROR,
        ];
    }

    /**
     * Gets allowable values of the enum
     *
     * @return string[]
     */
    public function getCosObjectTypeAllowableValues()
    {
        return [
            self::COS_OBJECT_TYPE_CONTENT,
            self::COS_OBJECT_TYPE_EXTENSION_RESOURCE,
            self::COS_OBJECT_TYPE_LAYOUT,
            self::COS_OBJECT_TYPE_CUSTOM_WIDGET,
            self::COS_OBJECT_TYPE_WIDGET,
            self::COS_OBJECT_TYPE_FORM,
            self::COS_OBJECT_TYPE_PLACEMENT,
            self::COS_OBJECT_TYPE_IMAGE,
            self::COS_OBJECT_TYPE_DOMAIN_SETTINGS,
            self::COS_OBJECT_TYPE_SITE_SETTINGS,
            self::COS_OBJECT_TYPE_EMAIL_ADDRESS,
            self::COS_OBJECT_TYPE_WORKFLOW,
            self::COS_OBJECT_TYPE_HUBDB_TABLE,
            self::COS_OBJECT_TYPE_REDIRECT_URL,
            self::COS_OBJECT_TYPE_DESIGN_FOLDER,
            self::COS_OBJECT_TYPE_SITE_MAP,
            self::COS_OBJECT_TYPE_DOMAIN,
            self::COS_OBJECT_TYPE_BLOG,
            self::COS_OBJECT_TYPE_FILE,
            self::COS_OBJECT_TYPE_FOLDER,
            self::COS_OBJECT_TYPE_SITE_MENU,
            self::COS_OBJECT_TYPE_THEME,
            self::COS_OBJECT_TYPE_CONTENT_GROUP,
            self::COS_OBJECT_TYPE_FOLLOW_ME,
            self::COS_OBJECT_TYPE_KNOWLEDGE_BASE,
            self::COS_OBJECT_TYPE_LIST_MEMBERSHIP,
            self::COS_OBJECT_TYPE_CONTACT_MEMBERSHIP,
            self::COS_OBJECT_TYPE_PASSWORD_PROTECTED,
            self::COS_OBJECT_TYPE_UNRESTRICTED_ACCESS,
            self::COS_OBJECT_TYPE_MARKETPLACE_LISTING,
            self::COS_OBJECT_TYPE_LAYOUT_SECTION,
            self::COS_OBJECT_TYPE_THEME_SETTINGS,
            self::COS_OBJECT_TYPE_VIDEO_PLAYER,
            self::COS_OBJECT_TYPE_URL_MAPPING,
            self::COS_OBJECT_TYPE_KNOWLEDGE_CATEGORY,
            self::COS_OBJECT_TYPE_KNOWLEDGE_HOMEPAGE_CATEGORY,
            self::COS_OBJECT_TYPE_RAW_ASSET,
            self::COS_OBJECT_TYPE_GLOBAL_CONTENT,
            self::COS_OBJECT_TYPE_HUBDB_TABLE_ROW,
            self::COS_OBJECT_TYPE_BLOG_AUTHOR,
            self::COS_OBJECT_TYPE_SERVERLESS_FUNCTION,
            self::COS_OBJECT_TYPE_KNOWLEDGE_CATEGORY_TRANSLATION,
        ];
    }

    /**
     * Associative array for storing property values
     *
     * @var mixed[]
     */
    protected $container = [];

    /**
     * Constructor
     *
     * @param mixed[] $data Associated array of property values
     *                      initializing the model
     */
    public function __construct(array $data = null)
    {
        $this->container['portal_id'] = $data['portal_id'] ?? null;
        $this->container['id'] = $data['id'] ?? null;
        $this->container['created'] = $data['created'] ?? null;
        $this->container['updated'] = $data['updated'] ?? null;
        $this->container['domain'] = $data['domain'] ?? null;
        $this->container['primary_landing_page'] = $data['primary_landing_page'] ?? null;
        $this->container['primary_email'] = $data['primary_email'] ?? null;
        $this->container['primary_blog'] = $data['primary_blog'] ?? null;
        $this->container['primary_blog_post'] = $data['primary_blog_post'] ?? null;
        $this->container['primary_site_page'] = $data['primary_site_page'] ?? null;
        $this->container['primary_knowledge'] = $data['primary_knowledge'] ?? null;
        $this->container['primary_legacy_page'] = $data['primary_legacy_page'] ?? null;
        $this->container['primary_click_tracking'] = $data['primary_click_tracking'] ?? null;
        $this->container['full_category_key'] = $data['full_category_key'] ?? null;
        $this->container['secondary_to_domain'] = $data['secondary_to_domain'] ?? null;
        $this->container['is_resolving'] = $data['is_resolving'] ?? null;
        $this->container['is_dns_correct'] = $data['is_dns_correct'] ?? null;
        $this->container['manually_marked_as_resolving'] = $data['manually_marked_as_resolving'] ?? null;
        $this->container['consecutive_non_resolving_count'] = $data['consecutive_non_resolving_count'] ?? null;
        $this->container['ssl_cname'] = $data['ssl_cname'] ?? null;
        $this->container['is_ssl_enabled'] = $data['is_ssl_enabled'] ?? null;
        $this->container['is_ssl_only'] = $data['is_ssl_only'] ?? null;
        $this->container['certificate_id'] = $data['certificate_id'] ?? null;
        $this->container['ssl_request_id'] = $data['ssl_request_id'] ?? null;
        $this->container['is_used_for_blog_post'] = $data['is_used_for_blog_post'] ?? null;
        $this->container['is_used_for_site_page'] = $data['is_used_for_site_page'] ?? null;
        $this->container['is_used_for_landing_page'] = $data['is_used_for_landing_page'] ?? null;
        $this->container['is_used_for_email'] = $data['is_used_for_email'] ?? null;
        $this->container['is_used_for_knowledge'] = $data['is_used_for_knowledge'] ?? null;
        $this->container['setup_task_id'] = $data['setup_task_id'] ?? null;
        $this->container['is_setup_complete'] = $data['is_setup_complete'] ?? null;
        $this->container['set_up_language'] = $data['set_up_language'] ?? null;
        $this->container['team_ids'] = $data['team_ids'] ?? null;
        $this->container['actual_cname'] = $data['actual_cname'] ?? null;
        $this->container['correct_cname'] = $data['correct_cname'] ?? null;
        $this->container['actual_ip'] = $data['actual_ip'] ?? null;
        $this->container['apex_resolution_status'] = $data['apex_resolution_status'] ?? null;
        $this->container['apex_domain'] = $data['apex_domain'] ?? null;
        $this->container['public_suffix'] = $data['public_suffix'] ?? null;
        $this->container['apex_ip_addresses'] = $data['apex_ip_addresses'] ?? null;
        $this->container['site_id'] = $data['site_id'] ?? null;
        $this->container['brand_id'] = $data['brand_id'] ?? null;
        $this->container['deletable'] = $data['deletable'] ?? null;
        $this->container['domain_cdn_config'] = $data['domain_cdn_config'] ?? null;
        $this->container['setup_info'] = $data['setup_info'] ?? null;
        $this->container['derived_brand_name'] = $data['derived_brand_name'] ?? null;
        $this->container['created_by_id'] = $data['created_by_id'] ?? null;
        $this->container['updated_by_id'] = $data['updated_by_id'] ?? null;
        $this->container['label'] = $data['label'] ?? null;
        $this->container['is_any_primary'] = $data['is_any_primary'] ?? null;
        $this->container['is_legacy_domain'] = $data['is_legacy_domain'] ?? null;
        $this->container['is_internal_domain'] = $data['is_internal_domain'] ?? null;
        $this->container['is_resolving_internal_property'] = $data['is_resolving_internal_property'] ?? null;
        $this->container['is_resolving_ignoring_manually_marked_as_resolving'] = $data['is_resolving_ignoring_manually_marked_as_resolving'] ?? null;
        $this->container['is_used_for_any_content_type'] = $data['is_used_for_any_content_type'] ?? null;
        $this->container['is_legacy'] = $data['is_legacy'] ?? null;
        $this->container['author_at'] = $data['author_at'] ?? null;
        $this->container['cos_object_type'] = $data['cos_object_type'] ?? null;
        $this->container['cdn_purge_embargo_time'] = $data['cdn_purge_embargo_time'] ?? null;
        $this->container['is_staging_domain'] = $data['is_staging_domain'] ?? null;
    }

    /**
     * Show all the invalid properties with reasons.
     *
     * @return array invalid properties with reasons
     */
    public function listInvalidProperties()
    {
        $invalidProperties = [];

        if ($this->container['portal_id'] === null) {
            $invalidProperties[] = "'portal_id' can't be null";
        }
        if ($this->container['id'] === null) {
            $invalidProperties[] = "'id' can't be null";
        }
        if ($this->container['created'] === null) {
            $invalidProperties[] = "'created' can't be null";
        }
        if ($this->container['updated'] === null) {
            $invalidProperties[] = "'updated' can't be null";
        }
        if ($this->container['domain'] === null) {
            $invalidProperties[] = "'domain' can't be null";
        }
        if ($this->container['primary_landing_page'] === null) {
            $invalidProperties[] = "'primary_landing_page' can't be null";
        }
        if ($this->container['primary_email'] === null) {
            $invalidProperties[] = "'primary_email' can't be null";
        }
        if ($this->container['primary_blog'] === null) {
            $invalidProperties[] = "'primary_blog' can't be null";
        }
        if ($this->container['primary_blog_post'] === null) {
            $invalidProperties[] = "'primary_blog_post' can't be null";
        }
        if ($this->container['primary_site_page'] === null) {
            $invalidProperties[] = "'primary_site_page' can't be null";
        }
        if ($this->container['primary_knowledge'] === null) {
            $invalidProperties[] = "'primary_knowledge' can't be null";
        }
        if ($this->container['primary_legacy_page'] === null) {
            $invalidProperties[] = "'primary_legacy_page' can't be null";
        }
        if ($this->container['primary_click_tracking'] === null) {
            $invalidProperties[] = "'primary_click_tracking' can't be null";
        }
        if ($this->container['full_category_key'] === null) {
            $invalidProperties[] = "'full_category_key' can't be null";
        }
        if ($this->container['secondary_to_domain'] === null) {
            $invalidProperties[] = "'secondary_to_domain' can't be null";
        }
        if ($this->container['is_resolving'] === null) {
            $invalidProperties[] = "'is_resolving' can't be null";
        }
        if ($this->container['is_dns_correct'] === null) {
            $invalidProperties[] = "'is_dns_correct' can't be null";
        }
        if ($this->container['manually_marked_as_resolving'] === null) {
            $invalidProperties[] = "'manually_marked_as_resolving' can't be null";
        }
        if ($this->container['consecutive_non_resolving_count'] === null) {
            $invalidProperties[] = "'consecutive_non_resolving_count' can't be null";
        }
        if ($this->container['ssl_cname'] === null) {
            $invalidProperties[] = "'ssl_cname' can't be null";
        }
        if ($this->container['is_ssl_enabled'] === null) {
            $invalidProperties[] = "'is_ssl_enabled' can't be null";
        }
        if ($this->container['is_ssl_only'] === null) {
            $invalidProperties[] = "'is_ssl_only' can't be null";
        }
        if ($this->container['certificate_id'] === null) {
            $invalidProperties[] = "'certificate_id' can't be null";
        }
        if ($this->container['ssl_request_id'] === null) {
            $invalidProperties[] = "'ssl_request_id' can't be null";
        }
        if ($this->container['is_used_for_blog_post'] === null) {
            $invalidProperties[] = "'is_used_for_blog_post' can't be null";
        }
        if ($this->container['is_used_for_site_page'] === null) {
            $invalidProperties[] = "'is_used_for_site_page' can't be null";
        }
        if ($this->container['is_used_for_landing_page'] === null) {
            $invalidProperties[] = "'is_used_for_landing_page' can't be null";
        }
        if ($this->container['is_used_for_email'] === null) {
            $invalidProperties[] = "'is_used_for_email' can't be null";
        }
        if ($this->container['is_used_for_knowledge'] === null) {
            $invalidProperties[] = "'is_used_for_knowledge' can't be null";
        }
        if ($this->container['setup_task_id'] === null) {
            $invalidProperties[] = "'setup_task_id' can't be null";
        }
        if ($this->container['is_setup_complete'] === null) {
            $invalidProperties[] = "'is_setup_complete' can't be null";
        }
        if ($this->container['set_up_language'] === null) {
            $invalidProperties[] = "'set_up_language' can't be null";
        }
        if ($this->container['team_ids'] === null) {
            $invalidProperties[] = "'team_ids' can't be null";
        }
        if ($this->container['actual_cname'] === null) {
            $invalidProperties[] = "'actual_cname' can't be null";
        }
        if ($this->container['correct_cname'] === null) {
            $invalidProperties[] = "'correct_cname' can't be null";
        }
        if ($this->container['actual_ip'] === null) {
            $invalidProperties[] = "'actual_ip' can't be null";
        }
        if ($this->container['apex_resolution_status'] === null) {
            $invalidProperties[] = "'apex_resolution_status' can't be null";
        }
        $allowedValues = $this->getApexResolutionStatusAllowableValues();
        if (!is_null($this->container['apex_resolution_status']) && !in_array($this->container['apex_resolution_status'], $allowedValues, true)) {
            $invalidProperties[] = sprintf(
                "invalid value '%s' for 'apex_resolution_status', must be one of '%s'",
                $this->container['apex_resolution_status'],
                implode("', '", $allowedValues)
            );
        }

        if ($this->container['apex_domain'] === null) {
            $invalidProperties[] = "'apex_domain' can't be null";
        }
        if ($this->container['public_suffix'] === null) {
            $invalidProperties[] = "'public_suffix' can't be null";
        }
        if ($this->container['apex_ip_addresses'] === null) {
            $invalidProperties[] = "'apex_ip_addresses' can't be null";
        }
        if ($this->container['site_id'] === null) {
            $invalidProperties[] = "'site_id' can't be null";
        }
        if ($this->container['brand_id'] === null) {
            $invalidProperties[] = "'brand_id' can't be null";
        }
        if ($this->container['deletable'] === null) {
            $invalidProperties[] = "'deletable' can't be null";
        }
        if ($this->container['domain_cdn_config'] === null) {
            $invalidProperties[] = "'domain_cdn_config' can't be null";
        }
        if ($this->container['setup_info'] === null) {
            $invalidProperties[] = "'setup_info' can't be null";
        }
        if ($this->container['derived_brand_name'] === null) {
            $invalidProperties[] = "'derived_brand_name' can't be null";
        }
        if ($this->container['created_by_id'] === null) {
            $invalidProperties[] = "'created_by_id' can't be null";
        }
        if ($this->container['updated_by_id'] === null) {
            $invalidProperties[] = "'updated_by_id' can't be null";
        }
        if ($this->container['label'] === null) {
            $invalidProperties[] = "'label' can't be null";
        }
        if ($this->container['is_any_primary'] === null) {
            $invalidProperties[] = "'is_any_primary' can't be null";
        }
        if ($this->container['is_legacy_domain'] === null) {
            $invalidProperties[] = "'is_legacy_domain' can't be null";
        }
        if ($this->container['is_internal_domain'] === null) {
            $invalidProperties[] = "'is_internal_domain' can't be null";
        }
        if ($this->container['is_resolving_internal_property'] === null) {
            $invalidProperties[] = "'is_resolving_internal_property' can't be null";
        }
        if ($this->container['is_resolving_ignoring_manually_marked_as_resolving'] === null) {
            $invalidProperties[] = "'is_resolving_ignoring_manually_marked_as_resolving' can't be null";
        }
        if ($this->container['is_used_for_any_content_type'] === null) {
            $invalidProperties[] = "'is_used_for_any_content_type' can't be null";
        }
        if ($this->container['is_legacy'] === null) {
            $invalidProperties[] = "'is_legacy' can't be null";
        }
        if ($this->container['author_at'] === null) {
            $invalidProperties[] = "'author_at' can't be null";
        }
        if ($this->container['cos_object_type'] === null) {
            $invalidProperties[] = "'cos_object_type' can't be null";
        }
        $allowedValues = $this->getCosObjectTypeAllowableValues();
        if (!is_null($this->container['cos_object_type']) && !in_array($this->container['cos_object_type'], $allowedValues, true)) {
            $invalidProperties[] = sprintf(
                "invalid value '%s' for 'cos_object_type', must be one of '%s'",
                $this->container['cos_object_type'],
                implode("', '", $allowedValues)
            );
        }

        if ($this->container['cdn_purge_embargo_time'] === null) {
            $invalidProperties[] = "'cdn_purge_embargo_time' can't be null";
        }
        if ($this->container['is_staging_domain'] === null) {
            $invalidProperties[] = "'is_staging_domain' can't be null";
        }
        return $invalidProperties;
    }

    /**
     * Validate all the properties in the model
     * return true if all passed
     *
     * @return bool True if all properties are valid
     */
    public function valid()
    {
        return count($this->listInvalidProperties()) === 0;
    }


    /**
     * Gets portal_id
     *
     * @return int
     */
    public function getPortalId()
    {
        return $this->container['portal_id'];
    }

    /**
     * Sets portal_id
     *
     * @param int $portal_id portal_id
     *
     * @return self
     */
    public function setPortalId($portal_id)
    {
        $this->container['portal_id'] = $portal_id;

        return $this;
    }

    /**
     * Gets id
     *
     * @return int
     */
    public function getId()
    {
        return $this->container['id'];
    }

    /**
     * Sets id
     *
     * @param int $id id
     *
     * @return self
     */
    public function setId($id)
    {
        $this->container['id'] = $id;

        return $this;
    }

    /**
     * Gets created
     *
     * @return int
     */
    public function getCreated()
    {
        return $this->container['created'];
    }

    /**
     * Sets created
     *
     * @param int $created created
     *
     * @return self
     */
    public function setCreated($created)
    {
        $this->container['created'] = $created;

        return $this;
    }

    /**
     * Gets updated
     *
     * @return int
     */
    public function getUpdated()
    {
        return $this->container['updated'];
    }

    /**
     * Sets updated
     *
     * @param int $updated updated
     *
     * @return self
     */
    public function setUpdated($updated)
    {
        $this->container['updated'] = $updated;

        return $this;
    }

    /**
     * Gets domain
     *
     * @return string
     */
    public function getDomain()
    {
        return $this->container['domain'];
    }

    /**
     * Sets domain
     *
     * @param string $domain domain
     *
     * @return self
     */
    public function setDomain($domain)
    {
        $this->container['domain'] = $domain;

        return $this;
    }

    /**
     * Gets primary_landing_page
     *
     * @return bool
     */
    public function getPrimaryLandingPage()
    {
        return $this->container['primary_landing_page'];
    }

    /**
     * Sets primary_landing_page
     *
     * @param bool $primary_landing_page primary_landing_page
     *
     * @return self
     */
    public function setPrimaryLandingPage($primary_landing_page)
    {
        $this->container['primary_landing_page'] = $primary_landing_page;

        return $this;
    }

    /**
     * Gets primary_email
     *
     * @return bool
     */
    public function getPrimaryEmail()
    {
        return $this->container['primary_email'];
    }

    /**
     * Sets primary_email
     *
     * @param bool $primary_email primary_email
     *
     * @return self
     */
    public function setPrimaryEmail($primary_email)
    {
        $this->container['primary_email'] = $primary_email;

        return $this;
    }

    /**
     * Gets primary_blog
     *
     * @return bool
     */
    public function getPrimaryBlog()
    {
        return $this->container['primary_blog'];
    }

    /**
     * Sets primary_blog
     *
     * @param bool $primary_blog primary_blog
     *
     * @return self
     */
    public function setPrimaryBlog($primary_blog)
    {
        $this->container['primary_blog'] = $primary_blog;

        return $this;
    }

    /**
     * Gets primary_blog_post
     *
     * @return bool
     */
    public function getPrimaryBlogPost()
    {
        return $this->container['primary_blog_post'];
    }

    /**
     * Sets primary_blog_post
     *
     * @param bool $primary_blog_post primary_blog_post
     *
     * @return self
     */
    public function setPrimaryBlogPost($primary_blog_post)
    {
        $this->container['primary_blog_post'] = $primary_blog_post;

        return $this;
    }

    /**
     * Gets primary_site_page
     *
     * @return bool
     */
    public function getPrimarySitePage()
    {
        return $this->container['primary_site_page'];
    }

    /**
     * Sets primary_site_page
     *
     * @param bool $primary_site_page primary_site_page
     *
     * @return self
     */
    public function setPrimarySitePage($primary_site_page)
    {
        $this->container['primary_site_page'] = $primary_site_page;

        return $this;
    }

    /**
     * Gets primary_knowledge
     *
     * @return bool
     */
    public function getPrimaryKnowledge()
    {
        return $this->container['primary_knowledge'];
    }

    /**
     * Sets primary_knowledge
     *
     * @param bool $primary_knowledge primary_knowledge
     *
     * @return self
     */
    public function setPrimaryKnowledge($primary_knowledge)
    {
        $this->container['primary_knowledge'] = $primary_knowledge;

        return $this;
    }

    /**
     * Gets primary_legacy_page
     *
     * @return bool
     */
    public function getPrimaryLegacyPage()
    {
        return $this->container['primary_legacy_page'];
    }

    /**
     * Sets primary_legacy_page
     *
     * @param bool $primary_legacy_page primary_legacy_page
     *
     * @return self
     */
    public function setPrimaryLegacyPage($primary_legacy_page)
    {
        $this->container['primary_legacy_page'] = $primary_legacy_page;

        return $this;
    }

    /**
     * Gets primary_click_tracking
     *
     * @return bool
     */
    public function getPrimaryClickTracking()
    {
        return $this->container['primary_click_tracking'];
    }

    /**
     * Sets primary_click_tracking
     *
     * @param bool $primary_click_tracking primary_click_tracking
     *
     * @return self
     */
    public function setPrimaryClickTracking($primary_click_tracking)
    {
        $this->container['primary_click_tracking'] = $primary_click_tracking;

        return $this;
    }

    /**
     * Gets full_category_key
     *
     * @return string
     */
    public function getFullCategoryKey()
    {
        return $this->container['full_category_key'];
    }

    /**
     * Sets full_category_key
     *
     * @param string $full_category_key full_category_key
     *
     * @return self
     */
    public function setFullCategoryKey($full_category_key)
    {
        $this->container['full_category_key'] = $full_category_key;

        return $this;
    }

    /**
     * Gets secondary_to_domain
     *
     * @return string
     */
    public function getSecondaryToDomain()
    {
        return $this->container['secondary_to_domain'];
    }

    /**
     * Sets secondary_to_domain
     *
     * @param string $secondary_to_domain secondary_to_domain
     *
     * @return self
     */
    public function setSecondaryToDomain($secondary_to_domain)
    {
        $this->container['secondary_to_domain'] = $secondary_to_domain;

        return $this;
    }

    /**
     * Gets is_resolving
     *
     * @return bool
     */
    public function getIsResolving()
    {
        return $this->container['is_resolving'];
    }

    /**
     * Sets is_resolving
     *
     * @param bool $is_resolving is_resolving
     *
     * @return self
     */
    public function setIsResolving($is_resolving)
    {
        $this->container['is_resolving'] = $is_resolving;

        return $this;
    }

    /**
     * Gets is_dns_correct
     *
     * @return bool
     */
    public function getIsDnsCorrect()
    {
        return $this->container['is_dns_correct'];
    }

    /**
     * Sets is_dns_correct
     *
     * @param bool $is_dns_correct is_dns_correct
     *
     * @return self
     */
    public function setIsDnsCorrect($is_dns_correct)
    {
        $this->container['is_dns_correct'] = $is_dns_correct;

        return $this;
    }

    /**
     * Gets manually_marked_as_resolving
     *
     * @return bool
     */
    public function getManuallyMarkedAsResolving()
    {
        return $this->container['manually_marked_as_resolving'];
    }

    /**
     * Sets manually_marked_as_resolving
     *
     * @param bool $manually_marked_as_resolving manually_marked_as_resolving
     *
     * @return self
     */
    public function setManuallyMarkedAsResolving($manually_marked_as_resolving)
    {
        $this->container['manually_marked_as_resolving'] = $manually_marked_as_resolving;

        return $this;
    }

    /**
     * Gets consecutive_non_resolving_count
     *
     * @return int
     */
    public function getConsecutiveNonResolvingCount()
    {
        return $this->container['consecutive_non_resolving_count'];
    }

    /**
     * Sets consecutive_non_resolving_count
     *
     * @param int $consecutive_non_resolving_count consecutive_non_resolving_count
     *
     * @return self
     */
    public function setConsecutiveNonResolvingCount($consecutive_non_resolving_count)
    {
        $this->container['consecutive_non_resolving_count'] = $consecutive_non_resolving_count;

        return $this;
    }

    /**
     * Gets ssl_cname
     *
     * @return string
     */
    public function getSslCname()
    {
        return $this->container['ssl_cname'];
    }

    /**
     * Sets ssl_cname
     *
     * @param string $ssl_cname ssl_cname
     *
     * @return self
     */
    public function setSslCname($ssl_cname)
    {
        $this->container['ssl_cname'] = $ssl_cname;

        return $this;
    }

    /**
     * Gets is_ssl_enabled
     *
     * @return bool
     */
    public function getIsSslEnabled()
    {
        return $this->container['is_ssl_enabled'];
    }

    /**
     * Sets is_ssl_enabled
     *
     * @param bool $is_ssl_enabled is_ssl_enabled
     *
     * @return self
     */
    public function setIsSslEnabled($is_ssl_enabled)
    {
        $this->container['is_ssl_enabled'] = $is_ssl_enabled;

        return $this;
    }

    /**
     * Gets is_ssl_only
     *
     * @return bool
     */
    public function getIsSslOnly()
    {
        return $this->container['is_ssl_only'];
    }

    /**
     * Sets is_ssl_only
     *
     * @param bool $is_ssl_only is_ssl_only
     *
     * @return self
     */
    public function setIsSslOnly($is_ssl_only)
    {
        $this->container['is_ssl_only'] = $is_ssl_only;

        return $this;
    }

    /**
     * Gets certificate_id
     *
     * @return int
     */
    public function getCertificateId()
    {
        return $this->container['certificate_id'];
    }

    /**
     * Sets certificate_id
     *
     * @param int $certificate_id certificate_id
     *
     * @return self
     */
    public function setCertificateId($certificate_id)
    {
        $this->container['certificate_id'] = $certificate_id;

        return $this;
    }

    /**
     * Gets ssl_request_id
     *
     * @return int
     */
    public function getSslRequestId()
    {
        return $this->container['ssl_request_id'];
    }

    /**
     * Sets ssl_request_id
     *
     * @param int $ssl_request_id ssl_request_id
     *
     * @return self
     */
    public function setSslRequestId($ssl_request_id)
    {
        $this->container['ssl_request_id'] = $ssl_request_id;

        return $this;
    }

    /**
     * Gets is_used_for_blog_post
     *
     * @return bool
     */
    public function getIsUsedForBlogPost()
    {
        return $this->container['is_used_for_blog_post'];
    }

    /**
     * Sets is_used_for_blog_post
     *
     * @param bool $is_used_for_blog_post is_used_for_blog_post
     *
     * @return self
     */
    public function setIsUsedForBlogPost($is_used_for_blog_post)
    {
        $this->container['is_used_for_blog_post'] = $is_used_for_blog_post;

        return $this;
    }

    /**
     * Gets is_used_for_site_page
     *
     * @return bool
     */
    public function getIsUsedForSitePage()
    {
        return $this->container['is_used_for_site_page'];
    }

    /**
     * Sets is_used_for_site_page
     *
     * @param bool $is_used_for_site_page is_used_for_site_page
     *
     * @return self
     */
    public function setIsUsedForSitePage($is_used_for_site_page)
    {
        $this->container['is_used_for_site_page'] = $is_used_for_site_page;

        return $this;
    }

    /**
     * Gets is_used_for_landing_page
     *
     * @return bool
     */
    public function getIsUsedForLandingPage()
    {
        return $this->container['is_used_for_landing_page'];
    }

    /**
     * Sets is_used_for_landing_page
     *
     * @param bool $is_used_for_landing_page is_used_for_landing_page
     *
     * @return self
     */
    public function setIsUsedForLandingPage($is_used_for_landing_page)
    {
        $this->container['is_used_for_landing_page'] = $is_used_for_landing_page;

        return $this;
    }

    /**
     * Gets is_used_for_email
     *
     * @return bool
     */
    public function getIsUsedForEmail()
    {
        return $this->container['is_used_for_email'];
    }

    /**
     * Sets is_used_for_email
     *
     * @param bool $is_used_for_email is_used_for_email
     *
     * @return self
     */
    public function setIsUsedForEmail($is_used_for_email)
    {
        $this->container['is_used_for_email'] = $is_used_for_email;

        return $this;
    }

    /**
     * Gets is_used_for_knowledge
     *
     * @return bool
     */
    public function getIsUsedForKnowledge()
    {
        return $this->container['is_used_for_knowledge'];
    }

    /**
     * Sets is_used_for_knowledge
     *
     * @param bool $is_used_for_knowledge is_used_for_knowledge
     *
     * @return self
     */
    public function setIsUsedForKnowledge($is_used_for_knowledge)
    {
        $this->container['is_used_for_knowledge'] = $is_used_for_knowledge;

        return $this;
    }

    /**
     * Gets setup_task_id
     *
     * @return int
     */
    public function getSetupTaskId()
    {
        return $this->container['setup_task_id'];
    }

    /**
     * Sets setup_task_id
     *
     * @param int $setup_task_id setup_task_id
     *
     * @return self
     */
    public function setSetupTaskId($setup_task_id)
    {
        $this->container['setup_task_id'] = $setup_task_id;

        return $this;
    }

    /**
     * Gets is_setup_complete
     *
     * @return bool
     */
    public function getIsSetupComplete()
    {
        return $this->container['is_setup_complete'];
    }

    /**
     * Sets is_setup_complete
     *
     * @param bool $is_setup_complete is_setup_complete
     *
     * @return self
     */
    public function setIsSetupComplete($is_setup_complete)
    {
        $this->container['is_setup_complete'] = $is_setup_complete;

        return $this;
    }

    /**
     * Gets set_up_language
     *
     * @return string
     */
    public function getSetUpLanguage()
    {
        return $this->container['set_up_language'];
    }

    /**
     * Sets set_up_language
     *
     * @param string $set_up_language set_up_language
     *
     * @return self
     */
    public function setSetUpLanguage($set_up_language)
    {
        $this->container['set_up_language'] = $set_up_language;

        return $this;
    }

    /**
     * Gets team_ids
     *
     * @return int[]
     */
    public function getTeamIds()
    {
        return $this->container['team_ids'];
    }

    /**
     * Sets team_ids
     *
     * @param int[] $team_ids team_ids
     *
     * @return self
     */
    public function setTeamIds($team_ids)
    {
        $this->container['team_ids'] = $team_ids;

        return $this;
    }

    /**
     * Gets actual_cname
     *
     * @return string
     */
    public function getActualCname()
    {
        return $this->container['actual_cname'];
    }

    /**
     * Sets actual_cname
     *
     * @param string $actual_cname actual_cname
     *
     * @return self
     */
    public function setActualCname($actual_cname)
    {
        $this->container['actual_cname'] = $actual_cname;

        return $this;
    }

    /**
     * Gets correct_cname
     *
     * @return string
     */
    public function getCorrectCname()
    {
        return $this->container['correct_cname'];
    }

    /**
     * Sets correct_cname
     *
     * @param string $correct_cname correct_cname
     *
     * @return self
     */
    public function setCorrectCname($correct_cname)
    {
        $this->container['correct_cname'] = $correct_cname;

        return $this;
    }

    /**
     * Gets actual_ip
     *
     * @return string
     */
    public function getActualIp()
    {
        return $this->container['actual_ip'];
    }

    /**
     * Sets actual_ip
     *
     * @param string $actual_ip actual_ip
     *
     * @return self
     */
    public function setActualIp($actual_ip)
    {
        $this->container['actual_ip'] = $actual_ip;

        return $this;
    }

    /**
     * Gets apex_resolution_status
     *
     * @return string
     */
    public function getApexResolutionStatus()
    {
        return $this->container['apex_resolution_status'];
    }

    /**
     * Sets apex_resolution_status
     *
     * @param string $apex_resolution_status apex_resolution_status
     *
     * @return self
     */
    public function setApexResolutionStatus($apex_resolution_status)
    {
        $allowedValues = $this->getApexResolutionStatusAllowableValues();
        if (!in_array($apex_resolution_status, $allowedValues, true)) {
            throw new \InvalidArgumentException(
                sprintf(
                    "Invalid value '%s' for 'apex_resolution_status', must be one of '%s'",
                    $apex_resolution_status,
                    implode("', '", $allowedValues)
                )
            );
        }
        $this->container['apex_resolution_status'] = $apex_resolution_status;

        return $this;
    }

    /**
     * Gets apex_domain
     *
     * @return string
     */
    public function getApexDomain()
    {
        return $this->container['apex_domain'];
    }

    /**
     * Sets apex_domain
     *
     * @param string $apex_domain apex_domain
     *
     * @return self
     */
    public function setApexDomain($apex_domain)
    {
        $this->container['apex_domain'] = $apex_domain;

        return $this;
    }

    /**
     * Gets public_suffix
     *
     * @return string
     */
    public function getPublicSuffix()
    {
        return $this->container['public_suffix'];
    }

    /**
     * Sets public_suffix
     *
     * @param string $public_suffix public_suffix
     *
     * @return self
     */
    public function setPublicSuffix($public_suffix)
    {
        $this->container['public_suffix'] = $public_suffix;

        return $this;
    }

    /**
     * Gets apex_ip_addresses
     *
     * @return string[]
     */
    public function getApexIpAddresses()
    {
        return $this->container['apex_ip_addresses'];
    }

    /**
     * Sets apex_ip_addresses
     *
     * @param string[] $apex_ip_addresses apex_ip_addresses
     *
     * @return self
     */
    public function setApexIpAddresses($apex_ip_addresses)
    {
        $this->container['apex_ip_addresses'] = $apex_ip_addresses;

        return $this;
    }

    /**
     * Gets site_id
     *
     * @return int
     */
    public function getSiteId()
    {
        return $this->container['site_id'];
    }

    /**
     * Sets site_id
     *
     * @param int $site_id site_id
     *
     * @return self
     */
    public function setSiteId($site_id)
    {
        $this->container['site_id'] = $site_id;

        return $this;
    }

    /**
     * Gets brand_id
     *
     * @return int
     */
    public function getBrandId()
    {
        return $this->container['brand_id'];
    }

    /**
     * Sets brand_id
     *
     * @param int $brand_id brand_id
     *
     * @return self
     */
    public function setBrandId($brand_id)
    {
        $this->container['brand_id'] = $brand_id;

        return $this;
    }

    /**
     * Gets deletable
     *
     * @return bool
     */
    public function getDeletable()
    {
        return $this->container['deletable'];
    }

    /**
     * Sets deletable
     *
     * @param bool $deletable deletable
     *
     * @return self
     */
    public function setDeletable($deletable)
    {
        $this->container['deletable'] = $deletable;

        return $this;
    }

    /**
     * Gets domain_cdn_config
     *
     * @return \HubSpot\Client\Cms\Domains\Model\DomainCdnConfig
     */
    public function getDomainCdnConfig()
    {
        return $this->container['domain_cdn_config'];
    }

    /**
     * Sets domain_cdn_config
     *
     * @param \HubSpot\Client\Cms\Domains\Model\DomainCdnConfig $domain_cdn_config domain_cdn_config
     *
     * @return self
     */
    public function setDomainCdnConfig($domain_cdn_config)
    {
        $this->container['domain_cdn_config'] = $domain_cdn_config;

        return $this;
    }

    /**
     * Gets setup_info
     *
     * @return \HubSpot\Client\Cms\Domains\Model\DomainSetupInfo
     */
    public function getSetupInfo()
    {
        return $this->container['setup_info'];
    }

    /**
     * Sets setup_info
     *
     * @param \HubSpot\Client\Cms\Domains\Model\DomainSetupInfo $setup_info setup_info
     *
     * @return self
     */
    public function setSetupInfo($setup_info)
    {
        $this->container['setup_info'] = $setup_info;

        return $this;
    }

    /**
     * Gets derived_brand_name
     *
     * @return string
     */
    public function getDerivedBrandName()
    {
        return $this->container['derived_brand_name'];
    }

    /**
     * Sets derived_brand_name
     *
     * @param string $derived_brand_name derived_brand_name
     *
     * @return self
     */
    public function setDerivedBrandName($derived_brand_name)
    {
        $this->container['derived_brand_name'] = $derived_brand_name;

        return $this;
    }

    /**
     * Gets created_by_id
     *
     * @return int
     */
    public function getCreatedById()
    {
        return $this->container['created_by_id'];
    }

    /**
     * Sets created_by_id
     *
     * @param int $created_by_id created_by_id
     *
     * @return self
     */
    public function setCreatedById($created_by_id)
    {
        $this->container['created_by_id'] = $created_by_id;

        return $this;
    }

    /**
     * Gets updated_by_id
     *
     * @return int
     */
    public function getUpdatedById()
    {
        return $this->container['updated_by_id'];
    }

    /**
     * Sets updated_by_id
     *
     * @param int $updated_by_id updated_by_id
     *
     * @return self
     */
    public function setUpdatedById($updated_by_id)
    {
        $this->container['updated_by_id'] = $updated_by_id;

        return $this;
    }

    /**
     * Gets label
     *
     * @return string
     */
    public function getLabel()
    {
        return $this->container['label'];
    }

    /**
     * Sets label
     *
     * @param string $label label
     *
     * @return self
     */
    public function setLabel($label)
    {
        $this->container['label'] = $label;

        return $this;
    }

    /**
     * Gets is_any_primary
     *
     * @return bool
     */
    public function getIsAnyPrimary()
    {
        return $this->container['is_any_primary'];
    }

    /**
     * Sets is_any_primary
     *
     * @param bool $is_any_primary is_any_primary
     *
     * @return self
     */
    public function setIsAnyPrimary($is_any_primary)
    {
        $this->container['is_any_primary'] = $is_any_primary;

        return $this;
    }

    /**
     * Gets is_legacy_domain
     *
     * @return bool
     */
    public function getIsLegacyDomain()
    {
        return $this->container['is_legacy_domain'];
    }

    /**
     * Sets is_legacy_domain
     *
     * @param bool $is_legacy_domain is_legacy_domain
     *
     * @return self
     */
    public function setIsLegacyDomain($is_legacy_domain)
    {
        $this->container['is_legacy_domain'] = $is_legacy_domain;

        return $this;
    }

    /**
     * Gets is_internal_domain
     *
     * @return bool
     */
    public function getIsInternalDomain()
    {
        return $this->container['is_internal_domain'];
    }

    /**
     * Sets is_internal_domain
     *
     * @param bool $is_internal_domain is_internal_domain
     *
     * @return self
     */
    public function setIsInternalDomain($is_internal_domain)
    {
        $this->container['is_internal_domain'] = $is_internal_domain;

        return $this;
    }

    /**
     * Gets is_resolving_internal_property
     *
     * @return bool
     */
    public function getIsResolvingInternalProperty()
    {
        return $this->container['is_resolving_internal_property'];
    }

    /**
     * Sets is_resolving_internal_property
     *
     * @param bool $is_resolving_internal_property is_resolving_internal_property
     *
     * @return self
     */
    public function setIsResolvingInternalProperty($is_resolving_internal_property)
    {
        $this->container['is_resolving_internal_property'] = $is_resolving_internal_property;

        return $this;
    }

    /**
     * Gets is_resolving_ignoring_manually_marked_as_resolving
     *
     * @return bool
     */
    public function getIsResolvingIgnoringManuallyMarkedAsResolving()
    {
        return $this->container['is_resolving_ignoring_manually_marked_as_resolving'];
    }

    /**
     * Sets is_resolving_ignoring_manually_marked_as_resolving
     *
     * @param bool $is_resolving_ignoring_manually_marked_as_resolving is_resolving_ignoring_manually_marked_as_resolving
     *
     * @return self
     */
    public function setIsResolvingIgnoringManuallyMarkedAsResolving($is_resolving_ignoring_manually_marked_as_resolving)
    {
        $this->container['is_resolving_ignoring_manually_marked_as_resolving'] = $is_resolving_ignoring_manually_marked_as_resolving;

        return $this;
    }

    /**
     * Gets is_used_for_any_content_type
     *
     * @return bool
     */
    public function getIsUsedForAnyContentType()
    {
        return $this->container['is_used_for_any_content_type'];
    }

    /**
     * Sets is_used_for_any_content_type
     *
     * @param bool $is_used_for_any_content_type is_used_for_any_content_type
     *
     * @return self
     */
    public function setIsUsedForAnyContentType($is_used_for_any_content_type)
    {
        $this->container['is_used_for_any_content_type'] = $is_used_for_any_content_type;

        return $this;
    }

    /**
     * Gets is_legacy
     *
     * @return bool
     */
    public function getIsLegacy()
    {
        return $this->container['is_legacy'];
    }

    /**
     * Sets is_legacy
     *
     * @param bool $is_legacy is_legacy
     *
     * @return self
     */
    public function setIsLegacy($is_legacy)
    {
        $this->container['is_legacy'] = $is_legacy;

        return $this;
    }

    /**
     * Gets author_at
     *
     * @return int
     */
    public function getAuthorAt()
    {
        return $this->container['author_at'];
    }

    /**
     * Sets author_at
     *
     * @param int $author_at author_at
     *
     * @return self
     */
    public function setAuthorAt($author_at)
    {
        $this->container['author_at'] = $author_at;

        return $this;
    }

    /**
     * Gets cos_object_type
     *
     * @return string
     */
    public function getCosObjectType()
    {
        return $this->container['cos_object_type'];
    }

    /**
     * Sets cos_object_type
     *
     * @param string $cos_object_type cos_object_type
     *
     * @return self
     */
    public function setCosObjectType($cos_object_type)
    {
        $allowedValues = $this->getCosObjectTypeAllowableValues();
        if (!in_array($cos_object_type, $allowedValues, true)) {
            throw new \InvalidArgumentException(
                sprintf(
                    "Invalid value '%s' for 'cos_object_type', must be one of '%s'",
                    $cos_object_type,
                    implode("', '", $allowedValues)
                )
            );
        }
        $this->container['cos_object_type'] = $cos_object_type;

        return $this;
    }

    /**
     * Gets cdn_purge_embargo_time
     *
     * @return int
     */
    public function getCdnPurgeEmbargoTime()
    {
        return $this->container['cdn_purge_embargo_time'];
    }

    /**
     * Sets cdn_purge_embargo_time
     *
     * @param int $cdn_purge_embargo_time cdn_purge_embargo_time
     *
     * @return self
     */
    public function setCdnPurgeEmbargoTime($cdn_purge_embargo_time)
    {
        $this->container['cdn_purge_embargo_time'] = $cdn_purge_embargo_time;

        return $this;
    }

    /**
     * Gets is_staging_domain
     *
     * @return bool
     */
    public function getIsStagingDomain()
    {
        return $this->container['is_staging_domain'];
    }

    /**
     * Sets is_staging_domain
     *
     * @param bool $is_staging_domain is_staging_domain
     *
     * @return self
     */
    public function setIsStagingDomain($is_staging_domain)
    {
        $this->container['is_staging_domain'] = $is_staging_domain;

        return $this;
    }
    /**
     * Returns true if offset exists. False otherwise.
     *
     * @param integer $offset Offset
     *
     * @return boolean
     */
    public function offsetExists($offset): bool
    {
        return isset($this->container[$offset]);
    }

    /**
     * Gets offset.
     *
     * @param integer $offset Offset
     *
     * @return mixed|null
     */
    #[\ReturnTypeWillChange]
    public function offsetGet($offset)
    {
        return $this->container[$offset] ?? null;
    }

    /**
     * Sets value based on offset.
     *
     * @param int|null $offset Offset
     * @param mixed    $value  Value to be set
     *
     * @return void
     */
    public function offsetSet($offset, $value): void
    {
        if (is_null($offset)) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

    /**
     * Unsets offset.
     *
     * @param integer $offset Offset
     *
     * @return void
     */
    public function offsetUnset($offset): void
    {
        unset($this->container[$offset]);
    }

    /**
     * Serializes the object to a value that can be serialized natively by json_encode().
     * @link https://www.php.net/manual/en/jsonserializable.jsonserialize.php
     *
     * @return mixed Returns data which can be serialized by json_encode(), which is a value
     * of any type other than a resource.
     */
    #[\ReturnTypeWillChange]
    public function jsonSerialize()
    {
       return ObjectSerializer::sanitizeForSerialization($this);
    }

    /**
     * Gets the string presentation of the object
     *
     * @return string
     */
    public function __toString()
    {
        return json_encode(
            ObjectSerializer::sanitizeForSerialization($this),
            JSON_PRETTY_PRINT
        );
    }

    /**
     * Gets a header-safe presentation of the object
     *
     * @return string
     */
    public function toHeaderValue()
    {
        return json_encode(ObjectSerializer::sanitizeForSerialization($this));
    }
}


