# coding: utf-8

"""
    Pinterest REST API

    Pinterest's REST API

    The version of the OpenAPI document: 5.23.0
    Contact: blah+oapicf@cliffano.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


from __future__ import annotations
import pprint
import re  # noqa: F401
import json

from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictFloat, StrictInt, StrictStr
from typing import Any, ClassVar, Dict, List, Optional, Union
from typing_extensions import Annotated
from pinterestsdk.models.item_attributes_request_all_of_image_link import ItemAttributesRequestAllOfImageLink
from pinterestsdk.models.updatable_item_attributes_gtin import UpdatableItemAttributesGtin
from typing import Optional, Set
from typing_extensions import Self

class ItemAttributesRequest(BaseModel):
    """
    ItemAttributesRequest
    """ # noqa: E501
    ad_image_0_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_0_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_10_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_10_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_11_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_11_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_12_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_12_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_13_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_13_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_14_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_14_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_15_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_15_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_16_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_16_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_17_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_17_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_18_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_18_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_19_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_19_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_1_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_1_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_2_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_2_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_3_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_3_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_4_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_4_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_5_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_5_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_6_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_6_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_7_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_7_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_8_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_8_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_image_9_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad image link that supplements main image for shopping campaigns.</p> <p>Image format:</p> <ul>   <li>Pixel size at least 75 x 75</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder images in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_image_9_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_image_x_link, include the image tag with the corresponding ad_image_x_tag attribute.</p>")
    ad_link: Optional[StrictStr] = Field(default=None, description="Allows advertisers to specify a separate URL that can be used to track traffic coming from Pinterest shopping ads. Must send full URL including tracking—do not send tracking parameters only. At this time we do not support impression tracking. Must begin with http:// or https://.")
    ad_video_0_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad video link that supplements main video for shopping campaigns.</p> <p>Video format:</p> <ul>   <li>Pixel size between 75 x 75 and 9450 x 9450</li>   <li>File size smaller than 2 GB</li>   <li>Time span between 4 seconds and 15 minutes</li>   <li>Accepted formats: .MP4, .MOV, .M4V</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder videos in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_video_0_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>")
    ad_video_1_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad video link that supplements main video for shopping campaigns.</p> <p>Video format:</p> <ul>   <li>Pixel size between 75 x 75 and 9450 x 9450</li>   <li>File size smaller than 2 GB</li>   <li>Time span between 4 seconds and 15 minutes</li>   <li>Accepted formats: .MP4, .MOV, .M4V</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder videos in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_video_1_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>")
    ad_video_2_link: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 2000 characters</p> <p>Ad video link that supplements main video for shopping campaigns.</p> <p>Video format:</p> <ul>   <li>Pixel size between 75 x 75 and 9450 x 9450</li>   <li>File size smaller than 2 GB</li>   <li>Time span between 4 seconds and 15 minutes</li>   <li>Accepted formats: .MP4, .MOV, .M4V</li> </ul> <p>Link guidelines:</p> <ul>   <li>Include extension in file name</li>   <li>Do not include template or placeholder videos in link</li>   <li>Make URL accessible to Pinterest user-agent</li>   <li>Must start with http:// or https://</li> </ul>")
    ad_video_2_tag: Optional[StrictStr] = Field(default=None, description="<a href=\"/docs/getting-started/using-beta-and-restricted-features/\" target=\"blank\" target=\"blank\">Restricted</a> <p><= 511 characters</p> <p>If you provide an ad_video_x_link, include the video tag with the corresponding ad_video_x_tag attribute.</p>")
    adult: Optional[StrictBool] = Field(default=None, description="Set this attribute to TRUE if you're submitting items that are considered “adult”. These will not be shown on Pinterest.")
    age_group: Optional[StrictStr] = Field(default=None, description="The age group to apply a demographic range to the product. Must be one of the following values (upper or lowercased): ‘newborn’, ‘infant’, ‘toddler’, ‘kids’, or ‘adult’.")
    android_deep_link: Optional[StrictStr] = Field(default=None, description="The deep link to the product on the Android app.")
    availability: Optional[StrictStr] = Field(default=None, description="The availability of the product. Must be one of the following values (upper or lowercased): ‘in stock’, ‘out of stock’, ‘preorder’.")
    average_review_rating: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="Average reviews for the item. Can be a number from 1-5.")
    brand: Optional[StrictStr] = Field(default=None, description="The brand of the product.")
    checkout_enabled: Optional[StrictBool] = Field(default=None, description="This attribute is not supported anymore.")
    color: Optional[StrictStr] = Field(default=None, description="The primary color of the product.")
    condition: Optional[StrictStr] = Field(default=None, description="The condition of the product. Must be one of the following values (upper or lowercased): ‘new’, ‘used’, or ‘refurbished’.")
    custom_label_0: Optional[Annotated[str, Field(strict=True, max_length=511)]] = Field(default=None, description="<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p> <p>Custom grouping of products.</p>")
    custom_label_1: Optional[Annotated[str, Field(strict=True, max_length=511)]] = Field(default=None, description="<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p> <p>Custom grouping of products.</p>")
    custom_label_2: Optional[Annotated[str, Field(strict=True, max_length=511)]] = Field(default=None, description="<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p> <p>Custom grouping of products.</p>")
    custom_label_3: Optional[Annotated[str, Field(strict=True, max_length=511)]] = Field(default=None, description="<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p> <p>Custom grouping of products.</p>")
    custom_label_4: Optional[Annotated[str, Field(strict=True, max_length=511)]] = Field(default=None, description="<p><= 511 characters for retail and creative asset catalogs, <= 127 characters for hotel catalogs</p> <p>Custom grouping of products.</p>")
    custom_number_0: Optional[StrictInt] = Field(default=None, description="an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items.")
    custom_number_1: Optional[StrictInt] = Field(default=None, description="an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items.")
    custom_number_2: Optional[StrictInt] = Field(default=None, description="an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items.")
    custom_number_3: Optional[StrictInt] = Field(default=None, description="an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items.")
    custom_number_4: Optional[StrictInt] = Field(default=None, description="an attribute for any integer information ranging from 0 to 4,294,967,295, which can be used to group items.")
    description: Optional[StrictStr] = Field(default=None, description="<p><= 10000 characters</p> <p>The description of the product.</p>")
    free_shipping_label: Optional[StrictBool] = Field(default=None, description="The item is free to ship.")
    free_shipping_limit: Optional[StrictStr] = Field(default=None, description="The minimum order purchase necessary for the customer to get free shipping. Only relevant if free shipping is offered.")
    gender: Optional[StrictStr] = Field(default=None, description="The gender associated with the product. Must be one of the following values (upper or lowercased): ‘male’, ‘female’, or ‘unisex’.")
    google_product_category: Optional[StrictStr] = Field(default=None, description="The categorization of the product based on the standardized Google Product Taxonomy. This is a set taxonomy. Both the text values and numeric codes are accepted.")
    gtin: Optional[UpdatableItemAttributesGtin] = None
    id: Optional[StrictStr] = Field(default=None, description="<p><= 127 characters</p> <p>The user-created unique ID that represents the product. Only Unicode characters are accepted.</p>")
    installment_price: Optional[StrictStr] = Field(default=None, description="Installment price of the product. This data will only be shown to pinners in the enabled countries. Expected format: <payment_count>:<payment_amount> <currency>")
    ios_deep_link: Optional[StrictStr] = Field(default=None, description="The deep link to the product on the iOS app.")
    item_group_id: Optional[StrictStr] = Field(default=None, description="<p><= 127 characters</p> <p>The parent ID of the product.</p>")
    last_updated_time: Optional[StrictInt] = Field(default=None, description="The millisecond timestamp when the item was lastly modified by the merchant.")
    link: Optional[StrictStr] = Field(default=None, description="<p><= 511 characters</p> <p>The landing page for the product.</p>")
    material: Optional[StrictStr] = Field(default=None, description="The material used to make the product.")
    min_ad_price: Optional[StrictStr] = Field(default=None, description="The minimum advertised price of the product. It supports the following formats, \"19.99 USD\", \"19.99USD\" and \"19.99\". If the currency is not included, we default to US dollars.")
    mobile_link: Optional[StrictStr] = Field(default=None, description="The mobile-optimized version of your landing page. Must begin with http:// or https://.")
    mpn: Optional[StrictStr] = Field(default=None, description="Manufacturer Part Number are alpha-numeric codes created by the manufacturer of a product to uniquely identify it among all products from the same manufacturer.")
    number_of_ratings: Optional[StrictInt] = Field(default=None, description="The number of ratings for the item.")
    number_of_reviews: Optional[StrictInt] = Field(default=None, description="The number of reviews available for the item.")
    pattern: Optional[StrictStr] = Field(default=None, description="The description of the pattern used for the product.")
    price: Optional[StrictStr] = Field(default=None, description="The price of the product. It supports the following formats, \"24.99 USD\", \"24.99USD\" and \"24.99\". If the currency is not included, we default to US dollars.")
    product_type: Optional[StrictStr] = Field(default=None, description="<p><= 1000 characters</p> <p>The categorization of your product based on your custom product taxonomy. Subcategories must be sent separated by “ > “. The > must be wrapped by spaces. We do not recognize any other delimiters such as comma or pipe.</p>")
    promotion_id: Optional[StrictStr] = Field(default=None, description="A unique identifier referencing the promotion associated with this catalog item.")
    sale_price: Optional[StrictStr] = Field(default=None, description="The discounted price of the product. The sale_price must be lower than the price. It supports the following formats, \"14.99 USD\", \"14.99USD\" and \"14.99\". If the currency is not included, we default to US dollars.")
    sale_price_effective_date: Optional[StrictStr] = Field(default=None, description="Sale price effective date. Expected format: <start_date>/<end_date> (ISO 8601 format)")
    shipping: Optional[StrictStr] = Field(default=None, description="Shipping consists of one group of up to four elements, country, region, service (all optional) and price (required). All colons, even for blank values, are required.")
    shipping_height: Optional[StrictStr] = Field(default=None, description="The height of the package needed to ship the product. Ensure there is a space between the numeric string and the metric.")
    shipping_weight: Optional[StrictStr] = Field(default=None, description="The weight of the product. Ensure there is a space between the numeric string and the metric.")
    shipping_width: Optional[StrictStr] = Field(default=None, description="The width of the package needed to ship the product. Ensure there is a space between the numeric string and the metric.")
    size: Optional[StrictStr] = Field(default=None, description="The size of the product.")
    size_system: Optional[StrictStr] = Field(default=None, description="Indicates the country’s sizing system in which you are submitting your product. Must be one of the following values (upper or lowercased): ‘US’, ‘UK’, ‘EU’, ‘DE’, ‘FR’, ‘JP’, ‘CN’, ‘IT’, ‘BR’, ‘MEX’, or ‘AU’.")
    size_type: Optional[StrictStr] = Field(default=None, description="Additional description for the size. Must be one of the following values (upper or lowercased): ‘regular’, ‘petite’, ‘plus’, ‘big_and_tall’, or ‘maternity’.")
    tax: Optional[StrictStr] = Field(default=None, description="Tax consists of one group of up to four elements, country, region, rate (all required) and tax_ship (optional). All colons, even for blank values, are required.")
    title: Optional[StrictStr] = Field(default=None, description="<p><= 500 characters</p> <p>The name of the product.</p>")
    unit_pricing_base_measure: Optional[StrictStr] = Field(default=None, description="Unit pricing base measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <base_measure> <unit_type>")
    unit_pricing_measure: Optional[StrictStr] = Field(default=None, description="Unit pricing total measure of the product. This data will only be shown to pinners in the enabled countries. Expected format: <total_units> <unit_type>")
    variant_names: Optional[List[StrictStr]] = Field(default=None, description="Options for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed.")
    variant_values: Optional[List[StrictStr]] = Field(default=None, description="Option values for this variant. People will see these options next to your Pin and can select the one they want. List them in the order you want them displayed. The order of the variant values must be consistent with the order of the variant names.")
    additional_image_link: Optional[List[StrictStr]] = Field(default=None, description="<p><= 2000 characters</p> <p>The links to additional images for your product. Up to ten additional images can be used to show a product from different angles or to show different stages. Must begin with http:// or https://.</p>")
    image_link: Optional[ItemAttributesRequestAllOfImageLink] = None
    save_pin_disabled: Optional[StrictBool] = Field(default=False, description="By default, product pins created from a catalog are able to be saved by Pinners. If you want to disable the save pin feature, set this attribute to true. This feature is only available for allowlisted merchants. Please contact your account manager to enable this feature.")
    video_link: Optional[StrictStr] = Field(default=None, description="<p><= 2,000 characters</p> <p>Hosted link to the product video.</p> <p>File types for linked videos must be .mp4, .mov or .m4v.</p> <p>File size cannot exceed 2GB.</p>")
    __properties: ClassVar[List[str]] = ["ad_image_0_link", "ad_image_0_tag", "ad_image_10_link", "ad_image_10_tag", "ad_image_11_link", "ad_image_11_tag", "ad_image_12_link", "ad_image_12_tag", "ad_image_13_link", "ad_image_13_tag", "ad_image_14_link", "ad_image_14_tag", "ad_image_15_link", "ad_image_15_tag", "ad_image_16_link", "ad_image_16_tag", "ad_image_17_link", "ad_image_17_tag", "ad_image_18_link", "ad_image_18_tag", "ad_image_19_link", "ad_image_19_tag", "ad_image_1_link", "ad_image_1_tag", "ad_image_2_link", "ad_image_2_tag", "ad_image_3_link", "ad_image_3_tag", "ad_image_4_link", "ad_image_4_tag", "ad_image_5_link", "ad_image_5_tag", "ad_image_6_link", "ad_image_6_tag", "ad_image_7_link", "ad_image_7_tag", "ad_image_8_link", "ad_image_8_tag", "ad_image_9_link", "ad_image_9_tag", "ad_link", "ad_video_0_link", "ad_video_0_tag", "ad_video_1_link", "ad_video_1_tag", "ad_video_2_link", "ad_video_2_tag", "adult", "age_group", "android_deep_link", "availability", "average_review_rating", "brand", "checkout_enabled", "color", "condition", "custom_label_0", "custom_label_1", "custom_label_2", "custom_label_3", "custom_label_4", "custom_number_0", "custom_number_1", "custom_number_2", "custom_number_3", "custom_number_4", "description", "free_shipping_label", "free_shipping_limit", "gender", "google_product_category", "gtin", "id", "installment_price", "ios_deep_link", "item_group_id", "last_updated_time", "link", "material", "min_ad_price", "mobile_link", "mpn", "number_of_ratings", "number_of_reviews", "pattern", "price", "product_type", "promotion_id", "sale_price", "sale_price_effective_date", "shipping", "shipping_height", "shipping_weight", "shipping_width", "size", "size_system", "size_type", "tax", "title", "unit_pricing_base_measure", "unit_pricing_measure", "variant_names", "variant_values", "additional_image_link", "image_link", "save_pin_disabled", "video_link"]

    model_config = ConfigDict(
        populate_by_name=True,
        validate_assignment=True,
        protected_namespaces=(),
    )


    def to_str(self) -> str:
        """Returns the string representation of the model using alias"""
        return pprint.pformat(self.model_dump(by_alias=True))

    def to_json(self) -> str:
        """Returns the JSON representation of the model using alias"""
        # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
        return json.dumps(self.to_dict())

    @classmethod
    def from_json(cls, json_str: str) -> Optional[Self]:
        """Create an instance of ItemAttributesRequest from a JSON string"""
        return cls.from_dict(json.loads(json_str))

    def to_dict(self) -> Dict[str, Any]:
        """Return the dictionary representation of the model using alias.

        This has the following differences from calling pydantic's
        `self.model_dump(by_alias=True)`:

        * `None` is only added to the output dict for nullable fields that
          were set at model initialization. Other fields with value `None`
          are ignored.
        """
        excluded_fields: Set[str] = set([
        ])

        _dict = self.model_dump(
            by_alias=True,
            exclude=excluded_fields,
            exclude_none=True,
        )
        # override the default output from pydantic by calling `to_dict()` of gtin
        if self.gtin:
            _dict['gtin'] = self.gtin.to_dict()
        # override the default output from pydantic by calling `to_dict()` of image_link
        if self.image_link:
            _dict['image_link'] = self.image_link.to_dict()
        # set to None if ad_image_0_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_0_link is None and "ad_image_0_link" in self.model_fields_set:
            _dict['ad_image_0_link'] = None

        # set to None if ad_image_0_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_0_tag is None and "ad_image_0_tag" in self.model_fields_set:
            _dict['ad_image_0_tag'] = None

        # set to None if ad_image_10_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_10_link is None and "ad_image_10_link" in self.model_fields_set:
            _dict['ad_image_10_link'] = None

        # set to None if ad_image_10_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_10_tag is None and "ad_image_10_tag" in self.model_fields_set:
            _dict['ad_image_10_tag'] = None

        # set to None if ad_image_11_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_11_link is None and "ad_image_11_link" in self.model_fields_set:
            _dict['ad_image_11_link'] = None

        # set to None if ad_image_11_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_11_tag is None and "ad_image_11_tag" in self.model_fields_set:
            _dict['ad_image_11_tag'] = None

        # set to None if ad_image_12_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_12_link is None and "ad_image_12_link" in self.model_fields_set:
            _dict['ad_image_12_link'] = None

        # set to None if ad_image_12_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_12_tag is None and "ad_image_12_tag" in self.model_fields_set:
            _dict['ad_image_12_tag'] = None

        # set to None if ad_image_13_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_13_link is None and "ad_image_13_link" in self.model_fields_set:
            _dict['ad_image_13_link'] = None

        # set to None if ad_image_13_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_13_tag is None and "ad_image_13_tag" in self.model_fields_set:
            _dict['ad_image_13_tag'] = None

        # set to None if ad_image_14_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_14_link is None and "ad_image_14_link" in self.model_fields_set:
            _dict['ad_image_14_link'] = None

        # set to None if ad_image_14_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_14_tag is None and "ad_image_14_tag" in self.model_fields_set:
            _dict['ad_image_14_tag'] = None

        # set to None if ad_image_15_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_15_link is None and "ad_image_15_link" in self.model_fields_set:
            _dict['ad_image_15_link'] = None

        # set to None if ad_image_15_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_15_tag is None and "ad_image_15_tag" in self.model_fields_set:
            _dict['ad_image_15_tag'] = None

        # set to None if ad_image_16_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_16_link is None and "ad_image_16_link" in self.model_fields_set:
            _dict['ad_image_16_link'] = None

        # set to None if ad_image_16_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_16_tag is None and "ad_image_16_tag" in self.model_fields_set:
            _dict['ad_image_16_tag'] = None

        # set to None if ad_image_17_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_17_link is None and "ad_image_17_link" in self.model_fields_set:
            _dict['ad_image_17_link'] = None

        # set to None if ad_image_17_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_17_tag is None and "ad_image_17_tag" in self.model_fields_set:
            _dict['ad_image_17_tag'] = None

        # set to None if ad_image_18_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_18_link is None and "ad_image_18_link" in self.model_fields_set:
            _dict['ad_image_18_link'] = None

        # set to None if ad_image_18_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_18_tag is None and "ad_image_18_tag" in self.model_fields_set:
            _dict['ad_image_18_tag'] = None

        # set to None if ad_image_19_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_19_link is None and "ad_image_19_link" in self.model_fields_set:
            _dict['ad_image_19_link'] = None

        # set to None if ad_image_19_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_19_tag is None and "ad_image_19_tag" in self.model_fields_set:
            _dict['ad_image_19_tag'] = None

        # set to None if ad_image_1_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_1_link is None and "ad_image_1_link" in self.model_fields_set:
            _dict['ad_image_1_link'] = None

        # set to None if ad_image_1_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_1_tag is None and "ad_image_1_tag" in self.model_fields_set:
            _dict['ad_image_1_tag'] = None

        # set to None if ad_image_2_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_2_link is None and "ad_image_2_link" in self.model_fields_set:
            _dict['ad_image_2_link'] = None

        # set to None if ad_image_2_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_2_tag is None and "ad_image_2_tag" in self.model_fields_set:
            _dict['ad_image_2_tag'] = None

        # set to None if ad_image_3_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_3_link is None and "ad_image_3_link" in self.model_fields_set:
            _dict['ad_image_3_link'] = None

        # set to None if ad_image_3_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_3_tag is None and "ad_image_3_tag" in self.model_fields_set:
            _dict['ad_image_3_tag'] = None

        # set to None if ad_image_4_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_4_link is None and "ad_image_4_link" in self.model_fields_set:
            _dict['ad_image_4_link'] = None

        # set to None if ad_image_4_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_4_tag is None and "ad_image_4_tag" in self.model_fields_set:
            _dict['ad_image_4_tag'] = None

        # set to None if ad_image_5_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_5_link is None and "ad_image_5_link" in self.model_fields_set:
            _dict['ad_image_5_link'] = None

        # set to None if ad_image_5_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_5_tag is None and "ad_image_5_tag" in self.model_fields_set:
            _dict['ad_image_5_tag'] = None

        # set to None if ad_image_6_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_6_link is None and "ad_image_6_link" in self.model_fields_set:
            _dict['ad_image_6_link'] = None

        # set to None if ad_image_6_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_6_tag is None and "ad_image_6_tag" in self.model_fields_set:
            _dict['ad_image_6_tag'] = None

        # set to None if ad_image_7_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_7_link is None and "ad_image_7_link" in self.model_fields_set:
            _dict['ad_image_7_link'] = None

        # set to None if ad_image_7_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_7_tag is None and "ad_image_7_tag" in self.model_fields_set:
            _dict['ad_image_7_tag'] = None

        # set to None if ad_image_8_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_8_link is None and "ad_image_8_link" in self.model_fields_set:
            _dict['ad_image_8_link'] = None

        # set to None if ad_image_8_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_8_tag is None and "ad_image_8_tag" in self.model_fields_set:
            _dict['ad_image_8_tag'] = None

        # set to None if ad_image_9_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_9_link is None and "ad_image_9_link" in self.model_fields_set:
            _dict['ad_image_9_link'] = None

        # set to None if ad_image_9_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_image_9_tag is None and "ad_image_9_tag" in self.model_fields_set:
            _dict['ad_image_9_tag'] = None

        # set to None if ad_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_link is None and "ad_link" in self.model_fields_set:
            _dict['ad_link'] = None

        # set to None if ad_video_0_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_video_0_link is None and "ad_video_0_link" in self.model_fields_set:
            _dict['ad_video_0_link'] = None

        # set to None if ad_video_0_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_video_0_tag is None and "ad_video_0_tag" in self.model_fields_set:
            _dict['ad_video_0_tag'] = None

        # set to None if ad_video_1_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_video_1_link is None and "ad_video_1_link" in self.model_fields_set:
            _dict['ad_video_1_link'] = None

        # set to None if ad_video_1_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_video_1_tag is None and "ad_video_1_tag" in self.model_fields_set:
            _dict['ad_video_1_tag'] = None

        # set to None if ad_video_2_link (nullable) is None
        # and model_fields_set contains the field
        if self.ad_video_2_link is None and "ad_video_2_link" in self.model_fields_set:
            _dict['ad_video_2_link'] = None

        # set to None if ad_video_2_tag (nullable) is None
        # and model_fields_set contains the field
        if self.ad_video_2_tag is None and "ad_video_2_tag" in self.model_fields_set:
            _dict['ad_video_2_tag'] = None

        # set to None if adult (nullable) is None
        # and model_fields_set contains the field
        if self.adult is None and "adult" in self.model_fields_set:
            _dict['adult'] = None

        # set to None if age_group (nullable) is None
        # and model_fields_set contains the field
        if self.age_group is None and "age_group" in self.model_fields_set:
            _dict['age_group'] = None

        # set to None if average_review_rating (nullable) is None
        # and model_fields_set contains the field
        if self.average_review_rating is None and "average_review_rating" in self.model_fields_set:
            _dict['average_review_rating'] = None

        # set to None if brand (nullable) is None
        # and model_fields_set contains the field
        if self.brand is None and "brand" in self.model_fields_set:
            _dict['brand'] = None

        # set to None if checkout_enabled (nullable) is None
        # and model_fields_set contains the field
        if self.checkout_enabled is None and "checkout_enabled" in self.model_fields_set:
            _dict['checkout_enabled'] = None

        # set to None if color (nullable) is None
        # and model_fields_set contains the field
        if self.color is None and "color" in self.model_fields_set:
            _dict['color'] = None

        # set to None if condition (nullable) is None
        # and model_fields_set contains the field
        if self.condition is None and "condition" in self.model_fields_set:
            _dict['condition'] = None

        # set to None if custom_label_0 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_label_0 is None and "custom_label_0" in self.model_fields_set:
            _dict['custom_label_0'] = None

        # set to None if custom_label_1 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_label_1 is None and "custom_label_1" in self.model_fields_set:
            _dict['custom_label_1'] = None

        # set to None if custom_label_2 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_label_2 is None and "custom_label_2" in self.model_fields_set:
            _dict['custom_label_2'] = None

        # set to None if custom_label_3 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_label_3 is None and "custom_label_3" in self.model_fields_set:
            _dict['custom_label_3'] = None

        # set to None if custom_label_4 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_label_4 is None and "custom_label_4" in self.model_fields_set:
            _dict['custom_label_4'] = None

        # set to None if custom_number_0 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_number_0 is None and "custom_number_0" in self.model_fields_set:
            _dict['custom_number_0'] = None

        # set to None if custom_number_1 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_number_1 is None and "custom_number_1" in self.model_fields_set:
            _dict['custom_number_1'] = None

        # set to None if custom_number_2 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_number_2 is None and "custom_number_2" in self.model_fields_set:
            _dict['custom_number_2'] = None

        # set to None if custom_number_3 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_number_3 is None and "custom_number_3" in self.model_fields_set:
            _dict['custom_number_3'] = None

        # set to None if custom_number_4 (nullable) is None
        # and model_fields_set contains the field
        if self.custom_number_4 is None and "custom_number_4" in self.model_fields_set:
            _dict['custom_number_4'] = None

        # set to None if free_shipping_label (nullable) is None
        # and model_fields_set contains the field
        if self.free_shipping_label is None and "free_shipping_label" in self.model_fields_set:
            _dict['free_shipping_label'] = None

        # set to None if free_shipping_limit (nullable) is None
        # and model_fields_set contains the field
        if self.free_shipping_limit is None and "free_shipping_limit" in self.model_fields_set:
            _dict['free_shipping_limit'] = None

        # set to None if gender (nullable) is None
        # and model_fields_set contains the field
        if self.gender is None and "gender" in self.model_fields_set:
            _dict['gender'] = None

        # set to None if google_product_category (nullable) is None
        # and model_fields_set contains the field
        if self.google_product_category is None and "google_product_category" in self.model_fields_set:
            _dict['google_product_category'] = None

        # set to None if gtin (nullable) is None
        # and model_fields_set contains the field
        if self.gtin is None and "gtin" in self.model_fields_set:
            _dict['gtin'] = None

        # set to None if installment_price (nullable) is None
        # and model_fields_set contains the field
        if self.installment_price is None and "installment_price" in self.model_fields_set:
            _dict['installment_price'] = None

        # set to None if item_group_id (nullable) is None
        # and model_fields_set contains the field
        if self.item_group_id is None and "item_group_id" in self.model_fields_set:
            _dict['item_group_id'] = None

        # set to None if last_updated_time (nullable) is None
        # and model_fields_set contains the field
        if self.last_updated_time is None and "last_updated_time" in self.model_fields_set:
            _dict['last_updated_time'] = None

        # set to None if material (nullable) is None
        # and model_fields_set contains the field
        if self.material is None and "material" in self.model_fields_set:
            _dict['material'] = None

        # set to None if min_ad_price (nullable) is None
        # and model_fields_set contains the field
        if self.min_ad_price is None and "min_ad_price" in self.model_fields_set:
            _dict['min_ad_price'] = None

        # set to None if mobile_link (nullable) is None
        # and model_fields_set contains the field
        if self.mobile_link is None and "mobile_link" in self.model_fields_set:
            _dict['mobile_link'] = None

        # set to None if mpn (nullable) is None
        # and model_fields_set contains the field
        if self.mpn is None and "mpn" in self.model_fields_set:
            _dict['mpn'] = None

        # set to None if number_of_ratings (nullable) is None
        # and model_fields_set contains the field
        if self.number_of_ratings is None and "number_of_ratings" in self.model_fields_set:
            _dict['number_of_ratings'] = None

        # set to None if number_of_reviews (nullable) is None
        # and model_fields_set contains the field
        if self.number_of_reviews is None and "number_of_reviews" in self.model_fields_set:
            _dict['number_of_reviews'] = None

        # set to None if pattern (nullable) is None
        # and model_fields_set contains the field
        if self.pattern is None and "pattern" in self.model_fields_set:
            _dict['pattern'] = None

        # set to None if product_type (nullable) is None
        # and model_fields_set contains the field
        if self.product_type is None and "product_type" in self.model_fields_set:
            _dict['product_type'] = None

        # set to None if promotion_id (nullable) is None
        # and model_fields_set contains the field
        if self.promotion_id is None and "promotion_id" in self.model_fields_set:
            _dict['promotion_id'] = None

        # set to None if sale_price (nullable) is None
        # and model_fields_set contains the field
        if self.sale_price is None and "sale_price" in self.model_fields_set:
            _dict['sale_price'] = None

        # set to None if sale_price_effective_date (nullable) is None
        # and model_fields_set contains the field
        if self.sale_price_effective_date is None and "sale_price_effective_date" in self.model_fields_set:
            _dict['sale_price_effective_date'] = None

        # set to None if shipping (nullable) is None
        # and model_fields_set contains the field
        if self.shipping is None and "shipping" in self.model_fields_set:
            _dict['shipping'] = None

        # set to None if shipping_height (nullable) is None
        # and model_fields_set contains the field
        if self.shipping_height is None and "shipping_height" in self.model_fields_set:
            _dict['shipping_height'] = None

        # set to None if shipping_weight (nullable) is None
        # and model_fields_set contains the field
        if self.shipping_weight is None and "shipping_weight" in self.model_fields_set:
            _dict['shipping_weight'] = None

        # set to None if shipping_width (nullable) is None
        # and model_fields_set contains the field
        if self.shipping_width is None and "shipping_width" in self.model_fields_set:
            _dict['shipping_width'] = None

        # set to None if size (nullable) is None
        # and model_fields_set contains the field
        if self.size is None and "size" in self.model_fields_set:
            _dict['size'] = None

        # set to None if size_system (nullable) is None
        # and model_fields_set contains the field
        if self.size_system is None and "size_system" in self.model_fields_set:
            _dict['size_system'] = None

        # set to None if size_type (nullable) is None
        # and model_fields_set contains the field
        if self.size_type is None and "size_type" in self.model_fields_set:
            _dict['size_type'] = None

        # set to None if tax (nullable) is None
        # and model_fields_set contains the field
        if self.tax is None and "tax" in self.model_fields_set:
            _dict['tax'] = None

        # set to None if unit_pricing_base_measure (nullable) is None
        # and model_fields_set contains the field
        if self.unit_pricing_base_measure is None and "unit_pricing_base_measure" in self.model_fields_set:
            _dict['unit_pricing_base_measure'] = None

        # set to None if unit_pricing_measure (nullable) is None
        # and model_fields_set contains the field
        if self.unit_pricing_measure is None and "unit_pricing_measure" in self.model_fields_set:
            _dict['unit_pricing_measure'] = None

        # set to None if variant_names (nullable) is None
        # and model_fields_set contains the field
        if self.variant_names is None and "variant_names" in self.model_fields_set:
            _dict['variant_names'] = None

        # set to None if variant_values (nullable) is None
        # and model_fields_set contains the field
        if self.variant_values is None and "variant_values" in self.model_fields_set:
            _dict['variant_values'] = None

        # set to None if additional_image_link (nullable) is None
        # and model_fields_set contains the field
        if self.additional_image_link is None and "additional_image_link" in self.model_fields_set:
            _dict['additional_image_link'] = None

        # set to None if video_link (nullable) is None
        # and model_fields_set contains the field
        if self.video_link is None and "video_link" in self.model_fields_set:
            _dict['video_link'] = None

        return _dict

    @classmethod
    def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
        """Create an instance of ItemAttributesRequest from a dict"""
        if obj is None:
            return None

        if not isinstance(obj, dict):
            return cls.model_validate(obj)

        _obj = cls.model_validate({
            "ad_image_0_link": obj.get("ad_image_0_link"),
            "ad_image_0_tag": obj.get("ad_image_0_tag"),
            "ad_image_10_link": obj.get("ad_image_10_link"),
            "ad_image_10_tag": obj.get("ad_image_10_tag"),
            "ad_image_11_link": obj.get("ad_image_11_link"),
            "ad_image_11_tag": obj.get("ad_image_11_tag"),
            "ad_image_12_link": obj.get("ad_image_12_link"),
            "ad_image_12_tag": obj.get("ad_image_12_tag"),
            "ad_image_13_link": obj.get("ad_image_13_link"),
            "ad_image_13_tag": obj.get("ad_image_13_tag"),
            "ad_image_14_link": obj.get("ad_image_14_link"),
            "ad_image_14_tag": obj.get("ad_image_14_tag"),
            "ad_image_15_link": obj.get("ad_image_15_link"),
            "ad_image_15_tag": obj.get("ad_image_15_tag"),
            "ad_image_16_link": obj.get("ad_image_16_link"),
            "ad_image_16_tag": obj.get("ad_image_16_tag"),
            "ad_image_17_link": obj.get("ad_image_17_link"),
            "ad_image_17_tag": obj.get("ad_image_17_tag"),
            "ad_image_18_link": obj.get("ad_image_18_link"),
            "ad_image_18_tag": obj.get("ad_image_18_tag"),
            "ad_image_19_link": obj.get("ad_image_19_link"),
            "ad_image_19_tag": obj.get("ad_image_19_tag"),
            "ad_image_1_link": obj.get("ad_image_1_link"),
            "ad_image_1_tag": obj.get("ad_image_1_tag"),
            "ad_image_2_link": obj.get("ad_image_2_link"),
            "ad_image_2_tag": obj.get("ad_image_2_tag"),
            "ad_image_3_link": obj.get("ad_image_3_link"),
            "ad_image_3_tag": obj.get("ad_image_3_tag"),
            "ad_image_4_link": obj.get("ad_image_4_link"),
            "ad_image_4_tag": obj.get("ad_image_4_tag"),
            "ad_image_5_link": obj.get("ad_image_5_link"),
            "ad_image_5_tag": obj.get("ad_image_5_tag"),
            "ad_image_6_link": obj.get("ad_image_6_link"),
            "ad_image_6_tag": obj.get("ad_image_6_tag"),
            "ad_image_7_link": obj.get("ad_image_7_link"),
            "ad_image_7_tag": obj.get("ad_image_7_tag"),
            "ad_image_8_link": obj.get("ad_image_8_link"),
            "ad_image_8_tag": obj.get("ad_image_8_tag"),
            "ad_image_9_link": obj.get("ad_image_9_link"),
            "ad_image_9_tag": obj.get("ad_image_9_tag"),
            "ad_link": obj.get("ad_link"),
            "ad_video_0_link": obj.get("ad_video_0_link"),
            "ad_video_0_tag": obj.get("ad_video_0_tag"),
            "ad_video_1_link": obj.get("ad_video_1_link"),
            "ad_video_1_tag": obj.get("ad_video_1_tag"),
            "ad_video_2_link": obj.get("ad_video_2_link"),
            "ad_video_2_tag": obj.get("ad_video_2_tag"),
            "adult": obj.get("adult"),
            "age_group": obj.get("age_group"),
            "android_deep_link": obj.get("android_deep_link"),
            "availability": obj.get("availability"),
            "average_review_rating": obj.get("average_review_rating"),
            "brand": obj.get("brand"),
            "checkout_enabled": obj.get("checkout_enabled"),
            "color": obj.get("color"),
            "condition": obj.get("condition"),
            "custom_label_0": obj.get("custom_label_0"),
            "custom_label_1": obj.get("custom_label_1"),
            "custom_label_2": obj.get("custom_label_2"),
            "custom_label_3": obj.get("custom_label_3"),
            "custom_label_4": obj.get("custom_label_4"),
            "custom_number_0": obj.get("custom_number_0"),
            "custom_number_1": obj.get("custom_number_1"),
            "custom_number_2": obj.get("custom_number_2"),
            "custom_number_3": obj.get("custom_number_3"),
            "custom_number_4": obj.get("custom_number_4"),
            "description": obj.get("description"),
            "free_shipping_label": obj.get("free_shipping_label"),
            "free_shipping_limit": obj.get("free_shipping_limit"),
            "gender": obj.get("gender"),
            "google_product_category": obj.get("google_product_category"),
            "gtin": UpdatableItemAttributesGtin.from_dict(obj["gtin"]) if obj.get("gtin") is not None else None,
            "id": obj.get("id"),
            "installment_price": obj.get("installment_price"),
            "ios_deep_link": obj.get("ios_deep_link"),
            "item_group_id": obj.get("item_group_id"),
            "last_updated_time": obj.get("last_updated_time"),
            "link": obj.get("link"),
            "material": obj.get("material"),
            "min_ad_price": obj.get("min_ad_price"),
            "mobile_link": obj.get("mobile_link"),
            "mpn": obj.get("mpn"),
            "number_of_ratings": obj.get("number_of_ratings"),
            "number_of_reviews": obj.get("number_of_reviews"),
            "pattern": obj.get("pattern"),
            "price": obj.get("price"),
            "product_type": obj.get("product_type"),
            "promotion_id": obj.get("promotion_id"),
            "sale_price": obj.get("sale_price"),
            "sale_price_effective_date": obj.get("sale_price_effective_date"),
            "shipping": obj.get("shipping"),
            "shipping_height": obj.get("shipping_height"),
            "shipping_weight": obj.get("shipping_weight"),
            "shipping_width": obj.get("shipping_width"),
            "size": obj.get("size"),
            "size_system": obj.get("size_system"),
            "size_type": obj.get("size_type"),
            "tax": obj.get("tax"),
            "title": obj.get("title"),
            "unit_pricing_base_measure": obj.get("unit_pricing_base_measure"),
            "unit_pricing_measure": obj.get("unit_pricing_measure"),
            "variant_names": obj.get("variant_names"),
            "variant_values": obj.get("variant_values"),
            "additional_image_link": obj.get("additional_image_link"),
            "image_link": ItemAttributesRequestAllOfImageLink.from_dict(obj["image_link"]) if obj.get("image_link") is not None else None,
            "save_pin_disabled": obj.get("save_pin_disabled") if obj.get("save_pin_disabled") is not None else False,
            "video_link": obj.get("video_link")
        })
        return _obj


