brandon14/ebay-sdk-php

View on GitHub
src/Buy/Browse/V1/Model/ItemSummary.php

Summary

Maintainability
F
1 wk
Test Coverage
<?php

/**
 * This file is part of the trollandtoad/ebay-sdk-php package.
 *
 * MIT License
 *
 * Copyright (c) 2022 Brandon Clothier
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */

declare(strict_types=1);

/**
 * ItemSummary.
 *
 * PHP version ^7.2 || ^8.0
 *
 * @category Class
 *
 * @author   OpenAPI Generator team
 *
 * @see     https://openapi-generator.tech
 */

/**
 * Browse API.
 *
 * <p>The Browse API has the following resources:</p>   <ul> <li><b> item_summary: </b> Lets shoppers search for specific items by keyword, GTIN, category, charity, product, or item aspects and refine the results by using filters, such as aspects, compatibility, and fields values.</li>  <li><b> search_by_image: </b><a href=\"https://developer.ebay.com/api-docs/static/versioning.html#experimental \" target=\"_blank\"><img src=\"/cms/img/docs/experimental-icon.svg\" class=\"legend-icon experimental-icon\" alt=\"Experimental Release\" title=\"Experimental Release\" />&nbsp;(Experimental)</a> Lets shoppers search for specific items by image. You can refine the results by using URI parameters and filters.</li>   <li><b> item: </b> <ul><li>Lets you retrieve the details of a specific item or all the items in an item group, which is an item with variations such as color and size and check if a product is compatible with the specified item, such as if a specific car is compatible with a specific part.</li> <li>Provides a bridge between the eBay legacy APIs, such as <b> Finding</b>, and the RESTful APIs, which use different formats for the item IDs.</li>  </ul> </li>  <li> <b> shopping_cart: </b> <a href=\"https://developer.ebay.com/api-docs/static/versioning.html#experimental \" target=\"_blank\"><img src=\"/cms/img/docs/experimental-icon.svg\" class=\"legend-icon experimental-icon\" alt=\"Experimental Release\" title=\"Experimental Release\" />&nbsp;(Experimental)</a> <a href=\"https://developer.ebay.com/api-docs/static/versioning.html#limited \" target=\"_blank\"> <img src=\"/cms/img/docs/partners-api.svg\" class=\"legend-icon partners-icon\" title=\"Limited Release\"  alt=\"Limited Release\" />(Limited Release)</a> Provides the ability for eBay members to see the contents of their eBay cart, and add, remove, and change the quantity of items in their eBay cart.&nbsp;&nbsp;<b> Note: </b> This resource is not available in the eBay API Explorer.</li></ul>       <p>The <b> item_summary</b>, <b> search_by_image</b>, and <b> item</b> resource calls require an <a href=\"/api-docs/static/oauth-client-credentials-grant.html\">Application access token</a>. The <b> shopping_cart</b> resource calls require a <a href=\"/api-docs/static/oauth-authorization-code-grant.html\">User access token</a>.</p>
 *
 * The version of the OpenAPI document: v1.18.0
 * Generated by: https://openapi-generator.tech
 * OpenAPI Generator version: 5.4.0
 */

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

namespace TNT\Ebay\Buy\Browse\V1\Model;

use TNT\Ebay\Buy\Browse\V1\ObjectSerializer;

/**
 * ItemSummary Class Doc Comment.
 *
 * @category Class
 *
 * @description The type that defines the fields for the details of a specific item.
 *
 * @author   OpenAPI Generator team
 *
 * @see     https://openapi-generator.tech
 *
 * @implements \ArrayAccess<TKey, TValue>
 *
 * @template TKey int|null
 * @template TValue mixed|null
 */
class ItemSummary implements ModelInterface, \ArrayAccess, \JsonSerializable
{
    public const DISCRIMINATOR = null;

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

    /**
     * Array of property to type mappings. Used for (de)serialization.
     *
     * @var string[]
     */
    protected static $openAPITypes = [
        'additional_images' => '\TNT\Ebay\Buy\Browse\V1\Model\Image[]',
        'adult_only' => 'bool',
        'available_coupons' => 'bool',
        'bid_count' => 'int',
        'buying_options' => 'string[]',
        'categories' => '\TNT\Ebay\Buy\Browse\V1\Model\Category[]',
        'compatibility_match' => 'string',
        'compatibility_properties' => '\TNT\Ebay\Buy\Browse\V1\Model\CompatibilityProperty[]',
        'condition' => 'string',
        'condition_id' => 'string',
        'current_bid_price' => '\TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount',
        'distance_from_pickup_location' => '\TNT\Ebay\Buy\Browse\V1\Model\TargetLocation',
        'energy_efficiency_class' => 'string',
        'epid' => 'string',
        'image' => '\TNT\Ebay\Buy\Browse\V1\Model\Image',
        'item_affiliate_web_url' => 'string',
        'item_creation_date' => 'string',
        'item_end_date' => 'string',
        'item_group_href' => 'string',
        'item_group_type' => 'string',
        'item_href' => 'string',
        'item_id' => 'string',
        'item_location' => '\TNT\Ebay\Buy\Browse\V1\Model\ItemLocationImpl',
        'item_web_url' => 'string',
        'leaf_category_ids' => 'string[]',
        'legacy_item_id' => 'string',
        'listing_marketplace_id' => 'string',
        'marketing_price' => '\TNT\Ebay\Buy\Browse\V1\Model\MarketingPrice',
        'pickup_options' => '\TNT\Ebay\Buy\Browse\V1\Model\PickupOptionSummary[]',
        'price' => '\TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount',
        'price_display_condition' => 'string',
        'priority_listing' => 'bool',
        'qualified_programs' => 'string[]',
        'seller' => '\TNT\Ebay\Buy\Browse\V1\Model\Seller',
        'shipping_options' => '\TNT\Ebay\Buy\Browse\V1\Model\ShippingOptionSummary[]',
        'short_description' => 'string',
        'thumbnail_images' => '\TNT\Ebay\Buy\Browse\V1\Model\Image[]',
        'title' => 'string',
        'top_rated_buying_experience' => 'bool',
        'tyre_label_image_url' => 'string',
        'unit_price' => '\TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount',
        'unit_pricing_measure' => 'string',
        'watch_count' => 'int',
    ];

    /**
     * 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 = [
        'additional_images' => null,
        'adult_only' => null,
        'available_coupons' => null,
        'bid_count' => 'int32',
        'buying_options' => null,
        'categories' => null,
        'compatibility_match' => null,
        'compatibility_properties' => null,
        'condition' => null,
        'condition_id' => null,
        'current_bid_price' => null,
        'distance_from_pickup_location' => null,
        'energy_efficiency_class' => null,
        'epid' => null,
        'image' => null,
        'item_affiliate_web_url' => null,
        'item_creation_date' => null,
        'item_end_date' => null,
        'item_group_href' => null,
        'item_group_type' => null,
        'item_href' => null,
        'item_id' => null,
        'item_location' => null,
        'item_web_url' => null,
        'leaf_category_ids' => null,
        'legacy_item_id' => null,
        'listing_marketplace_id' => null,
        'marketing_price' => null,
        'pickup_options' => null,
        'price' => null,
        'price_display_condition' => null,
        'priority_listing' => null,
        'qualified_programs' => null,
        'seller' => null,
        'shipping_options' => null,
        'short_description' => null,
        'thumbnail_images' => null,
        'title' => null,
        'top_rated_buying_experience' => null,
        'tyre_label_image_url' => null,
        'unit_price' => null,
        'unit_pricing_measure' => null,
        'watch_count' => 'int32',
    ];

    /**
     * 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 = [
        'additional_images' => 'additionalImages',
        'adult_only' => 'adultOnly',
        'available_coupons' => 'availableCoupons',
        'bid_count' => 'bidCount',
        'buying_options' => 'buyingOptions',
        'categories' => 'categories',
        'compatibility_match' => 'compatibilityMatch',
        'compatibility_properties' => 'compatibilityProperties',
        'condition' => 'condition',
        'condition_id' => 'conditionId',
        'current_bid_price' => 'currentBidPrice',
        'distance_from_pickup_location' => 'distanceFromPickupLocation',
        'energy_efficiency_class' => 'energyEfficiencyClass',
        'epid' => 'epid',
        'image' => 'image',
        'item_affiliate_web_url' => 'itemAffiliateWebUrl',
        'item_creation_date' => 'itemCreationDate',
        'item_end_date' => 'itemEndDate',
        'item_group_href' => 'itemGroupHref',
        'item_group_type' => 'itemGroupType',
        'item_href' => 'itemHref',
        'item_id' => 'itemId',
        'item_location' => 'itemLocation',
        'item_web_url' => 'itemWebUrl',
        'leaf_category_ids' => 'leafCategoryIds',
        'legacy_item_id' => 'legacyItemId',
        'listing_marketplace_id' => 'listingMarketplaceId',
        'marketing_price' => 'marketingPrice',
        'pickup_options' => 'pickupOptions',
        'price' => 'price',
        'price_display_condition' => 'priceDisplayCondition',
        'priority_listing' => 'priorityListing',
        'qualified_programs' => 'qualifiedPrograms',
        'seller' => 'seller',
        'shipping_options' => 'shippingOptions',
        'short_description' => 'shortDescription',
        'thumbnail_images' => 'thumbnailImages',
        'title' => 'title',
        'top_rated_buying_experience' => 'topRatedBuyingExperience',
        'tyre_label_image_url' => 'tyreLabelImageUrl',
        'unit_price' => 'unitPrice',
        'unit_pricing_measure' => 'unitPricingMeasure',
        'watch_count' => 'watchCount',
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses).
     *
     * @var string[]
     */
    protected static $setters = [
        'additional_images' => 'setAdditionalImages',
        'adult_only' => 'setAdultOnly',
        'available_coupons' => 'setAvailableCoupons',
        'bid_count' => 'setBidCount',
        'buying_options' => 'setBuyingOptions',
        'categories' => 'setCategories',
        'compatibility_match' => 'setCompatibilityMatch',
        'compatibility_properties' => 'setCompatibilityProperties',
        'condition' => 'setCondition',
        'condition_id' => 'setConditionId',
        'current_bid_price' => 'setCurrentBidPrice',
        'distance_from_pickup_location' => 'setDistanceFromPickupLocation',
        'energy_efficiency_class' => 'setEnergyEfficiencyClass',
        'epid' => 'setEpid',
        'image' => 'setImage',
        'item_affiliate_web_url' => 'setItemAffiliateWebUrl',
        'item_creation_date' => 'setItemCreationDate',
        'item_end_date' => 'setItemEndDate',
        'item_group_href' => 'setItemGroupHref',
        'item_group_type' => 'setItemGroupType',
        'item_href' => 'setItemHref',
        'item_id' => 'setItemId',
        'item_location' => 'setItemLocation',
        'item_web_url' => 'setItemWebUrl',
        'leaf_category_ids' => 'setLeafCategoryIds',
        'legacy_item_id' => 'setLegacyItemId',
        'listing_marketplace_id' => 'setListingMarketplaceId',
        'marketing_price' => 'setMarketingPrice',
        'pickup_options' => 'setPickupOptions',
        'price' => 'setPrice',
        'price_display_condition' => 'setPriceDisplayCondition',
        'priority_listing' => 'setPriorityListing',
        'qualified_programs' => 'setQualifiedPrograms',
        'seller' => 'setSeller',
        'shipping_options' => 'setShippingOptions',
        'short_description' => 'setShortDescription',
        'thumbnail_images' => 'setThumbnailImages',
        'title' => 'setTitle',
        'top_rated_buying_experience' => 'setTopRatedBuyingExperience',
        'tyre_label_image_url' => 'setTyreLabelImageUrl',
        'unit_price' => 'setUnitPrice',
        'unit_pricing_measure' => 'setUnitPricingMeasure',
        'watch_count' => 'setWatchCount',
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests).
     *
     * @var string[]
     */
    protected static $getters = [
        'additional_images' => 'getAdditionalImages',
        'adult_only' => 'getAdultOnly',
        'available_coupons' => 'getAvailableCoupons',
        'bid_count' => 'getBidCount',
        'buying_options' => 'getBuyingOptions',
        'categories' => 'getCategories',
        'compatibility_match' => 'getCompatibilityMatch',
        'compatibility_properties' => 'getCompatibilityProperties',
        'condition' => 'getCondition',
        'condition_id' => 'getConditionId',
        'current_bid_price' => 'getCurrentBidPrice',
        'distance_from_pickup_location' => 'getDistanceFromPickupLocation',
        'energy_efficiency_class' => 'getEnergyEfficiencyClass',
        'epid' => 'getEpid',
        'image' => 'getImage',
        'item_affiliate_web_url' => 'getItemAffiliateWebUrl',
        'item_creation_date' => 'getItemCreationDate',
        'item_end_date' => 'getItemEndDate',
        'item_group_href' => 'getItemGroupHref',
        'item_group_type' => 'getItemGroupType',
        'item_href' => 'getItemHref',
        'item_id' => 'getItemId',
        'item_location' => 'getItemLocation',
        'item_web_url' => 'getItemWebUrl',
        'leaf_category_ids' => 'getLeafCategoryIds',
        'legacy_item_id' => 'getLegacyItemId',
        'listing_marketplace_id' => 'getListingMarketplaceId',
        'marketing_price' => 'getMarketingPrice',
        'pickup_options' => 'getPickupOptions',
        'price' => 'getPrice',
        'price_display_condition' => 'getPriceDisplayCondition',
        'priority_listing' => 'getPriorityListing',
        'qualified_programs' => 'getQualifiedPrograms',
        'seller' => 'getSeller',
        'shipping_options' => 'getShippingOptions',
        'short_description' => 'getShortDescription',
        'thumbnail_images' => 'getThumbnailImages',
        'title' => 'getTitle',
        'top_rated_buying_experience' => 'getTopRatedBuyingExperience',
        'tyre_label_image_url' => 'getTyreLabelImageUrl',
        'unit_price' => 'getUnitPrice',
        'unit_pricing_measure' => 'getUnitPricingMeasure',
        'watch_count' => 'getWatchCount',
    ];

    /**
     * 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;
    }

    /**
     * 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['additional_images'] = $data['additional_images'] ?? null;
        $this->container['adult_only'] = $data['adult_only'] ?? null;
        $this->container['available_coupons'] = $data['available_coupons'] ?? null;
        $this->container['bid_count'] = $data['bid_count'] ?? null;
        $this->container['buying_options'] = $data['buying_options'] ?? null;
        $this->container['categories'] = $data['categories'] ?? null;
        $this->container['compatibility_match'] = $data['compatibility_match'] ?? null;
        $this->container['compatibility_properties'] = $data['compatibility_properties'] ?? null;
        $this->container['condition'] = $data['condition'] ?? null;
        $this->container['condition_id'] = $data['condition_id'] ?? null;
        $this->container['current_bid_price'] = $data['current_bid_price'] ?? null;
        $this->container['distance_from_pickup_location'] = $data['distance_from_pickup_location'] ?? null;
        $this->container['energy_efficiency_class'] = $data['energy_efficiency_class'] ?? null;
        $this->container['epid'] = $data['epid'] ?? null;
        $this->container['image'] = $data['image'] ?? null;
        $this->container['item_affiliate_web_url'] = $data['item_affiliate_web_url'] ?? null;
        $this->container['item_creation_date'] = $data['item_creation_date'] ?? null;
        $this->container['item_end_date'] = $data['item_end_date'] ?? null;
        $this->container['item_group_href'] = $data['item_group_href'] ?? null;
        $this->container['item_group_type'] = $data['item_group_type'] ?? null;
        $this->container['item_href'] = $data['item_href'] ?? null;
        $this->container['item_id'] = $data['item_id'] ?? null;
        $this->container['item_location'] = $data['item_location'] ?? null;
        $this->container['item_web_url'] = $data['item_web_url'] ?? null;
        $this->container['leaf_category_ids'] = $data['leaf_category_ids'] ?? null;
        $this->container['legacy_item_id'] = $data['legacy_item_id'] ?? null;
        $this->container['listing_marketplace_id'] = $data['listing_marketplace_id'] ?? null;
        $this->container['marketing_price'] = $data['marketing_price'] ?? null;
        $this->container['pickup_options'] = $data['pickup_options'] ?? null;
        $this->container['price'] = $data['price'] ?? null;
        $this->container['price_display_condition'] = $data['price_display_condition'] ?? null;
        $this->container['priority_listing'] = $data['priority_listing'] ?? null;
        $this->container['qualified_programs'] = $data['qualified_programs'] ?? null;
        $this->container['seller'] = $data['seller'] ?? null;
        $this->container['shipping_options'] = $data['shipping_options'] ?? null;
        $this->container['short_description'] = $data['short_description'] ?? null;
        $this->container['thumbnail_images'] = $data['thumbnail_images'] ?? null;
        $this->container['title'] = $data['title'] ?? null;
        $this->container['top_rated_buying_experience'] = $data['top_rated_buying_experience'] ?? null;
        $this->container['tyre_label_image_url'] = $data['tyre_label_image_url'] ?? null;
        $this->container['unit_price'] = $data['unit_price'] ?? null;
        $this->container['unit_pricing_measure'] = $data['unit_pricing_measure'] ?? null;
        $this->container['watch_count'] = $data['watch_count'] ?? null;
    }

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

        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 additional_images.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\Image[]|null
     */
    public function getAdditionalImages()
    {
        return $this->container['additional_images'];
    }

    /**
     * Sets additional_images.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\Image[]|null $additional_images An array of containers with the URLs for the images that are in addition to the primary image.  The primary image is returned in the <b> image.imageUrl</b> field.
     *
     * @return self
     */
    public function setAdditionalImages($additional_images)
    {
        $this->container['additional_images'] = $additional_images;

        return $this;
    }

    /**
     * Gets adult_only.
     *
     * @return bool|null
     */
    public function getAdultOnly()
    {
        return $this->container['adult_only'];
    }

    /**
     * Sets adult_only.
     *
     * @param bool|null $adult_only This indicates if the item is for adults only. For more information about adult-only items on eBay, see <a href=\"https://pages.ebay.com/help/policies/adult-only.html \" target=\"_blank\">Adult items policy</a> for sellers and <a href=\"https://www.ebay.com/help/terms-conditions/default/searching-adult-items?id=4661 \" target=\"_blank\">Adult-Only items on eBay</a> for buyers.
     *
     * @return self
     */
    public function setAdultOnly($adult_only)
    {
        $this->container['adult_only'] = $adult_only;

        return $this;
    }

    /**
     * Gets available_coupons.
     *
     * @return bool|null
     */
    public function getAvailableCoupons()
    {
        return $this->container['available_coupons'];
    }

    /**
     * Sets available_coupons.
     *
     * @param bool|null $available_coupons this boolean attribute indicates if coupons are available for the item
     *
     * @return self
     */
    public function setAvailableCoupons($available_coupons)
    {
        $this->container['available_coupons'] = $available_coupons;

        return $this;
    }

    /**
     * Gets bid_count.
     *
     * @return int|null
     */
    public function getBidCount()
    {
        return $this->container['bid_count'];
    }

    /**
     * Sets bid_count.
     *
     * @param int|null $bid_count This integer value indicates the total number of bids that have been placed for an auction item. This field is only returned for auction items.
     *
     * @return self
     */
    public function setBidCount($bid_count)
    {
        $this->container['bid_count'] = $bid_count;

        return $this;
    }

    /**
     * Gets buying_options.
     *
     * @return string[]|null
     */
    public function getBuyingOptions()
    {
        return $this->container['buying_options'];
    }

    /**
     * Sets buying_options.
     *
     * @param string[]|null $buying_options A comma separated list of all the purchase options available for the item. <br><br><b> Values Returned:</b><ul><li><b>FIXED_PRICE</b> - Indicates the buyer can purchase the item for a set price using the Buy It Now button. </li>  <li><b> AUCTION</b> - Indicates the buyer can place a bid for the item. After the first bid is placed, this becomes a live auction item and is the only buying option for this item.</li>  <li><b> BEST_OFFER</b> - Items where the buyer can send the seller a price they're willing to pay for the item. The seller can accept, reject, or send a counter offer. For details about Best Offer, see <a href=\"https://www.ebay.com/help/selling/listings/selling-buy-now/adding-best-offer-listing?id=4144 \" target=\"_blank\">Best Offer</a>.</li><li><b>CLASSIFIED_AD</b> - Indicates that the final sales transaction is to be completed outside of the eBay environment.</li></ul> Code so that your app gracefully handles any future changes to this list.
     *
     * @return self
     */
    public function setBuyingOptions($buying_options)
    {
        $this->container['buying_options'] = $buying_options;

        return $this;
    }

    /**
     * Gets categories.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\Category[]|null
     */
    public function getCategories()
    {
        return $this->container['categories'];
    }

    /**
     * Sets categories.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\Category[]|null $categories this array returns the name and ID of each category associated with the item, including top level, branch, and leaf categories
     *
     * @return self
     */
    public function setCategories($categories)
    {
        $this->container['categories'] = $categories;

        return $this;
    }

    /**
     * Gets compatibility_match.
     *
     * @return string|null
     */
    public function getCompatibilityMatch()
    {
        return $this->container['compatibility_match'];
    }

    /**
     * Sets compatibility_match.
     *
     * @param string|null $compatibility_match This indicates how well the item matches the <b>compatibility_filter</b> product attributes.  <br><br><b> Valid Values: </b> EXACT or POSSIBLE <br /><br />Code so that your app gracefully handles any future changes to this list. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/browse/types/gct:CompatibilityMatchEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setCompatibilityMatch($compatibility_match)
    {
        $this->container['compatibility_match'] = $compatibility_match;

        return $this;
    }

    /**
     * Gets compatibility_properties.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\CompatibilityProperty[]|null
     */
    public function getCompatibilityProperties()
    {
        return $this->container['compatibility_properties'];
    }

    /**
     * Sets compatibility_properties.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\CompatibilityProperty[]|null $compatibility_properties This container returns only the product attributes that are compatible with the item. These attributes were specified in the <b>compatibility_filter</b> in the request. This means that if you passed in 5 attributes and only 4 are compatible, only those 4 are returned. If none of the attributes are compatible, this container is not returned.
     *
     * @return self
     */
    public function setCompatibilityProperties($compatibility_properties)
    {
        $this->container['compatibility_properties'] = $compatibility_properties;

        return $this;
    }

    /**
     * Gets condition.
     *
     * @return string|null
     */
    public function getCondition()
    {
        return $this->container['condition'];
    }

    /**
     * Sets condition.
     *
     * @param string|null $condition The text describing the condition of the item, such as New or Used. For a list of condition names, see <a href=\"https://developer.ebay.com/devzone/finding/callref/enums/conditionIdList.html \" target=\"_blank\">Item Condition IDs and Names</a>.  <br /><br />Code so that your app gracefully handles any future changes to this list.</span>
     *
     * @return self
     */
    public function setCondition($condition)
    {
        $this->container['condition'] = $condition;

        return $this;
    }

    /**
     * Gets condition_id.
     *
     * @return string|null
     */
    public function getConditionId()
    {
        return $this->container['condition_id'];
    }

    /**
     * Sets condition_id.
     *
     * @param string|null $condition_id The identifier of the condition of the item. For example, 1000 is the identifier for NEW. For a list of condition names and IDs, see <a href=\"https://developer.ebay.com/devzone/finding/callref/enums/conditionIdList.html \" target=\"_blank\">Item Condition IDs and Names</a>. <br /><br />Code so that your app gracefully handles any future changes to this list.
     *
     * @return self
     */
    public function setConditionId($condition_id)
    {
        $this->container['condition_id'] = $condition_id;

        return $this;
    }

    /**
     * Gets current_bid_price.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null
     */
    public function getCurrentBidPrice()
    {
        return $this->container['current_bid_price'];
    }

    /**
     * Sets current_bid_price.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null $current_bid_price current_bid_price
     *
     * @return self
     */
    public function setCurrentBidPrice($current_bid_price)
    {
        $this->container['current_bid_price'] = $current_bid_price;

        return $this;
    }

    /**
     * Gets distance_from_pickup_location.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\TargetLocation|null
     */
    public function getDistanceFromPickupLocation()
    {
        return $this->container['distance_from_pickup_location'];
    }

    /**
     * Sets distance_from_pickup_location.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\TargetLocation|null $distance_from_pickup_location distance_from_pickup_location
     *
     * @return self
     */
    public function setDistanceFromPickupLocation($distance_from_pickup_location)
    {
        $this->container['distance_from_pickup_location'] = $distance_from_pickup_location;

        return $this;
    }

    /**
     * Gets energy_efficiency_class.
     *
     * @return string|null
     */
    public function getEnergyEfficiencyClass()
    {
        return $this->container['energy_efficiency_class'];
    }

    /**
     * Sets energy_efficiency_class.
     *
     * @param string|null $energy_efficiency_class This indicates the <a href=\"https://en.wikipedia.org/wiki/European_Union_energy_label \">European energy efficiency</a> rating (EEK) of the item.  Energy efficiency ratings apply to products listed by commercial vendors in electronics categories only. <br /><br />Currently, this field is only applicable for the Germany site, and  is only returned if the seller specified the energy efficiency rating through item specifics at listing time. Rating values include <code>A+++</code>, <code>A++</code>, <code>A+</code>, <code>A</code>, <code>B</code>, <code>C</code>, <code>D</code>, <code>E</code>, <code>F</code>, and <code>G</code>.
     *
     * @return self
     */
    public function setEnergyEfficiencyClass($energy_efficiency_class)
    {
        $this->container['energy_efficiency_class'] = $energy_efficiency_class;

        return $this;
    }

    /**
     * Gets epid.
     *
     * @return string|null
     */
    public function getEpid()
    {
        return $this->container['epid'];
    }

    /**
     * Sets epid.
     *
     * @param string|null $epid An ePID is the eBay product identifier of a product from the eBay product catalog.  This indicates the product in which the item belongs.
     *
     * @return self
     */
    public function setEpid($epid)
    {
        $this->container['epid'] = $epid;

        return $this;
    }

    /**
     * Gets image.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\Image|null
     */
    public function getImage()
    {
        return $this->container['image'];
    }

    /**
     * Sets image.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\Image|null $image image
     *
     * @return self
     */
    public function setImage($image)
    {
        $this->container['image'] = $image;

        return $this;
    }

    /**
     * Gets item_affiliate_web_url.
     *
     * @return string|null
     */
    public function getItemAffiliateWebUrl()
    {
        return $this->container['item_affiliate_web_url'];
    }

    /**
     * Sets item_affiliate_web_url.
     *
     * @param string|null $item_affiliate_web_url The URL to the View Item page of the item, which includes the affiliate tracking ID. This field is only returned if the seller enables affiliate tracking for the item by including the <code><a href=\"/api-docs/buy/static/api-browse.html#Headers\">X-EBAY-C-ENDUSERCTX</a></code> request header in the method.  <br /> <br /><span class=\"tablenote\"><b>Note: </b> eBay Partner Network, in order to receive a commission for your sales, you must use this URL to forward your buyer to the ebay.com site. </span>
     *
     * @return self
     */
    public function setItemAffiliateWebUrl($item_affiliate_web_url)
    {
        $this->container['item_affiliate_web_url'] = $item_affiliate_web_url;

        return $this;
    }

    /**
     * Gets item_creation_date.
     *
     * @return string|null
     */
    public function getItemCreationDate()
    {
        return $this->container['item_creation_date'];
    }

    /**
     * Sets item_creation_date.
     *
     * @param string|null $item_creation_date The date and time when the item listing was created.  This value is returned in UTC format (yyyy-MM-ddThh:mm:ss.sssZ), which you can convert into the local time of the buyer.
     *
     * @return self
     */
    public function setItemCreationDate($item_creation_date)
    {
        $this->container['item_creation_date'] = $item_creation_date;

        return $this;
    }

    /**
     * Gets item_end_date.
     *
     * @return string|null
     */
    public function getItemEndDate()
    {
        return $this->container['item_end_date'];
    }

    /**
     * Sets item_end_date.
     *
     * @param string|null $item_end_date The date and time up to which the item can be purchased.  This value is returned in UTC format (yyyy-MM-ddThh:mm:ss.sssZ), which you can convert into the local time of the buyer.<br /><br /><span class=\"tablenote\"><b> Note: </b>This field is not returned for Good 'Til Cancelled (GTC) listings.</span>
     *
     * @return self
     */
    public function setItemEndDate($item_end_date)
    {
        $this->container['item_end_date'] = $item_end_date;

        return $this;
    }

    /**
     * Gets item_group_href.
     *
     * @return string|null
     */
    public function getItemGroupHref()
    {
        return $this->container['item_group_href'];
    }

    /**
     * Sets item_group_href.
     *
     * @param string|null $item_group_href The HATEOAS reference of the parent page of the item group. An item group is an item that has various aspect differences, such as color, size, storage capacity, etc. <br /> <br /><span class=\"tablenote\"> <b>  Note: </b>This field is returned only for item groups.</span>
     *
     * @return self
     */
    public function setItemGroupHref($item_group_href)
    {
        $this->container['item_group_href'] = $item_group_href;

        return $this;
    }

    /**
     * Gets item_group_type.
     *
     * @return string|null
     */
    public function getItemGroupType()
    {
        return $this->container['item_group_type'];
    }

    /**
     * Sets item_group_type.
     *
     * @param string|null $item_group_type The indicates the item group type. An item group is an item that has various aspect differences, such as color, size, storage capacity, etc. <br /><br />Currently only the <code>SELLER_DEFINED_VARIATIONS</code> is supported and indicates this is an item group created by the seller. <br /> <br /><span class=\"tablenote\"> <b> Note: </b>This field is returned only for item groups.</span><br /><br />Code so that your app gracefully handles any future changes to this list.
     *
     * @return self
     */
    public function setItemGroupType($item_group_type)
    {
        $this->container['item_group_type'] = $item_group_type;

        return $this;
    }

    /**
     * Gets item_href.
     *
     * @return string|null
     */
    public function getItemHref()
    {
        return $this->container['item_href'];
    }

    /**
     * Sets item_href.
     *
     * @param string|null $item_href the URI for the Browse API <a href=\"/api-docs/buy/browse/resources/item/methods/getItem\">getItem</a> method, which can be used to retrieve more details about items in the search results
     *
     * @return self
     */
    public function setItemHref($item_href)
    {
        $this->container['item_href'] = $item_href;

        return $this;
    }

    /**
     * Gets item_id.
     *
     * @return string|null
     */
    public function getItemId()
    {
        return $this->container['item_id'];
    }

    /**
     * Sets item_id.
     *
     * @param string|null $item_id the unique RESTful identifier of the item
     *
     * @return self
     */
    public function setItemId($item_id)
    {
        $this->container['item_id'] = $item_id;

        return $this;
    }

    /**
     * Gets item_location.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ItemLocationImpl|null
     */
    public function getItemLocation()
    {
        return $this->container['item_location'];
    }

    /**
     * Sets item_location.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ItemLocationImpl|null $item_location item_location
     *
     * @return self
     */
    public function setItemLocation($item_location)
    {
        $this->container['item_location'] = $item_location;

        return $this;
    }

    /**
     * Gets item_web_url.
     *
     * @return string|null
     */
    public function getItemWebUrl()
    {
        return $this->container['item_web_url'];
    }

    /**
     * Sets item_web_url.
     *
     * @param string|null $item_web_url The URL to the View Item page of the item.  This enables you to include a \"Report Item on eBay\" hyperlink that takes the buyer to the View Item page on eBay. From there they can report any issues regarding this item to eBay.
     *
     * @return self
     */
    public function setItemWebUrl($item_web_url)
    {
        $this->container['item_web_url'] = $item_web_url;

        return $this;
    }

    /**
     * Gets leaf_category_ids.
     *
     * @return string[]|null
     */
    public function getLeafCategoryIds()
    {
        return $this->container['leaf_category_ids'];
    }

    /**
     * Sets leaf_category_ids.
     *
     * @param string[]|null $leaf_category_ids The leaf category IDs of the item. When the item belongs to two leaf categories, the ID values are returned in the order primary, secondary.
     *
     * @return self
     */
    public function setLeafCategoryIds($leaf_category_ids)
    {
        $this->container['leaf_category_ids'] = $leaf_category_ids;

        return $this;
    }

    /**
     * Gets legacy_item_id.
     *
     * @return string|null
     */
    public function getLegacyItemId()
    {
        return $this->container['legacy_item_id'];
    }

    /**
     * Sets legacy_item_id.
     *
     * @param string|null $legacy_item_id The unique identifier of the eBay listing that contains the item. This is the traditional/legacy ID that is often seen in the URL of the listing View Item page.
     *
     * @return self
     */
    public function setLegacyItemId($legacy_item_id)
    {
        $this->container['legacy_item_id'] = $legacy_item_id;

        return $this;
    }

    /**
     * Gets listing_marketplace_id.
     *
     * @return string|null
     */
    public function getListingMarketplaceId()
    {
        return $this->container['listing_marketplace_id'];
    }

    /**
     * Sets listing_marketplace_id.
     *
     * @param string|null $listing_marketplace_id The ID of the eBay marketplace where the item is listed. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/browse/types/ba:MarketplaceIdEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setListingMarketplaceId($listing_marketplace_id)
    {
        $this->container['listing_marketplace_id'] = $listing_marketplace_id;

        return $this;
    }

    /**
     * Gets marketing_price.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\MarketingPrice|null
     */
    public function getMarketingPrice()
    {
        return $this->container['marketing_price'];
    }

    /**
     * Sets marketing_price.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\MarketingPrice|null $marketing_price marketing_price
     *
     * @return self
     */
    public function setMarketingPrice($marketing_price)
    {
        $this->container['marketing_price'] = $marketing_price;

        return $this;
    }

    /**
     * Gets pickup_options.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\PickupOptionSummary[]|null
     */
    public function getPickupOptions()
    {
        return $this->container['pickup_options'];
    }

    /**
     * Sets pickup_options.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\PickupOptionSummary[]|null $pickup_options This container returns the local pickup options available to the buyer. This container is only returned if the user is searching for local pickup items and set the local pickup filters in the method request.
     *
     * @return self
     */
    public function setPickupOptions($pickup_options)
    {
        $this->container['pickup_options'] = $pickup_options;

        return $this;
    }

    /**
     * Gets price.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null
     */
    public function getPrice()
    {
        return $this->container['price'];
    }

    /**
     * Sets price.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null $price price
     *
     * @return self
     */
    public function setPrice($price)
    {
        $this->container['price'] = $price;

        return $this;
    }

    /**
     * Gets price_display_condition.
     *
     * @return string|null
     */
    public function getPriceDisplayCondition()
    {
        return $this->container['price_display_condition'];
    }

    /**
     * Sets price_display_condition.
     *
     * @param string|null $price_display_condition Indicates when in the buying flow the item's price can appear for minimum advertised price (MAP) items, which is the lowest price a retailer can advertise/show for this item. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/browse/types/gct:PriceDisplayConditionEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setPriceDisplayCondition($price_display_condition)
    {
        $this->container['price_display_condition'] = $price_display_condition;

        return $this;
    }

    /**
     * Gets priority_listing.
     *
     * @return bool|null
     */
    public function getPriorityListing()
    {
        return $this->container['priority_listing'];
    }

    /**
     * Sets priority_listing.
     *
     * @param bool|null $priority_listing This field is returned as <code>true</code> if the listing is part of a Promoted Listing campaign. Promoted Listings are available to Above Standard and Top Rated sellers with recent sales activity.<br /><br /><span class=\"tablenote\"><b>Note:</b> Priority Listing is returned only with a Best Match sort and will not be returned for other sort options.</span>
     *
     * @return self
     */
    public function setPriorityListing($priority_listing)
    {
        $this->container['priority_listing'] = $priority_listing;

        return $this;
    }

    /**
     * Gets qualified_programs.
     *
     * @return string[]|null
     */
    public function getQualifiedPrograms()
    {
        return $this->container['qualified_programs'];
    }

    /**
     * Sets qualified_programs.
     *
     * @param string[]|null $qualified_programs An array of the qualified programs available for the item, such as EBAY_PLUS, AUTHENTICITY_GUARANTEE, and AUTHENTICITY_VERIFICATION.<br /><br />eBay Plus is a premium account option for buyers, which provides benefits such as fast free domestic shipping and free returns on selected items. Top-Rated eBay sellers must opt in to eBay Plus to be able to offer the program on qualifying listings. Sellers must commit to next-day delivery of those items.<br /><br /><span class=\"tablenote\"><b>Note: </b> eBay Plus is available only to buyers in Germany, Austria, and Australia marketplaces.</span><br /><br />The eBay <a href=\"https://pages.ebay.com/authenticity-guarantee/ \" target=\"_blank\">Authenticity Guarantee</a> program enables third-party authenticators to perform authentication verification inspections on items such as watches and sneakers.
     *
     * @return self
     */
    public function setQualifiedPrograms($qualified_programs)
    {
        $this->container['qualified_programs'] = $qualified_programs;

        return $this;
    }

    /**
     * Gets seller.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\Seller|null
     */
    public function getSeller()
    {
        return $this->container['seller'];
    }

    /**
     * Sets seller.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\Seller|null $seller seller
     *
     * @return self
     */
    public function setSeller($seller)
    {
        $this->container['seller'] = $seller;

        return $this;
    }

    /**
     * Gets shipping_options.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ShippingOptionSummary[]|null
     */
    public function getShippingOptions()
    {
        return $this->container['shipping_options'];
    }

    /**
     * Sets shipping_options.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ShippingOptionSummary[]|null $shipping_options this container returns the shipping options available to ship the item
     *
     * @return self
     */
    public function setShippingOptions($shipping_options)
    {
        $this->container['shipping_options'] = $shipping_options;

        return $this;
    }

    /**
     * Gets short_description.
     *
     * @return string|null
     */
    public function getShortDescription()
    {
        return $this->container['short_description'];
    }

    /**
     * Sets short_description.
     *
     * @param string|null $short_description This text string is derived from the item condition and the item aspects (such as size, color, capacity, model, brand, etc.). Sometimes the title doesn't give enough information but the description is too big. Surfacing the <b>shortDescription</b> can often provide buyers with the additional information that could help them make a buying decision.  <br /><br />For example: <br /><br />    <code>   \"<b> title</b>\": \"Petrel U42W FPV Drone RC Quadcopter w/HD Camera Live Video One Key Off / Landing\", <br />\"<b>shortDescription</b>\": \"1 U42W Quadcopter. Syma X5SW-V3 Wifi FPV RC Drone Quadcopter 2.4Ghz 6-Axis Gyro with Headless Mode. Syma X20 Pocket Drone 2.4Ghz Mini RC Quadcopter Headless Mode Altitude Hold. One Key Take Off / Landing function: allow beginner to easy to fly the drone without any skill.\",</code>       <br /><br /><b>Restriction: </b> This field is returned by the <b> search</b> method only when <b> fieldgroups</b> = <code>EXTENDED</code>.
     *
     * @return self
     */
    public function setShortDescription($short_description)
    {
        $this->container['short_description'] = $short_description;

        return $this;
    }

    /**
     * Gets thumbnail_images.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\Image[]|null
     */
    public function getThumbnailImages()
    {
        return $this->container['thumbnail_images'];
    }

    /**
     * Sets thumbnail_images.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\Image[]|null $thumbnail_images an array of thumbnail images for the item
     *
     * @return self
     */
    public function setThumbnailImages($thumbnail_images)
    {
        $this->container['thumbnail_images'] = $thumbnail_images;

        return $this;
    }

    /**
     * Gets title.
     *
     * @return string|null
     */
    public function getTitle()
    {
        return $this->container['title'];
    }

    /**
     * Sets title.
     *
     * @param string|null $title The seller-created title of the item. <br><br><b>Maximum Length: </b> 80 characters
     *
     * @return self
     */
    public function setTitle($title)
    {
        $this->container['title'] = $title;

        return $this;
    }

    /**
     * Gets top_rated_buying_experience.
     *
     * @return bool|null
     */
    public function getTopRatedBuyingExperience()
    {
        return $this->container['top_rated_buying_experience'];
    }

    /**
     * Sets top_rated_buying_experience.
     *
     * @param bool|null $top_rated_buying_experience This indicates if the item is a top-rated plus item. There are three benefits of a top-rated plus item: a  minimum 30-day money-back return policy, shipping the item in 1 business day with tracking provided, and the added comfort of knowing that this item is from an experienced seller with the highest buyer ratings. See the <a href=\"https://pages.ebay.com/topratedplus/index.html \" target=\"_blank\">Top Rated Plus Items </a> and <a href=\"https://pages.ebay.com/help/sell/top-rated.html \" target=\"_blank\">Becoming a Top Rated Seller and qualifying for Top Rated Plus</a> help topics for more information.
     *
     * @return self
     */
    public function setTopRatedBuyingExperience($top_rated_buying_experience)
    {
        $this->container['top_rated_buying_experience'] = $top_rated_buying_experience;

        return $this;
    }

    /**
     * Gets tyre_label_image_url.
     *
     * @return string|null
     */
    public function getTyreLabelImageUrl()
    {
        return $this->container['tyre_label_image_url'];
    }

    /**
     * Sets tyre_label_image_url.
     *
     * @param string|null $tyre_label_image_url the URL to the image that shows the information on the tyre label
     *
     * @return self
     */
    public function setTyreLabelImageUrl($tyre_label_image_url)
    {
        $this->container['tyre_label_image_url'] = $tyre_label_image_url;

        return $this;
    }

    /**
     * Gets unit_price.
     *
     * @return \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null
     */
    public function getUnitPrice()
    {
        return $this->container['unit_price'];
    }

    /**
     * Sets unit_price.
     *
     * @param \TNT\Ebay\Buy\Browse\V1\Model\ConvertedAmount|null $unit_price unit_price
     *
     * @return self
     */
    public function setUnitPrice($unit_price)
    {
        $this->container['unit_price'] = $unit_price;

        return $this;
    }

    /**
     * Gets unit_pricing_measure.
     *
     * @return string|null
     */
    public function getUnitPricingMeasure()
    {
        return $this->container['unit_pricing_measure'];
    }

    /**
     * Sets unit_pricing_measure.
     *
     * @param string|null $unit_pricing_measure The designation, such as size, weight, volume, count, etc., that was used to specify the quantity of the item. This helps buyers compare prices. <br /><br />For example, the following tells the buyer that the item is 7.99 per 100 grams. <br /><br /><code>\"unitPricingMeasure\": \"100g\",<br /> \"unitPrice\": {<br />&nbsp;&nbsp;\"value\": \"7.99\",<br />&nbsp;&nbsp;\"currency\": \"GBP\"</code>
     *
     * @return self
     */
    public function setUnitPricingMeasure($unit_pricing_measure)
    {
        $this->container['unit_pricing_measure'] = $unit_pricing_measure;

        return $this;
    }

    /**
     * Gets watch_count.
     *
     * @return int|null
     */
    public function getWatchCount()
    {
        return $this->container['watch_count'];
    }

    /**
     * Sets watch_count.
     *
     * @param int|null $watch_count The number of users that have added the item to their watch list.<br /><br /><span class=\"tablenote\"> <strong>Note:</strong> This field is restricted to applications that have been granted permission to access this feature. You must submit an <a href=\"https://developer.ebay.com/my/support/tickets?tab=app-check \">App Check ticket</a> to request this access. In the App Check form, add a note to the <b>Application Title/Summary</b> and/or <b>Application Details</b> fields that you want access to Watch Count data in the Browse API.</span>
     *
     * @return self
     */
    public function setWatchCount($watch_count)
    {
        $this->container['watch_count'] = $watch_count;

        return $this;
    }

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

    /**
     * Gets offset.
     *
     * @param int $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
     */
    public function offsetSet($offset, $value): void
    {
        if (null === $offset) {
            $this->container[] = $value;
        } else {
            $this->container[$offset] = $value;
        }
    }

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

    /**
     * Serializes the object to a value that can be serialized natively by json_encode().
     *
     * @see 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));
    }
}