brandon14/ebay-sdk-php

View on GitHub
src/Buy/FeedBeta/V1/Model/Item.php

Summary

Maintainability
F
2 wks
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);

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

/**
 * Item Feed Service.
 *
 * <span class=\"tablenote\"><b>Note:</b> This is 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> API available only to select developers approved by business units.</span><br /><br />The Feed API provides the ability to download TSV_GZIP feed files containing eBay items and an hourly snapshot file of the items that have changed within an hour for a specific category, date and marketplace. <p>In addition to the API, there is an open source <a href=\"https://github.com/eBay/FeedSDK \" target=\"_blank\">Feed SDK</a> written in Java that downloads, combines files into a single file when needed, and unzips the entire feed file. It also lets you specify field filters to curate the items in the file.</p>
 *
 * The version of the OpenAPI document: v1_beta.33.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\FeedBeta\V1\Model;

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

/**
 * Item Class Doc Comment.
 *
 * @category Class
 *
 * @description The type that defines the columns returned in the &lt;b&gt;Item&lt;/b&gt; feed file.
 *
 * @author   OpenAPI Generator team
 *
 * @see     https://openapi-generator.tech
 *
 * @implements \ArrayAccess<TKey, TValue>
 *
 * @template TKey int|null
 * @template TValue mixed|null
 */
class Item implements ModelInterface, \ArrayAccess, \JsonSerializable
{
    public const DISCRIMINATOR = null;

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

    /**
     * Array of property to type mappings. Used for (de)serialization.
     *
     * @var string[]
     */
    protected static $openAPITypes = [
        'item_id' => 'string',
        'title' => 'string',
        'image_url' => 'string',
        'category' => 'string',
        'category_id' => 'string',
        'buying_options' => 'string',
        'seller_username' => 'string',
        'seller_feedback_percentage' => 'string',
        'seller_feedback_score' => 'string',
        'gtin' => 'string',
        'brand' => 'string',
        'mpn' => 'string',
        'epid' => 'string',
        'condition_id' => 'string',
        'condition' => 'string',
        'price_value' => 'string',
        'price_currency' => 'string',
        'primary_item_group_id' => 'string',
        'primary_item_group_type' => 'string',
        'item_end_date' => 'string',
        'seller_item_revision' => 'string',
        'item_location_country' => 'string',
        'localized_aspects' => 'string',
        'seller_trust_level' => 'string',
        'availability' => 'string',
        'image_altering_prohibited' => 'bool',
        'estimated_available_quantity' => 'int',
        'availability_threshold_type' => 'string',
        'availability_threshold' => 'int',
        'returns_accepted' => 'bool',
        'return_period_value' => 'int',
        'return_period_unit' => 'string',
        'refund_method' => 'string',
        'return_method' => 'string',
        'return_shipping_cost_payer' => 'string',
        'accepted_payment_methods' => 'string',
        'delivery_options' => 'string',
        'ship_to_included_regions' => 'string',
        'ship_to_excluded_regions' => 'string',
        'inferred_epid' => 'string',
        'inferred_gtin' => 'string',
        'inferred_brand' => 'string',
        'inferred_mpn' => 'string',
        'inferred_localized_aspects' => 'string',
        'additional_image_urls' => 'string',
        'original_price_value' => 'string',
        'original_price_currency' => 'string',
        'discount_amount' => 'string',
        'discount_percentage' => 'string',
        'energy_efficiency_class' => 'string',
        'qualified_programs' => 'string',
        'lot_size' => 'int',
        'length_unit_of_measure' => 'string',
        'package_width' => 'string',
        'package_height' => 'string',
        'package_length' => 'string',
        'weight_unit_of_measure' => 'string',
        'package_weight' => 'string',
        'shipping_carrier_code' => 'string',
        'shipping_service_code' => 'string',
        'shipping_type' => 'string',
        'shipping_cost' => 'string',
        'shipping_cost_type' => 'string',
        'additional_shipping_cost_per_unit' => 'string',
        'quantity_used_for_estimate' => 'int',
        'unit_price' => 'string',
        'unit_pricing_measure' => 'string',
        'legacy_item_id' => 'string',
        'alerts' => 'string',
        'seller_account_type' => 'string',
        'tyre_label_image_url' => 'string',
        'priority_listing_payload' => 'string',
        'item_creation_date' => 'string',
        'item_web_url' => 'string',
        'default_image_url' => 'string',
        'item_affiliate_web_url' => 'string',
        'age_group' => 'string',
        'color' => 'string',
        'pattern' => 'string',
        'size' => 'string',
        'gender' => 'string',
        'material' => 'string',
        'total_units' => 'string',
        'eco_participation_fee_value' => 'string',
        'eco_participation_fee_currency' => 'string',
        'take_back_policy_label' => 'string',
        'take_back_policy_description' => 'string',
    ];

    /**
     * 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 = [
        'item_id' => null,
        'title' => null,
        'image_url' => null,
        'category' => null,
        'category_id' => null,
        'buying_options' => null,
        'seller_username' => null,
        'seller_feedback_percentage' => null,
        'seller_feedback_score' => null,
        'gtin' => null,
        'brand' => null,
        'mpn' => null,
        'epid' => null,
        'condition_id' => null,
        'condition' => null,
        'price_value' => null,
        'price_currency' => null,
        'primary_item_group_id' => null,
        'primary_item_group_type' => null,
        'item_end_date' => null,
        'seller_item_revision' => null,
        'item_location_country' => null,
        'localized_aspects' => null,
        'seller_trust_level' => null,
        'availability' => null,
        'image_altering_prohibited' => null,
        'estimated_available_quantity' => 'int32',
        'availability_threshold_type' => null,
        'availability_threshold' => 'int32',
        'returns_accepted' => null,
        'return_period_value' => 'int32',
        'return_period_unit' => null,
        'refund_method' => null,
        'return_method' => null,
        'return_shipping_cost_payer' => null,
        'accepted_payment_methods' => null,
        'delivery_options' => null,
        'ship_to_included_regions' => null,
        'ship_to_excluded_regions' => null,
        'inferred_epid' => null,
        'inferred_gtin' => null,
        'inferred_brand' => null,
        'inferred_mpn' => null,
        'inferred_localized_aspects' => null,
        'additional_image_urls' => null,
        'original_price_value' => null,
        'original_price_currency' => null,
        'discount_amount' => null,
        'discount_percentage' => null,
        'energy_efficiency_class' => null,
        'qualified_programs' => null,
        'lot_size' => 'int32',
        'length_unit_of_measure' => null,
        'package_width' => null,
        'package_height' => null,
        'package_length' => null,
        'weight_unit_of_measure' => null,
        'package_weight' => null,
        'shipping_carrier_code' => null,
        'shipping_service_code' => null,
        'shipping_type' => null,
        'shipping_cost' => null,
        'shipping_cost_type' => null,
        'additional_shipping_cost_per_unit' => null,
        'quantity_used_for_estimate' => 'int32',
        'unit_price' => null,
        'unit_pricing_measure' => null,
        'legacy_item_id' => null,
        'alerts' => null,
        'seller_account_type' => null,
        'tyre_label_image_url' => null,
        'priority_listing_payload' => null,
        'item_creation_date' => null,
        'item_web_url' => null,
        'default_image_url' => null,
        'item_affiliate_web_url' => null,
        'age_group' => null,
        'color' => null,
        'pattern' => null,
        'size' => null,
        'gender' => null,
        'material' => null,
        'total_units' => null,
        'eco_participation_fee_value' => null,
        'eco_participation_fee_currency' => null,
        'take_back_policy_label' => null,
        'take_back_policy_description' => null,
    ];

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

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

    /**
     * Array of attributes where the key is the local name,
     * and the value is the original name.
     *
     * @var string[]
     */
    protected static $attributeMap = [
        'item_id' => 'itemId',
        'title' => 'title',
        'image_url' => 'imageUrl',
        'category' => 'category',
        'category_id' => 'categoryId',
        'buying_options' => 'buyingOptions',
        'seller_username' => 'sellerUsername',
        'seller_feedback_percentage' => 'sellerFeedbackPercentage',
        'seller_feedback_score' => 'sellerFeedbackScore',
        'gtin' => 'gtin',
        'brand' => 'brand',
        'mpn' => 'mpn',
        'epid' => 'epid',
        'condition_id' => 'conditionId',
        'condition' => 'condition',
        'price_value' => 'priceValue',
        'price_currency' => 'priceCurrency',
        'primary_item_group_id' => 'primaryItemGroupId',
        'primary_item_group_type' => 'primaryItemGroupType',
        'item_end_date' => 'itemEndDate',
        'seller_item_revision' => 'sellerItemRevision',
        'item_location_country' => 'itemLocationCountry',
        'localized_aspects' => 'localizedAspects',
        'seller_trust_level' => 'sellerTrustLevel',
        'availability' => 'availability',
        'image_altering_prohibited' => 'imageAlteringProhibited',
        'estimated_available_quantity' => 'estimatedAvailableQuantity',
        'availability_threshold_type' => 'availabilityThresholdType',
        'availability_threshold' => 'availabilityThreshold',
        'returns_accepted' => 'returnsAccepted',
        'return_period_value' => 'returnPeriodValue',
        'return_period_unit' => 'returnPeriodUnit',
        'refund_method' => 'refundMethod',
        'return_method' => 'returnMethod',
        'return_shipping_cost_payer' => 'returnShippingCostPayer',
        'accepted_payment_methods' => 'acceptedPaymentMethods',
        'delivery_options' => 'deliveryOptions',
        'ship_to_included_regions' => 'shipToIncludedRegions',
        'ship_to_excluded_regions' => 'shipToExcludedRegions',
        'inferred_epid' => 'inferredEpid',
        'inferred_gtin' => 'inferredGtin',
        'inferred_brand' => 'inferredBrand',
        'inferred_mpn' => 'inferredMpn',
        'inferred_localized_aspects' => 'inferredLocalizedAspects',
        'additional_image_urls' => 'additionalImageUrls',
        'original_price_value' => 'originalPriceValue',
        'original_price_currency' => 'originalPriceCurrency',
        'discount_amount' => 'discountAmount',
        'discount_percentage' => 'discountPercentage',
        'energy_efficiency_class' => 'energyEfficiencyClass',
        'qualified_programs' => 'qualifiedPrograms',
        'lot_size' => 'lotSize',
        'length_unit_of_measure' => 'lengthUnitOfMeasure',
        'package_width' => 'packageWidth',
        'package_height' => 'packageHeight',
        'package_length' => 'packageLength',
        'weight_unit_of_measure' => 'weightUnitOfMeasure',
        'package_weight' => 'packageWeight',
        'shipping_carrier_code' => 'shippingCarrierCode',
        'shipping_service_code' => 'shippingServiceCode',
        'shipping_type' => 'shippingType',
        'shipping_cost' => 'shippingCost',
        'shipping_cost_type' => 'shippingCostType',
        'additional_shipping_cost_per_unit' => 'additionalShippingCostPerUnit',
        'quantity_used_for_estimate' => 'quantityUsedForEstimate',
        'unit_price' => 'unitPrice',
        'unit_pricing_measure' => 'unitPricingMeasure',
        'legacy_item_id' => 'legacyItemId',
        'alerts' => 'alerts',
        'seller_account_type' => 'sellerAccountType',
        'tyre_label_image_url' => 'tyreLabelImageUrl',
        'priority_listing_payload' => 'priorityListingPayload',
        'item_creation_date' => 'itemCreationDate',
        'item_web_url' => 'itemWebUrl',
        'default_image_url' => 'defaultImageUrl',
        'item_affiliate_web_url' => 'itemAffiliateWebUrl',
        'age_group' => 'ageGroup',
        'color' => 'color',
        'pattern' => 'pattern',
        'size' => 'size',
        'gender' => 'gender',
        'material' => 'material',
        'total_units' => 'totalUnits',
        'eco_participation_fee_value' => 'ecoParticipationFeeValue',
        'eco_participation_fee_currency' => 'ecoParticipationFeeCurrency',
        'take_back_policy_label' => 'takeBackPolicyLabel',
        'take_back_policy_description' => 'takeBackPolicyDescription',
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses).
     *
     * @var string[]
     */
    protected static $setters = [
        'item_id' => 'setItemId',
        'title' => 'setTitle',
        'image_url' => 'setImageUrl',
        'category' => 'setCategory',
        'category_id' => 'setCategoryId',
        'buying_options' => 'setBuyingOptions',
        'seller_username' => 'setSellerUsername',
        'seller_feedback_percentage' => 'setSellerFeedbackPercentage',
        'seller_feedback_score' => 'setSellerFeedbackScore',
        'gtin' => 'setGtin',
        'brand' => 'setBrand',
        'mpn' => 'setMpn',
        'epid' => 'setEpid',
        'condition_id' => 'setConditionId',
        'condition' => 'setCondition',
        'price_value' => 'setPriceValue',
        'price_currency' => 'setPriceCurrency',
        'primary_item_group_id' => 'setPrimaryItemGroupId',
        'primary_item_group_type' => 'setPrimaryItemGroupType',
        'item_end_date' => 'setItemEndDate',
        'seller_item_revision' => 'setSellerItemRevision',
        'item_location_country' => 'setItemLocationCountry',
        'localized_aspects' => 'setLocalizedAspects',
        'seller_trust_level' => 'setSellerTrustLevel',
        'availability' => 'setAvailability',
        'image_altering_prohibited' => 'setImageAlteringProhibited',
        'estimated_available_quantity' => 'setEstimatedAvailableQuantity',
        'availability_threshold_type' => 'setAvailabilityThresholdType',
        'availability_threshold' => 'setAvailabilityThreshold',
        'returns_accepted' => 'setReturnsAccepted',
        'return_period_value' => 'setReturnPeriodValue',
        'return_period_unit' => 'setReturnPeriodUnit',
        'refund_method' => 'setRefundMethod',
        'return_method' => 'setReturnMethod',
        'return_shipping_cost_payer' => 'setReturnShippingCostPayer',
        'accepted_payment_methods' => 'setAcceptedPaymentMethods',
        'delivery_options' => 'setDeliveryOptions',
        'ship_to_included_regions' => 'setShipToIncludedRegions',
        'ship_to_excluded_regions' => 'setShipToExcludedRegions',
        'inferred_epid' => 'setInferredEpid',
        'inferred_gtin' => 'setInferredGtin',
        'inferred_brand' => 'setInferredBrand',
        'inferred_mpn' => 'setInferredMpn',
        'inferred_localized_aspects' => 'setInferredLocalizedAspects',
        'additional_image_urls' => 'setAdditionalImageUrls',
        'original_price_value' => 'setOriginalPriceValue',
        'original_price_currency' => 'setOriginalPriceCurrency',
        'discount_amount' => 'setDiscountAmount',
        'discount_percentage' => 'setDiscountPercentage',
        'energy_efficiency_class' => 'setEnergyEfficiencyClass',
        'qualified_programs' => 'setQualifiedPrograms',
        'lot_size' => 'setLotSize',
        'length_unit_of_measure' => 'setLengthUnitOfMeasure',
        'package_width' => 'setPackageWidth',
        'package_height' => 'setPackageHeight',
        'package_length' => 'setPackageLength',
        'weight_unit_of_measure' => 'setWeightUnitOfMeasure',
        'package_weight' => 'setPackageWeight',
        'shipping_carrier_code' => 'setShippingCarrierCode',
        'shipping_service_code' => 'setShippingServiceCode',
        'shipping_type' => 'setShippingType',
        'shipping_cost' => 'setShippingCost',
        'shipping_cost_type' => 'setShippingCostType',
        'additional_shipping_cost_per_unit' => 'setAdditionalShippingCostPerUnit',
        'quantity_used_for_estimate' => 'setQuantityUsedForEstimate',
        'unit_price' => 'setUnitPrice',
        'unit_pricing_measure' => 'setUnitPricingMeasure',
        'legacy_item_id' => 'setLegacyItemId',
        'alerts' => 'setAlerts',
        'seller_account_type' => 'setSellerAccountType',
        'tyre_label_image_url' => 'setTyreLabelImageUrl',
        'priority_listing_payload' => 'setPriorityListingPayload',
        'item_creation_date' => 'setItemCreationDate',
        'item_web_url' => 'setItemWebUrl',
        'default_image_url' => 'setDefaultImageUrl',
        'item_affiliate_web_url' => 'setItemAffiliateWebUrl',
        'age_group' => 'setAgeGroup',
        'color' => 'setColor',
        'pattern' => 'setPattern',
        'size' => 'setSize',
        'gender' => 'setGender',
        'material' => 'setMaterial',
        'total_units' => 'setTotalUnits',
        'eco_participation_fee_value' => 'setEcoParticipationFeeValue',
        'eco_participation_fee_currency' => 'setEcoParticipationFeeCurrency',
        'take_back_policy_label' => 'setTakeBackPolicyLabel',
        'take_back_policy_description' => 'setTakeBackPolicyDescription',
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests).
     *
     * @var string[]
     */
    protected static $getters = [
        'item_id' => 'getItemId',
        'title' => 'getTitle',
        'image_url' => 'getImageUrl',
        'category' => 'getCategory',
        'category_id' => 'getCategoryId',
        'buying_options' => 'getBuyingOptions',
        'seller_username' => 'getSellerUsername',
        'seller_feedback_percentage' => 'getSellerFeedbackPercentage',
        'seller_feedback_score' => 'getSellerFeedbackScore',
        'gtin' => 'getGtin',
        'brand' => 'getBrand',
        'mpn' => 'getMpn',
        'epid' => 'getEpid',
        'condition_id' => 'getConditionId',
        'condition' => 'getCondition',
        'price_value' => 'getPriceValue',
        'price_currency' => 'getPriceCurrency',
        'primary_item_group_id' => 'getPrimaryItemGroupId',
        'primary_item_group_type' => 'getPrimaryItemGroupType',
        'item_end_date' => 'getItemEndDate',
        'seller_item_revision' => 'getSellerItemRevision',
        'item_location_country' => 'getItemLocationCountry',
        'localized_aspects' => 'getLocalizedAspects',
        'seller_trust_level' => 'getSellerTrustLevel',
        'availability' => 'getAvailability',
        'image_altering_prohibited' => 'getImageAlteringProhibited',
        'estimated_available_quantity' => 'getEstimatedAvailableQuantity',
        'availability_threshold_type' => 'getAvailabilityThresholdType',
        'availability_threshold' => 'getAvailabilityThreshold',
        'returns_accepted' => 'getReturnsAccepted',
        'return_period_value' => 'getReturnPeriodValue',
        'return_period_unit' => 'getReturnPeriodUnit',
        'refund_method' => 'getRefundMethod',
        'return_method' => 'getReturnMethod',
        'return_shipping_cost_payer' => 'getReturnShippingCostPayer',
        'accepted_payment_methods' => 'getAcceptedPaymentMethods',
        'delivery_options' => 'getDeliveryOptions',
        'ship_to_included_regions' => 'getShipToIncludedRegions',
        'ship_to_excluded_regions' => 'getShipToExcludedRegions',
        'inferred_epid' => 'getInferredEpid',
        'inferred_gtin' => 'getInferredGtin',
        'inferred_brand' => 'getInferredBrand',
        'inferred_mpn' => 'getInferredMpn',
        'inferred_localized_aspects' => 'getInferredLocalizedAspects',
        'additional_image_urls' => 'getAdditionalImageUrls',
        'original_price_value' => 'getOriginalPriceValue',
        'original_price_currency' => 'getOriginalPriceCurrency',
        'discount_amount' => 'getDiscountAmount',
        'discount_percentage' => 'getDiscountPercentage',
        'energy_efficiency_class' => 'getEnergyEfficiencyClass',
        'qualified_programs' => 'getQualifiedPrograms',
        'lot_size' => 'getLotSize',
        'length_unit_of_measure' => 'getLengthUnitOfMeasure',
        'package_width' => 'getPackageWidth',
        'package_height' => 'getPackageHeight',
        'package_length' => 'getPackageLength',
        'weight_unit_of_measure' => 'getWeightUnitOfMeasure',
        'package_weight' => 'getPackageWeight',
        'shipping_carrier_code' => 'getShippingCarrierCode',
        'shipping_service_code' => 'getShippingServiceCode',
        'shipping_type' => 'getShippingType',
        'shipping_cost' => 'getShippingCost',
        'shipping_cost_type' => 'getShippingCostType',
        'additional_shipping_cost_per_unit' => 'getAdditionalShippingCostPerUnit',
        'quantity_used_for_estimate' => 'getQuantityUsedForEstimate',
        'unit_price' => 'getUnitPrice',
        'unit_pricing_measure' => 'getUnitPricingMeasure',
        'legacy_item_id' => 'getLegacyItemId',
        'alerts' => 'getAlerts',
        'seller_account_type' => 'getSellerAccountType',
        'tyre_label_image_url' => 'getTyreLabelImageUrl',
        'priority_listing_payload' => 'getPriorityListingPayload',
        'item_creation_date' => 'getItemCreationDate',
        'item_web_url' => 'getItemWebUrl',
        'default_image_url' => 'getDefaultImageUrl',
        'item_affiliate_web_url' => 'getItemAffiliateWebUrl',
        'age_group' => 'getAgeGroup',
        'color' => 'getColor',
        'pattern' => 'getPattern',
        'size' => 'getSize',
        'gender' => 'getGender',
        'material' => 'getMaterial',
        'total_units' => 'getTotalUnits',
        'eco_participation_fee_value' => 'getEcoParticipationFeeValue',
        'eco_participation_fee_currency' => 'getEcoParticipationFeeCurrency',
        'take_back_policy_label' => 'getTakeBackPolicyLabel',
        'take_back_policy_description' => 'getTakeBackPolicyDescription',
    ];

    /**
     * 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['item_id'] = $data['item_id'] ?? null;
        $this->container['title'] = $data['title'] ?? null;
        $this->container['image_url'] = $data['image_url'] ?? null;
        $this->container['category'] = $data['category'] ?? null;
        $this->container['category_id'] = $data['category_id'] ?? null;
        $this->container['buying_options'] = $data['buying_options'] ?? null;
        $this->container['seller_username'] = $data['seller_username'] ?? null;
        $this->container['seller_feedback_percentage'] = $data['seller_feedback_percentage'] ?? null;
        $this->container['seller_feedback_score'] = $data['seller_feedback_score'] ?? null;
        $this->container['gtin'] = $data['gtin'] ?? null;
        $this->container['brand'] = $data['brand'] ?? null;
        $this->container['mpn'] = $data['mpn'] ?? null;
        $this->container['epid'] = $data['epid'] ?? null;
        $this->container['condition_id'] = $data['condition_id'] ?? null;
        $this->container['condition'] = $data['condition'] ?? null;
        $this->container['price_value'] = $data['price_value'] ?? null;
        $this->container['price_currency'] = $data['price_currency'] ?? null;
        $this->container['primary_item_group_id'] = $data['primary_item_group_id'] ?? null;
        $this->container['primary_item_group_type'] = $data['primary_item_group_type'] ?? null;
        $this->container['item_end_date'] = $data['item_end_date'] ?? null;
        $this->container['seller_item_revision'] = $data['seller_item_revision'] ?? null;
        $this->container['item_location_country'] = $data['item_location_country'] ?? null;
        $this->container['localized_aspects'] = $data['localized_aspects'] ?? null;
        $this->container['seller_trust_level'] = $data['seller_trust_level'] ?? null;
        $this->container['availability'] = $data['availability'] ?? null;
        $this->container['image_altering_prohibited'] = $data['image_altering_prohibited'] ?? null;
        $this->container['estimated_available_quantity'] = $data['estimated_available_quantity'] ?? null;
        $this->container['availability_threshold_type'] = $data['availability_threshold_type'] ?? null;
        $this->container['availability_threshold'] = $data['availability_threshold'] ?? null;
        $this->container['returns_accepted'] = $data['returns_accepted'] ?? null;
        $this->container['return_period_value'] = $data['return_period_value'] ?? null;
        $this->container['return_period_unit'] = $data['return_period_unit'] ?? null;
        $this->container['refund_method'] = $data['refund_method'] ?? null;
        $this->container['return_method'] = $data['return_method'] ?? null;
        $this->container['return_shipping_cost_payer'] = $data['return_shipping_cost_payer'] ?? null;
        $this->container['accepted_payment_methods'] = $data['accepted_payment_methods'] ?? null;
        $this->container['delivery_options'] = $data['delivery_options'] ?? null;
        $this->container['ship_to_included_regions'] = $data['ship_to_included_regions'] ?? null;
        $this->container['ship_to_excluded_regions'] = $data['ship_to_excluded_regions'] ?? null;
        $this->container['inferred_epid'] = $data['inferred_epid'] ?? null;
        $this->container['inferred_gtin'] = $data['inferred_gtin'] ?? null;
        $this->container['inferred_brand'] = $data['inferred_brand'] ?? null;
        $this->container['inferred_mpn'] = $data['inferred_mpn'] ?? null;
        $this->container['inferred_localized_aspects'] = $data['inferred_localized_aspects'] ?? null;
        $this->container['additional_image_urls'] = $data['additional_image_urls'] ?? null;
        $this->container['original_price_value'] = $data['original_price_value'] ?? null;
        $this->container['original_price_currency'] = $data['original_price_currency'] ?? null;
        $this->container['discount_amount'] = $data['discount_amount'] ?? null;
        $this->container['discount_percentage'] = $data['discount_percentage'] ?? null;
        $this->container['energy_efficiency_class'] = $data['energy_efficiency_class'] ?? null;
        $this->container['qualified_programs'] = $data['qualified_programs'] ?? null;
        $this->container['lot_size'] = $data['lot_size'] ?? null;
        $this->container['length_unit_of_measure'] = $data['length_unit_of_measure'] ?? null;
        $this->container['package_width'] = $data['package_width'] ?? null;
        $this->container['package_height'] = $data['package_height'] ?? null;
        $this->container['package_length'] = $data['package_length'] ?? null;
        $this->container['weight_unit_of_measure'] = $data['weight_unit_of_measure'] ?? null;
        $this->container['package_weight'] = $data['package_weight'] ?? null;
        $this->container['shipping_carrier_code'] = $data['shipping_carrier_code'] ?? null;
        $this->container['shipping_service_code'] = $data['shipping_service_code'] ?? null;
        $this->container['shipping_type'] = $data['shipping_type'] ?? null;
        $this->container['shipping_cost'] = $data['shipping_cost'] ?? null;
        $this->container['shipping_cost_type'] = $data['shipping_cost_type'] ?? null;
        $this->container['additional_shipping_cost_per_unit'] = $data['additional_shipping_cost_per_unit'] ?? null;
        $this->container['quantity_used_for_estimate'] = $data['quantity_used_for_estimate'] ?? null;
        $this->container['unit_price'] = $data['unit_price'] ?? null;
        $this->container['unit_pricing_measure'] = $data['unit_pricing_measure'] ?? null;
        $this->container['legacy_item_id'] = $data['legacy_item_id'] ?? null;
        $this->container['alerts'] = $data['alerts'] ?? null;
        $this->container['seller_account_type'] = $data['seller_account_type'] ?? null;
        $this->container['tyre_label_image_url'] = $data['tyre_label_image_url'] ?? null;
        $this->container['priority_listing_payload'] = $data['priority_listing_payload'] ?? null;
        $this->container['item_creation_date'] = $data['item_creation_date'] ?? null;
        $this->container['item_web_url'] = $data['item_web_url'] ?? null;
        $this->container['default_image_url'] = $data['default_image_url'] ?? null;
        $this->container['item_affiliate_web_url'] = $data['item_affiliate_web_url'] ?? null;
        $this->container['age_group'] = $data['age_group'] ?? null;
        $this->container['color'] = $data['color'] ?? null;
        $this->container['pattern'] = $data['pattern'] ?? null;
        $this->container['size'] = $data['size'] ?? null;
        $this->container['gender'] = $data['gender'] ?? null;
        $this->container['material'] = $data['material'] ?? null;
        $this->container['total_units'] = $data['total_units'] ?? null;
        $this->container['eco_participation_fee_value'] = $data['eco_participation_fee_value'] ?? null;
        $this->container['eco_participation_fee_currency'] = $data['eco_participation_fee_currency'] ?? null;
        $this->container['take_back_policy_label'] = $data['take_back_policy_label'] ?? null;
        $this->container['take_back_policy_description'] = $data['take_back_policy_description'] ?? 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 item_id.
     *
     * @return string|null
     */
    public function getItemId()
    {
        return $this->container['item_id'];
    }

    /**
     * Sets item_id.
     *
     * @param string|null $item_id The unique identifier of an item in eBay RESTful format. An example would be <code>v1|1**********2|4**********2</code>.
     *
     * @return self
     */
    public function setItemId($item_id)
    {
        $this->container['item_id'] = $item_id;

        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. This text is an escaped string when special characters are present, using the following rules:</p>   <ul>      <li>Double quotes (&#34;) and backslashes (&#92;) in the Title are escaped with a backslash (&#92;) character</li>      <li>If there are any tabs (&#92;t), double quotes (&#34;), or backslashes (&#92;) in the Title, the entire Title will be wrapped in double quotes.</li>   </ul>   <p><b>For example</b></p>   <p>Before:</p>   <p><code>Misty Rainforest Modern Masters 2017 MTG Magic Fetch Land Free Ship W<b>&#92;</b>Tracking</code>   </p>   <p><code>Marvel Legends HULK 8<b>&#34;</b> Figure Avengers Age of Ultron Studios 6<b>&#34;</b> Series</code>   </p>   <p>After:</p>   <p><code>&#34;Misty Rainforest Modern Masters 2017 MTG Magic Fetch Land Free Ship W<b>&#92;&#92;</b> Tracking&#34;</code>   </p>   <p><code>&#34;Marvel Legends HULK 8<b>&#92;&#34;</b> Figure Avengers Age of Ultron Studios 6<b>&#92;&#34;</b> Series<b>&#34;</b> </code>   </p>
     *
     * @return self
     */
    public function setTitle($title)
    {
        $this->container['title'] = $title;

        return $this;
    }

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

    /**
     * Sets image_url.
     *
     * @param string|null $image_url The URL to the primary image of the item.  This is the URL of the largest image available based on what the seller submitted.
     *
     * @return self
     */
    public function setImageUrl($image_url)
    {
        $this->container['image_url'] = $image_url;

        return $this;
    }

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

    /**
     * Sets category.
     *
     * @param string|null $category The label of the category. For example: <b> Toys & Hobbies|Action Figures|Comic Book Heroes </b>
     *
     * @return self
     */
    public function setCategory($category)
    {
        $this->container['category'] = $category;

        return $this;
    }

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

    /**
     * Sets category_id.
     *
     * @param string|null $category_id The ID of the category of the item. For example: The ID for Toys & Hobbies|Action Figures|Comic Book Heroes is <code>158671</code>.
     *
     * @return self
     */
    public function setCategoryId($category_id)
    {
        $this->container['category_id'] = $category_id;

        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 the purchase options available for the item. Currently the only supported option is <code>FIXED_PRICE</code>.
     *
     * @return self
     */
    public function setBuyingOptions($buying_options)
    {
        $this->container['buying_options'] = $buying_options;

        return $this;
    }

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

    /**
     * Sets seller_username.
     *
     * @param string|null $seller_username the seller's eBay user name
     *
     * @return self
     */
    public function setSellerUsername($seller_username)
    {
        $this->container['seller_username'] = $seller_username;

        return $this;
    }

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

    /**
     * Sets seller_feedback_percentage.
     *
     * @param string|null $seller_feedback_percentage the percentage of the seller's total positive feedback
     *
     * @return self
     */
    public function setSellerFeedbackPercentage($seller_feedback_percentage)
    {
        $this->container['seller_feedback_percentage'] = $seller_feedback_percentage;

        return $this;
    }

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

    /**
     * Sets seller_feedback_score.
     *
     * @param string|null $seller_feedback_score The feedback score of the seller. This value is based on the ratings from eBay members that bought items from this seller.
     *
     * @return self
     */
    public function setSellerFeedbackScore($seller_feedback_score)
    {
        $this->container['seller_feedback_score'] = $seller_feedback_score;

        return $this;
    }

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

    /**
     * Sets gtin.
     *
     * @param string|null $gtin The unique Global Trade Item Number of the item as defined by <a href=\"https://www.gtin.info \" target=\"_blank\">https://www.gtin.info</a>. This can be a UPC (Universal Product Code), EAN (European Article Number), or an ISBN (International Standard Book Number) value.
     *
     * @return self
     */
    public function setGtin($gtin)
    {
        $this->container['gtin'] = $gtin;

        return $this;
    }

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

    /**
     * Sets brand.
     *
     * @param string|null $brand the name brand of the item, such as Nike, Apple, etc
     *
     * @return self
     */
    public function setBrand($brand)
    {
        $this->container['brand'] = $brand;

        return $this;
    }

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

    /**
     * Sets mpn.
     *
     * @param string|null $mpn the manufacturer part number, which is a number that is used in combination with <b> brand</b> to identify a product
     *
     * @return self
     */
    public function setMpn($mpn)
    {
        $this->container['mpn'] = $mpn;

        return $this;
    }

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

    /**
     * Sets epid.
     *
     * @param string|null $epid The eBay product identifier of a product from the eBay product catalog. You can use this value in the Browse API <a href=\"/api-docs/buy/browse/resources/item_summary/methods/search\">search</a> method to retrieve items for this product and in the <a href=\"/api-docs/buy/marketing/resources/methods\">Marketing API</a> methods to retrieve 'also viewed' and 'also bought' products to encourage up-selling and cross-selling.
     *
     * @return self
     */
    public function setEpid($epid)
    {
        $this->container['epid'] = $epid;

        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 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. 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>.
     *
     * @return self
     */
    public function setCondition($condition)
    {
        $this->container['condition'] = $condition;

        return $this;
    }

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

    /**
     * Sets price_value.
     *
     * @param string|null $price_value The price of the item, which can be a discounted price. If it is discounted, information about the discount is returned in the <b>originalPriceValue</b>, <b>originalPriceCurrency</b>, <b>discountAmount</b>, and <b>discountPercentage</b> columns.<br /><br /><span class=\"tablenote\"><b> Note: </b>The price includes the value-added tax (VAT) for applicable jurisdictions when requested from supported marketplaces. In this case, users must pass the <a href=\"/api-docs/static/rest-request-components.html#HTTP\"><code>X-EBAY-C-MARKETPLACE-ID</code></a> request header specifying the supported marketplace (such as <code>EBAY_GB</code>) to see the VAT-inclusive pricing. For more information on VAT, refer to <a href=\"https://www.ebay.co.uk/help/listings/default/vat-obligations-eu?id=4650&st=12&pos=1&query=Your%20VAT%20obligations%20in%20the%20EU&intent=VAT\">VAT Obligations in the EU</a>.</span>
     *
     * @return self
     */
    public function setPriceValue($price_value)
    {
        $this->container['price_value'] = $price_value;

        return $this;
    }

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

    /**
     * Sets price_currency.
     *
     * @param string|null $price_currency The currency used for the price of the item. Generally, this is the currency used by the country of the eBay site offering the item. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/feed/types/bas:CurrencyCodeEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setPriceCurrency($price_currency)
    {
        $this->container['price_currency'] = $price_currency;

        return $this;
    }

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

    /**
     * Sets primary_item_group_id.
     *
     * @param string|null $primary_item_group_id The unique identifier for the item group that contains this item. An item group is an item that has various aspect differences, such as color, size, storage capacity, etc.
     *
     * @return self
     */
    public function setPrimaryItemGroupId($primary_item_group_id)
    {
        $this->container['primary_item_group_id'] = $primary_item_group_id;

        return $this;
    }

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

    /**
     * Sets primary_item_group_type.
     *
     * @param string|null $primary_item_group_type The item group type. Supported value: <code>SELLER_DEFINED_VARIATIONS</code>, indicates that the item group was created by the seller. <br /><br />Code so that your app gracefully handles any future changes to this list.
     *
     * @return self
     */
    public function setPrimaryItemGroupType($primary_item_group_type)
    {
        $this->container['primary_item_group_type'] = $primary_item_group_type;

        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 A timestamp indicating when the item's sale period will end based on its start date and duration. For Good 'Til Cancelled items, no value is returned in this column. <br /><br /><b> Format: </b> UTC (yyyy-MM-ddThh:mm:ss.sssZ).
     *
     * @return self
     */
    public function setItemEndDate($item_end_date)
    {
        $this->container['item_end_date'] = $item_end_date;

        return $this;
    }

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

    /**
     * Sets seller_item_revision.
     *
     * @param string|null $seller_item_revision An identifier generated/incremented when a seller revises the item. There are two types of item revisions: <ul><li>Seller changes, such as changing the title</li>  <li>eBay system changes, such as changing the quantity when an item is purchased</li></ul> This ID is changed <i> only</i> when the seller makes a change to the item.
     *
     * @return self
     */
    public function setSellerItemRevision($seller_item_revision)
    {
        $this->container['seller_item_revision'] = $seller_item_revision;

        return $this;
    }

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

    /**
     * Sets item_location_country.
     *
     * @param string|null $item_location_country the country where the item is physically located
     *
     * @return self
     */
    public function setItemLocationCountry($item_location_country)
    {
        $this->container['item_location_country'] = $item_location_country;

        return $this;
    }

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

    /**
     * Sets localized_aspects.
     *
     * @param string|null $localized_aspects A semicolon separated list of the name/value pairs for the aspects of the item, which are BASE64 encoded. The aspect label is separated by a pipe (|), the aspect name and value are separated by a colon (:) and the name/value pairs are separated by a semicolon (;). <p><b> Example without Label</b></p>    <p>&nbsp;&nbsp;<b> Encoded Format:</b> <br />&nbsp;&nbsp;&nbsp;<code><em>encodedName</em>:<em>encodedValue</em>;<em>encodedName</em>:<em>encodedValue</em>;<em>encodedName</em>:<em>encodedValue</em></code> </p>       <p>&nbsp;&nbsp;<b> Encoded Example</b> (The delimiters are <b style=\"font-family: 'Arial Black';\">emphasized</b>):    <br />&nbsp;&nbsp;&nbsp;<code>U2l6ZQ==<b style=\"font-family: 'Arial Black';\">:</b>WEw=<b style=\"font-family: 'Arial Black';\">;</b>Q29sb3I=<b style=\"font-family: 'Arial Black';\">:</b>UmVk<b style=\"font-family: 'Arial Black';\">;</b>U2xlZXZlcw==<b style=\"font-family: 'Arial Black';\">:</b>TG9uZw==</code> </p>    <p>&nbsp;&nbsp;<b> Decoded: </b> <br />&nbsp;&nbsp;&nbsp;Size:XL;Color:Red;Sleeves:Long </p>        <p><br /><b> Example with Label</b></p>    <p>&nbsp;&nbsp;<b> Encoded Format:</b>   <br />&nbsp;&nbsp;&nbsp;<code><em>encodedLabel</em>|<em>encodedName</em>:<em>encodedValue</em>;<em>encodedName</em>:<em>encodedValue</em>;<em>encodedLabel</em>|</code></p>       <p>&nbsp;&nbsp;<b> Encoded Example</b> (The delimiters are <b style=\"font-family: 'Arial Black';\">emphasized</b>):  <br />&nbsp;&nbsp;&nbsp;<code>UHJvZHVjdCBJZGVudGlmaWVycw==<b style=\"font-family: 'Arial Black';\">|</b>R1RJTg==<b style=\"font-family: 'Arial Black';\">:</b>MDE5MDE5ODA2NjYzMw==<b style=\"font-family: 'Arial Black';\">;</b>QlJBTkQ=<b style=\"font-family: 'Arial Black';\">:</b>QXBwbGU=<b style=\"font-family: 'Arial Black';\">;</b>UHJvZHVjdCBLZXkgRmVhdHVyZXM=<b style=\"font-family: 'Arial Black';\">|</b>TW9kZWw=<b style=\"font-family: 'Arial Black';\">:</b>aVBob25lIDc=</code> </p>        <p>&nbsp;&nbsp;<b> Decoded: </b> <br />&nbsp;&nbsp;&nbsp;Product Identifiers|GTIN:0190198066633;BRAND:Apple;Product Key Features|Model:iPhone 7</p>        <p><span class=\"tablenote\"><b>Note: </b> The separators (<code> |  :  ; </code>) are <i> not</i> encoded. You must decode each label, name, and value separately. You cannot decode the entire string.</b></p> <p>For more information, see <a href=\"/api-docs/buy/static/api-feed.html#encoded-aspects\">Encoded Aspects</a> in the Buying Integration Guide.</p>
     *
     * @return self
     */
    public function setLocalizedAspects($localized_aspects)
    {
        $this->container['localized_aspects'] = $localized_aspects;

        return $this;
    }

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

    /**
     * Sets seller_trust_level.
     *
     * @param string|null $seller_trust_level An enumeration value representing the eBay status of the seller. <br /><br /><b>Valid Values:</b> <code>TOP_RATED</code>, <code>ABOVE_STANDARD</code>, or an empty value. <br /><br />An empty value indicates a return of anything other than <code>TOP_RATED</code> or <code>ABOVE_STANDARD</code>.<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/feed/types/api:SellerTrustLevelEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setSellerTrustLevel($seller_trust_level)
    {
        $this->container['seller_trust_level'] = $seller_trust_level;

        return $this;
    }

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

    /**
     * Sets availability.
     *
     * @param string|null $availability An enumeration value representing the item's availability (possibility of being purchased). <br /><br /><b>Values: </b>    <ul>  <li>AVAILABLE</li>    <li>TEMPORARILY_UNAVAILABLE</li>     <li>UNAVAILABLE</li> </ul>  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/feed/types/api:AvailabilityEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setAvailability($availability)
    {
        $this->container['availability'] = $availability;

        return $this;
    }

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

    /**
     * Sets image_altering_prohibited.
     *
     * @param bool|null $image_altering_prohibited A boolean that indicates whether the images can be altered. If the value is <code>true</code>, you cannot modify the image. <p><span class=\"tablenote\"><b>Note: </b> Due to image licensing agreements and other legal concerns, modification (including resizing) of some images is strictly prohibited. These images are for display as-is only. </span></p>
     *
     * @return self
     */
    public function setImageAlteringProhibited($image_altering_prohibited)
    {
        $this->container['image_altering_prohibited'] = $image_altering_prohibited;

        return $this;
    }

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

    /**
     * Sets estimated_available_quantity.
     *
     * @param int|null $estimated_available_quantity The estimated number of this item that are available for purchase. Because the quantity of an item can change several times within a second, it is impossible to return the exact quantity. So instead of returning quantity, the estimated availability of the item is returned.
     *
     * @return self
     */
    public function setEstimatedAvailableQuantity($estimated_available_quantity)
    {
        $this->container['estimated_available_quantity'] = $estimated_available_quantity;

        return $this;
    }

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

    /**
     * Sets availability_threshold_type.
     *
     * @param string|null $availability_threshold_type <a name=\"display-item-quantity\"></a> This column has a value only when the seller sets their <b>Display Item Quantity</b> preference to <b> Display \"More than 10 available\" in your listing (if applicable)</b>. The value of this column will be <code> MORE_THAN</code>. This indicates that the seller has more than the 'Display Item Quantity', which is 10, in stock for this item.    <br /><br /> The following are the <b>Display Item Quantity</b> preferences the seller can set. <br /><ul><li> <b> Display \"More than 10 available\" in your listing (if applicable)</b> <br />If the seller enables this preference, this column will have a value as long as there are more than 10 of this item in inventory. If the quantity is equal to 10 or drops below 10, this column will be null and the estimated quantity of the item is returned in the <b> estimatedAvailableQuantity</b> column. </li> <li> <b> Display the exact quantity in your items</b> <br />If the seller enables this preference, the <b> availabilityThresholdType</b> and <b> availabilityThreshold</b> columns will be null  and the estimated quantity of the item is returned in the <b> estimatedAvailableQuantity</b> column.<br /><br /><b>Note: </b> Because the quantity of an item can change several times within a second, it is impossible to return the exact quantity. </li></ul>   <br />Code so that your app gracefully handles any future changes to these preferences. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/feed/types/api:AvailabilityThresholdEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setAvailabilityThresholdType($availability_threshold_type)
    {
        $this->container['availability_threshold_type'] = $availability_threshold_type;

        return $this;
    }

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

    /**
     * Sets availability_threshold.
     *
     * @param int|null $availability_threshold This column has a value only when the seller sets their '<a href=\"#display-item-quantity\">display item quantity</a>' preference to <b> Display \"More than 10 available\" in your listing (if applicable)</b>. The value of this column will be \"10\", which is the threshold value. <br /><br />Code so that your app gracefully handles any future changes to this value.
     *
     * @return self
     */
    public function setAvailabilityThreshold($availability_threshold)
    {
        $this->container['availability_threshold'] = $availability_threshold;

        return $this;
    }

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

    /**
     * Sets returns_accepted.
     *
     * @param bool|null $returns_accepted indicates whether the seller accepts returns for the item
     *
     * @return self
     */
    public function setReturnsAccepted($returns_accepted)
    {
        $this->container['returns_accepted'] = $returns_accepted;

        return $this;
    }

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

    /**
     * Sets return_period_value.
     *
     * @param int|null $return_period_value The amount of days that the buyer has to return the item after the purchase date. For example, if this value is '30', the return period is 30 days.
     *
     * @return self
     */
    public function setReturnPeriodValue($return_period_value)
    {
        $this->container['return_period_value'] = $return_period_value;

        return $this;
    }

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

    /**
     * Sets return_period_unit.
     *
     * @param string|null $return_period_unit An enumeration value that indicates the period of time being used to measure the duration, such as business days, months, or years. <br /><br /><b>TimeDurationUnitEnum</b> is a common type shared by multiple eBay APIs and fields to express the time unit, but for return period duration, this value will always be <code>DAY</code>. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/feed/types/bas:TimeDurationUnitEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setReturnPeriodUnit($return_period_unit)
    {
        $this->container['return_period_unit'] = $return_period_unit;

        return $this;
    }

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

    /**
     * Sets refund_method.
     *
     * @param string|null $refund_method An enumeration value that indicates how a buyer is refunded when an item is returned. <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/feed/types/api:RefundMethodEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setRefundMethod($refund_method)
    {
        $this->container['refund_method'] = $refund_method;

        return $this;
    }

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

    /**
     * Sets return_method.
     *
     * @param string|null $return_method An enumeration value that indicates the alternative methods for a full refund when an item is returned. This column will have data if the seller offers the buyer an item replacement or exchange instead of a monetary refund. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/feed/types/api:ReturnMethodEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setReturnMethod($return_method)
    {
        $this->container['return_method'] = $return_method;

        return $this;
    }

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

    /**
     * Sets return_shipping_cost_payer.
     *
     * @param string|null $return_shipping_cost_payer The party responsible for the return shipping costs when an item is returned. <br /><br /><b>Valid Values: </b> <code>BUYER</code> or <code>SELLER</code>  <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/feed/types/api:ReturnShippingCostPayerEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setReturnShippingCostPayer($return_shipping_cost_payer)
    {
        $this->container['return_shipping_cost_payer'] = $return_shipping_cost_payer;

        return $this;
    }

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

    /**
     * Sets accepted_payment_methods.
     *
     * @param string|null $accepted_payment_methods This field is returned empty. For a list of payment methods available for a marketplace, see eBay help pages or the actual View Item page.
     *
     * @return self
     */
    public function setAcceptedPaymentMethods($accepted_payment_methods)
    {
        $this->container['accepted_payment_methods'] = $accepted_payment_methods;

        return $this;
    }

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

    /**
     * Sets delivery_options.
     *
     * @param string|null $delivery_options A comma-separated list of available delivery options. This column lets you filter out items than cannot be shipped to the buyer. <br /><br /><b>Valid Values</b>: SHIP_TO_HOME, SELLER_ARRANGED_LOCAL_PICKUP, IN_STORE_PICKUP, and PICKUP_DROP_OFF. <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/feed/types/api:DeliveryOptionsEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setDeliveryOptions($delivery_options)
    {
        $this->container['delivery_options'] = $delivery_options;

        return $this;
    }

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

    /**
     * Sets ship_to_included_regions.
     *
     * @param string|null $ship_to_included_regions A pipe (<code>|</code>) separated alphabetical list of the geographic countries and regions where the seller will ship the item. <br /><br />If a region is specified, you will need to subtract any countries and regions returned in the <b> shipToExcludedRegions</b> column to fully understand where the seller will ship. <br /><br />The COUNTRY: list is separated from the REGION: list with a semicolon (<code>;</code>).       <br /><br /><b> Format Example: </b> <br /> <code>COUNTRY:US|BM|GL|MX|PM;REGION:AFRICA|ASIA|CENTRAL_AMERICA_AND_CARIBBEAN|EUROPE|MIDDLE_EAST|OCEANIA|SOUTH_AMERICA|SOUTHEAST_ASIA;</code>  <br /><br /><b> Country Values: </b> The two-letter <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO 3166</a> standard code of the country.       <br /><br /><b> Region Values: </b> AFRICA, AMERICAS, ANTARCTIC, ARCTIC, ASIA, AUSTRALIA, CENTRAL_AMERICA_AND_CARIBBEAN, EUROPE, EURO_UNION, GREATER_CHINA, MIDDLE_EAST, NORTH_AMERICA, OCEANIA, REST_OF_ASIA, SOUTHEAST_ASIA, SOUTH_AMERICA, WORLDWIDE <br /><br />Code so that your app gracefully handles any future changes to this list.
     *
     * @return self
     */
    public function setShipToIncludedRegions($ship_to_included_regions)
    {
        $this->container['ship_to_included_regions'] = $ship_to_included_regions;

        return $this;
    }

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

    /**
     * Sets ship_to_excluded_regions.
     *
     * @param string|null $ship_to_excluded_regions A pipe (<code>|</code>) separated alphabetical list of the geographic countries and regions where the item cannot be shipped. <br /><br />These countries and regions refine (restrict) the <b> shipToIncludedRegions</b> list.  The COUNTRY: list is separated from the REGION: list with a semicolon (<code>;</code>).       <br /><br /><b> Format Example: </b> <br /> <code>COUNTRY:US|BM|GL|MX|PM;REGION:AFRICA|ASIA|CENTRAL_AMERICA_AND_CARIBBEAN|EUROPE|MIDDLE_EAST|OCEANIA|SOUTH_AMERICA|SOUTHEAST_ASIA;</code>  <br /><br /><b> Country Values: </b> The two-letter <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO 3166</a> standard code of the country.       <br /><br /><b> Region Values: </b> AFRICA, AMERICAS, ANTARCTIC, ARCTIC, ASIA, AUSTRALIA, CENTRAL_AMERICA_AND_CARIBBEAN, EUROPE, EURO_UNION, GREATER_CHINA, MIDDLE_EAST, NORTH_AMERICA, OCEANIA, REST_OF_ASIA, SOUTHEAST_ASIA, SOUTH_AMERICA, WORLDWIDE <br /><br />Code so that your app gracefully handles any future changes to this list.
     *
     * @return self
     */
    public function setShipToExcludedRegions($ship_to_excluded_regions)
    {
        $this->container['ship_to_excluded_regions'] = $ship_to_excluded_regions;

        return $this;
    }

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

    /**
     * Sets inferred_epid.
     *
     * @param string|null $inferred_epid The ePID (eBay Product ID of a product in the eBay product catalog) for the item, which has been programmatically determined by eBay using the item's title, aspects, and other data. <br /><br />If the seller actually provided an ePID at listing time for the item, the ePID value is returned in the <b>epid</b> column instead.
     *
     * @return self
     */
    public function setInferredEpid($inferred_epid)
    {
        $this->container['inferred_epid'] = $inferred_epid;

        return $this;
    }

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

    /**
     * Sets inferred_gtin.
     *
     * @param string|null $inferred_gtin The GTIN (Global Trade Item Number) of the product as defined by <a href=\"https://www.gtin.info\">https://www.gtin.info</a>, which as been programmatically determined by eBay. This can be a UPC (Universal Product Code), EAN (European Article Number), or an ISBN (International Standard Book Number) value. <br /><br />If the seller provided a GTIN for the item, the seller's value is returned in the <b> gtin</b> column.
     *
     * @return self
     */
    public function setInferredGtin($inferred_gtin)
    {
        $this->container['inferred_gtin'] = $inferred_gtin;

        return $this;
    }

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

    /**
     * Sets inferred_brand.
     *
     * @param string|null $inferred_brand The name brand for the item, such as Nike or Apple, which has been programmatically determined by eBay. To identify the product, this is always used along with <b> MPN</b>. <br /><br />If the seller provided a brand for the item, the seller's value is returned in the <b> brand</b> column.
     *
     * @return self
     */
    public function setInferredBrand($inferred_brand)
    {
        $this->container['inferred_brand'] = $inferred_brand;

        return $this;
    }

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

    /**
     * Sets inferred_mpn.
     *
     * @param string|null $inferred_mpn The MPN (Manufacturer's Part Number) for the item, which has been programmatically determined by eBay. To identify the product, this is always used along with <b> brand</b>. <br /><br />If the seller provided a MPN for the item, the seller's value is returned in the <b> mpn</b> column.
     *
     * @return self
     */
    public function setInferredMpn($inferred_mpn)
    {
        $this->container['inferred_mpn'] = $inferred_mpn;

        return $this;
    }

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

    /**
     * Sets inferred_localized_aspects.
     *
     * @param string|null $inferred_localized_aspects A semicolon separated list of the name/value pairs for the aspects of the item, which are BASE64 encoded. These aspects have been programmatically determined by eBay. If the seller provided aspects for the item, the seller's values are returned in the <b>localizedAspects</b> column.  <br /><br />The aspect label is separated by a pipe (|), the aspect name and value are separated by a colon (:) and the name/value pairs are separated by a semicolon (;). <p><b> Example without Label</b></p>    <p>&nbsp;&nbsp;<b> Encoded Format:</b> <br />&nbsp;&nbsp;&nbsp;<code><em>encodedName</em>:<em>encodedValue</em>;<em>encodedName</em>:<em>encodedValue</em>;<em>encodedName</em>:<em>encodedValue</em></code> </p>       <p>&nbsp;&nbsp;<b> Encoded Example</b> (The delimiters are <b style=\"font-family: 'Arial Black';\">emphasized</b>):    <br />&nbsp;&nbsp;&nbsp;<code>U2l6ZQ==<b style=\"font-family: 'Arial Black';\">:</b>WEw=<b style=\"font-family: 'Arial Black';\">;</b>Q29sb3I=<b style=\"font-family: 'Arial Black';\">:</b>UmVk<b style=\"font-family: 'Arial Black';\">;</b>U2xlZXZlcw==<b style=\"font-family: 'Arial Black';\">:</b>TG9uZw==</code> </p>    <p>&nbsp;&nbsp;<b> Decoded: </b> <br />&nbsp;&nbsp;&nbsp;Size:XL;Color:Red;Sleeves:Long </p>        <p><br /><b> Example with Label</b></p>    <p>&nbsp;&nbsp;<b> Encoded Format:</b>   <br />&nbsp;&nbsp;&nbsp;<code><em>encodedLabel</em>|<em>encodedName</em>:<em>encodedValue</em>;<em>encodedName</em>:<em>encodedValue</em>;<em>encodedLabel</em>|</code></p>       <p>&nbsp;&nbsp;<b> Encoded Example</b> (The delimiters are <b style=\"font-family: 'Arial Black';\">emphasized</b>):  <br />&nbsp;&nbsp;&nbsp;<code>UHJvZHVjdCBJZGVudGlmaWVycw==<b style=\"font-family: 'Arial Black';\">|</b>R1RJTg==<b style=\"font-family: 'Arial Black';\">:</b>MDE5MDE5ODA2NjYzMw==<b style=\"font-family: 'Arial Black';\">;</b>QlJBTkQ=<b style=\"font-family: 'Arial Black';\">:</b>QXBwbGU=<b style=\"font-family: 'Arial Black';\">;</b>UHJvZHVjdCBLZXkgRmVhdHVyZXM=<b style=\"font-family: 'Arial Black';\">|</b>TW9kZWw=<b style=\"font-family: 'Arial Black';\">:</b>aVBob25lIDc=</code> </p>        <p>&nbsp;&nbsp;<b> Decoded: </b> <br />&nbsp;&nbsp;&nbsp;Product Identifiers|GTIN:0190198066633;BRAND:Apple;Product Key Features|Model:iPhone 7</p>        <p><span class=\"tablenote\"><b>Note: </b> The separators (<code> |  :  ; </code>) are <i> not</i> encoded. You must decode each label, name, and value separately. You cannot decode the entire string.</b></p> <p>For more information, see <a href=\"/api-docs/buy/static/api-feed.html#encoded-aspects\">Encoded Aspects</a> in the Buying Integration Guide.</p>
     *
     * @return self
     */
    public function setInferredLocalizedAspects($inferred_localized_aspects)
    {
        $this->container['inferred_localized_aspects'] = $inferred_localized_aspects;

        return $this;
    }

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

    /**
     * Sets additional_image_urls.
     *
     * @param string|null $additional_image_urls A pipe separated (<code>|</code>) list of URLs for the additional images of the item. These images are in addition to the primary image, which is returned in the <b>imageUrl</b> column. <b>Note: </b> This column can contain multiple values.
     *
     * @return self
     */
    public function setAdditionalImageUrls($additional_image_urls)
    {
        $this->container['additional_image_urls'] = $additional_image_urls;

        return $this;
    }

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

    /**
     * Sets original_price_value.
     *
     * @param string|null $original_price_value The original selling price of the item. This lets you surface a strikethrough price for the item.
     *
     * @return self
     */
    public function setOriginalPriceValue($original_price_value)
    {
        $this->container['original_price_value'] = $original_price_value;

        return $this;
    }

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

    /**
     * Sets original_price_currency.
     *
     * @param string|null $original_price_currency The currency of the <b> originalPriceValue</b> of the item and the <b> discountAmount</b>.  For implementation help, refer to <a href='https://developer.ebay.com/api-docs/buy/feed/types/bas:CurrencyCodeEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setOriginalPriceCurrency($original_price_currency)
    {
        $this->container['original_price_currency'] = $original_price_currency;

        return $this;
    }

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

    /**
     * Sets discount_amount.
     *
     * @param string|null $discount_amount The calculated amount of the discount (<b>originalPriceValue</b> - <b>priceValue</b>). For example,  if <b>originalPriceValue</b> is 70 and <b>priceValue</b> is 56, this value would be 14. <p><span class=\"tablenote\"><b>Note: </b> The currency shown in <b>originalPriceCurrency</b> is used for both <b>discountAmount</b> and <b>originalPriceCurrency</b>.</span></p>
     *
     * @return self
     */
    public function setDiscountAmount($discount_amount)
    {
        $this->container['discount_amount'] = $discount_amount;

        return $this;
    }

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

    /**
     * Sets discount_percentage.
     *
     * @param string|null $discount_percentage The calculated discount percentage. For example, if <b> originalPriceValue</b> is 70 and <b> discountAmount</b> is 14, this value will be 20.
     *
     * @return self
     */
    public function setDiscountPercentage($discount_percentage)
    {
        $this->container['discount_percentage'] = $discount_percentage;

        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 Indicates the <a href=\"https://en.wikipedia.org/wiki/European_Union_energy_label\">European energy efficiency</a> rating (EEK) of the item. Data is returned in this column only if the seller specified the energy efficiency rating. <br /><br />The rating is a set of energy efficiency classes from A to G, where 'A' is the most energy efficient and 'G' is the least efficient. This rating helps buyers choose between various models. <br /><br />To retrieve the manufacturer's specifications for this item, when they are available, use the <a href=\"/api-docs/buy/browse/resources/item/methods/getItem\">getItem</a> method in the Browse API. The information is returned in the <b> productFicheWebUrl</b> field.
     *
     * @return self
     */
    public function setEnergyEfficiencyClass($energy_efficiency_class)
    {
        $this->container['energy_efficiency_class'] = $energy_efficiency_class;

        return $this;
    }

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

    /**
     * Sets qualified_programs.
     *
     * @param string|null $qualified_programs A pipe separated list of the qualified programs available for the item, such as EBAY_PLUS and AUTHENTICITY_GUARANTEE.  <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.  <span class=\"tablenote\"><b>Note: </b> eBay Plus is available only to buyers in Germany, Austria, and Australia marketplaces. </span><br /><br />The eBay Authenticity Guarantee 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 lot_size.
     *
     * @return int|null
     */
    public function getLotSize()
    {
        return $this->container['lot_size'];
    }

    /**
     * Sets lot_size.
     *
     * @param int|null $lot_size The number of items in a lot. In other words, a lot size is the number of items that are being sold together.  <br /><br />A lot is a set of two or more items included in a single listing that must be purchased together in a single order line item. All the items in the lot are the same but there can be multiple items in a single lot,  such as the package of batteries shown in the example below.  <br /><br /><b>For example:</b> <br /><br /><table border=\"1\"> <tr> <tr>  <th>Item</th>  <th>Lot Definition</th> <th>Lot Size</th></tr>  <tr>  <td>A package of 24 AA batteries</td>  <td>A box of 10 packages</td>  <td>10  </td> </tr>  <tr>  <td>A P235/75-15 Goodyear tire </td>  <td>4 tires  </td>  <td>4  </td> </tr> <tr> <td>Fashion Jewelry Rings  </td> <td>Package of 100 assorted rings  </td> <td>100 </td> </tr></table>  <br /><br /><span class=\"tablenote\"><b>Note: </b>  Lots are not supported in all categories.  </span>
     *
     * @return self
     */
    public function setLotSize($lot_size)
    {
        $this->container['lot_size'] = $lot_size;

        return $this;
    }

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

    /**
     * Sets length_unit_of_measure.
     *
     * @param string|null $length_unit_of_measure The unit of measurement used for the package dimensions, such as INCH, FEET, CENTIMETER, or METER. <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/feed/types/api:LengthUnitOfMeasureEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setLengthUnitOfMeasure($length_unit_of_measure)
    {
        $this->container['length_unit_of_measure'] = $length_unit_of_measure;

        return $this;
    }

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

    /**
     * Sets package_width.
     *
     * @param string|null $package_width the width of the shipping package that contains the item
     *
     * @return self
     */
    public function setPackageWidth($package_width)
    {
        $this->container['package_width'] = $package_width;

        return $this;
    }

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

    /**
     * Sets package_height.
     *
     * @param string|null $package_height the height of the shipping package that contains the item
     *
     * @return self
     */
    public function setPackageHeight($package_height)
    {
        $this->container['package_height'] = $package_height;

        return $this;
    }

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

    /**
     * Sets package_length.
     *
     * @param string|null $package_length the length of the shipping package that contains the item
     *
     * @return self
     */
    public function setPackageLength($package_length)
    {
        $this->container['package_length'] = $package_length;

        return $this;
    }

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

    /**
     * Sets weight_unit_of_measure.
     *
     * @param string|null $weight_unit_of_measure The unit of measurement used for the package weight, such as POUND, KILOGRAM, OUNCE, or GRAM. <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/feed/types/api:WeightUnitOfMeasureEnum'>eBay API documentation</a>
     *
     * @return self
     */
    public function setWeightUnitOfMeasure($weight_unit_of_measure)
    {
        $this->container['weight_unit_of_measure'] = $weight_unit_of_measure;

        return $this;
    }

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

    /**
     * Sets package_weight.
     *
     * @param string|null $package_weight the weight of the package that contains the item
     *
     * @return self
     */
    public function setPackageWeight($package_weight)
    {
        $this->container['package_weight'] = $package_weight;

        return $this;
    }

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

    /**
     * Sets shipping_carrier_code.
     *
     * @param string|null $shipping_carrier_code the name of the shipping provider, such as FedEx, or USPS
     *
     * @return self
     */
    public function setShippingCarrierCode($shipping_carrier_code)
    {
        $this->container['shipping_carrier_code'] = $shipping_carrier_code;

        return $this;
    }

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

    /**
     * Sets shipping_service_code.
     *
     * @param string|null $shipping_service_code The type of shipping service. For example, USPS First Class.
     *
     * @return self
     */
    public function setShippingServiceCode($shipping_service_code)
    {
        $this->container['shipping_service_code'] = $shipping_service_code;

        return $this;
    }

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

    /**
     * Sets shipping_type.
     *
     * @param string|null $shipping_type the type of a shipping option, such as EXPEDITED, ONE_DAY, STANDARD, ECONOMY, PICKUP, etc
     *
     * @return self
     */
    public function setShippingType($shipping_type)
    {
        $this->container['shipping_type'] = $shipping_type;

        return $this;
    }

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

    /**
     * Sets shipping_cost.
     *
     * @param string|null $shipping_cost The final shipping cost for all the items after all discounts are applied.<br /><br /><span class=\"tablenote\"><b> Note: </b>The price includes the value-added tax (VAT) for applicable jurisdictions when requested from supported marketplaces. In this case, users must pass the <a href=\"/api-docs/static/rest-request-components.html#HTTP\"><code>X-EBAY-C-MARKETPLACE-ID</code></a> request header specifying the supported marketplace (such as <code>EBAY_GB</code>) to see the VAT-inclusive pricing. For more information on VAT, refer to <a href=\"https://www.ebay.co.uk/help/listings/default/vat-obligations-eu?id=4650&st=12&pos=1&query=Your%20VAT%20obligations%20in%20the%20EU&intent=VAT\">VAT Obligations in the EU</a>.</span>
     *
     * @return self
     */
    public function setShippingCost($shipping_cost)
    {
        $this->container['shipping_cost'] = $shipping_cost;

        return $this;
    }

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

    /**
     * Sets shipping_cost_type.
     *
     * @param string|null $shipping_cost_type Indicates the class of the shipping cost. <br /><br /><b> Valid Values: </b> FIXED or CALCULATED.
     *
     * @return self
     */
    public function setShippingCostType($shipping_cost_type)
    {
        $this->container['shipping_cost_type'] = $shipping_cost_type;

        return $this;
    }

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

    /**
     * Sets additional_shipping_cost_per_unit.
     *
     * @param string|null $additional_shipping_cost_per_unit Any per item additional shipping costs for a multi-item purchase. For example, let's say the shipping cost for a power cord is $3. But for an additional cord, the shipping cost is only $1. So if you bought 3 cords, the <b> shippingCost</b> would be $3 and this value would be $2 ($1 for each additional item).
     *
     * @return self
     */
    public function setAdditionalShippingCostPerUnit($additional_shipping_cost_per_unit)
    {
        $this->container['additional_shipping_cost_per_unit'] = $additional_shipping_cost_per_unit;

        return $this;
    }

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

    /**
     * Sets quantity_used_for_estimate.
     *
     * @param int|null $quantity_used_for_estimate the number of items used when calculating the estimation information
     *
     * @return self
     */
    public function setQuantityUsedForEstimate($quantity_used_for_estimate)
    {
        $this->container['quantity_used_for_estimate'] = $quantity_used_for_estimate;

        return $this;
    }

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

    /**
     * Sets unit_price.
     *
     * @param string|null $unit_price This is the price per unit for the item. Some European countries require listings for certain types of products to include the price per unit so buyers can accurately compare prices.   <br /><br />For example: <br /><br /><code>\"unitPricingMeasure\": \"100g\",<br /> \"unitPrice\": {<br />&nbsp;&nbsp;\"value\": \"7.99\",<br />&nbsp;&nbsp;\"currency\": \"GBP\"</code>
     *
     * @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 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 alerts.
     *
     * @return string|null
     */
    public function getAlerts()
    {
        return $this->container['alerts'];
    }

    /**
     * Sets alerts.
     *
     * @param string|null $alerts A pipe-separated list of alerts available for the item.<br /><br />For example, if the <code>DELAYED_DELIVERY</code> alert was returned for an item, it would indicate a delay in shipping by the seller.
     *
     * @return self
     */
    public function setAlerts($alerts)
    {
        $this->container['alerts'] = $alerts;

        return $this;
    }

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

    /**
     * Sets seller_account_type.
     *
     * @param string|null $seller_account_type A string value that specifies whether the seller is a business or an individual. This is determined when the seller registers with eBay. If the seller registers for a business account, the value returned in this field will be <code>BUSINESS</code>. If the seller registers for a private account, the value returned in this field will be <code>INDIVIDUAL</code>.<br /><br /><span class=\"tablenote\"><b>Note:</b> This designation is required by the tax laws in some countries.</span><br /><br />This field is returned only on the following sites: EBAY_AT, EBAY_BE, EBAY_CH, EBAY_DE, EBAY_ES, EBAY_FR, EBAY_GB, EBAY_IE, EBAY_IT, and EBAY_PL.<br /><br />Code so that your app gracefully handles any future changes to this list.<br /><br /><b>Valid Values:</b> <code>BUSINESS</code> or <code>INDIVIDUAL</code>
     *
     * @return self
     */
    public function setSellerAccountType($seller_account_type)
    {
        $this->container['seller_account_type'] = $seller_account_type;

        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 priority_listing_payload.
     *
     * @return string|null
     */
    public function getPriorityListingPayload()
    {
        return $this->container['priority_listing_payload'];
    }

    /**
     * Sets priority_listing_payload.
     *
     * @param string|null $priority_listing_payload EPN (eBay Partner Network) publishers append this value to their affiliate tracking URL when using an EPN tracking link to track changes that occur to Priority Listing items. <br /><br /><b>Example:</b><code>amdata=enc%3AAQAFAAAAkB1DmsmXf%2BqZ%2BCEMGdebW6oR75GCMdBmc4MCQ%2FCEPqgKHbT0jdWhPwfY5LdUs6HTaP0eBlwKE7Smy2eDslewF7l3xjwWxjqwzNAnsYgxn2PiGkTKbiQSQytFUiymdtANpk1qOnBOoMGMK%2BWsji7jYlvySSs9o9s24TxD6RqWZpNrltzOU7mfnv3H40SZ3YESzg%3D%3D</code><br/><br />See <a  href=\"https://developer.ebay.com/api-docs/buy/static/ref-epn-link.html\">Creating an EPN Tracking Link</a> for information on EPN tracking links.
     *
     * @return self
     */
    public function setPriorityListingPayload($priority_listing_payload)
    {
        $this->container['priority_listing_payload'] = $priority_listing_payload;

        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 A timestamp indicating when the item was created. The format is UTC (<code>yyyy-MM-ddThh:mm:ss.sssZ</code>).
     *
     * @return self
     */
    public function setItemCreationDate($item_creation_date)
    {
        $this->container['item_creation_date'] = $item_creation_date;

        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 of the View Item page of the item. <br/><br /><b>For example:</b><br /><br /><b>Single SKU:</b><br /><code>https://www.ebay.de/itm/2********0</code><br /><br /><b>MSKU:</b><br /><code>https://www.ebay.com/itm/2********9?var=5********2</code>
     *
     * @return self
     */
    public function setItemWebUrl($item_web_url)
    {
        $this->container['item_web_url'] = $item_web_url;

        return $this;
    }

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

    /**
     * Sets default_image_url.
     *
     * @param string|null $default_image_url URL to the gallery or default image of the item. The other images of the item are returned in the <b>additionalImageUrls</b> field.<br /><br /><b>For example</b><br /><br /><code>https://i.ebayimg.com/00/s/M********w/z/W********p/$_1.JPG?set_id=8********F</code>
     *
     * @return self
     */
    public function setDefaultImageUrl($default_image_url)
    {
        $this->container['default_image_url'] = $default_image_url;

        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 of the View Item page of the item, with the affiliate tracking ID appended to it.<br /><br /><b>For example</b><br /><br /><code>https://www.ebay.de/itm/2********0?mkevt=1&mkcid=1&mkrid=707-53477-19255-0&campid=CAMPAIGNID&toolid=2***6&customid=CUSTOMID</code>
     *
     * @return self
     */
    public function setItemAffiliateWebUrl($item_affiliate_web_url)
    {
        $this->container['item_affiliate_web_url'] = $item_affiliate_web_url;

        return $this;
    }

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

    /**
     * Sets age_group.
     *
     * @param string|null $age_group The age group that the product is recommended for. <br /><br /><b>Valid values:</b> <code>newborn</code>, <code>infant</code>, <code>toddler</code>, <code>kids</code>, <code>adult</code>.
     *
     * @return self
     */
    public function setAgeGroup($age_group)
    {
        $this->container['age_group'] = $age_group;

        return $this;
    }

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

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

        return $this;
    }

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

    /**
     * Sets pattern.
     *
     * @param string|null $pattern Text describing the pattern used on the item. For example, paisley.<br /><br /><b>Note:</b> All the item aspects, including this aspect, are returned in the localizedAspects container.
     *
     * @return self
     */
    public function setPattern($pattern)
    {
        $this->container['pattern'] = $pattern;

        return $this;
    }

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

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

        return $this;
    }

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

    /**
     * Sets gender.
     *
     * @param string|null $gender In cases where items could vary by gender, this specifies for which gender the product is intended. Possible values include male, female, and unisex.
     *
     * @return self
     */
    public function setGender($gender)
    {
        $this->container['gender'] = $gender;

        return $this;
    }

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

    /**
     * Sets material.
     *
     * @param string|null $material the material that the item is made of
     *
     * @return self
     */
    public function setMaterial($material)
    {
        $this->container['material'] = $material;

        return $this;
    }

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

    /**
     * Sets total_units.
     *
     * @param string|null $total_units For an item that is priced by the unit, the total number of units that are on offer. For example, if the item is priced by the meter and 50 cm is on offer, the <b>totalUnits</b> would be 0.5 m.
     *
     * @return self
     */
    public function setTotalUnits($total_units)
    {
        $this->container['total_units'] = $total_units;

        return $this;
    }

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

    /**
     * Sets eco_participation_fee_value.
     *
     * @param string|null $eco_participation_fee_value the amount of the Eco Participation Fee, a fee paid toward the eventual disposal of the purchased item
     *
     * @return self
     */
    public function setEcoParticipationFeeValue($eco_participation_fee_value)
    {
        $this->container['eco_participation_fee_value'] = $eco_participation_fee_value;

        return $this;
    }

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

    /**
     * Sets eco_participation_fee_currency.
     *
     * @param string|null $eco_participation_fee_currency the currency in which the Eco Participation Fee for the item is paid
     *
     * @return self
     */
    public function setEcoParticipationFeeCurrency($eco_participation_fee_currency)
    {
        $this->container['eco_participation_fee_currency'] = $eco_participation_fee_currency;

        return $this;
    }

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

    /**
     * Sets take_back_policy_label.
     *
     * @param string|null $take_back_policy_label The seller-defined label of the TAKE_BACK custom policy for the item. A TAKE_BACK policy describes the seller's regulatory responsibility to take back a purchased item for disposal when the buyer purchases a new one.
     *
     * @return self
     */
    public function setTakeBackPolicyLabel($take_back_policy_label)
    {
        $this->container['take_back_policy_label'] = $take_back_policy_label;

        return $this;
    }

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

    /**
     * Sets take_back_policy_description.
     *
     * @param string|null $take_back_policy_description the seller-defined description of the TAKE_BACK custom policy for the item
     *
     * @return self
     */
    public function setTakeBackPolicyDescription($take_back_policy_description)
    {
        $this->container['take_back_policy_description'] = $take_back_policy_description;

        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));
    }
}