<?php
/**
 * AlipayOpenMiniInnerbaseinfoQueryResponseModel
 *
 * PHP version 7.4
 *
 * @category Class
 * @package  Alipay\OpenAPISDK
 * @author   OpenAPI Generator team
 * @link     https://openapi-generator.tech
 */

/**
 * 支付宝开放平台API
 *
 * 支付宝开放平台v3协议文档
 *
 * The version of the OpenAPI document: 2023-12-20
 * Generated by: https://openapi-generator.tech
 * OpenAPI Generator version: 6.2.1
 */

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

namespace Alipay\OpenAPISDK\Model;

use \ArrayAccess;
use \Alipay\OpenAPISDK\ObjectSerializer;

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

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

    /**
      * Array of property to type mappings. Used for (de)serialization
      *
      * @var string[]
      */
    protected static $openAPITypes = [
        'appAliasName' => 'string',
        'appCategoryIds' => 'string',
        'appDesc' => 'string',
        'appEnglishName' => 'string',
        'appKey' => 'string',
        'appLogo' => 'string',
        'appName' => 'string',
        'appSlogan' => 'string',
        'appSubType' => 'string',
        'devId' => 'string',
        'gmtCreate' => 'string',
        'gmtModified' => 'string',
        'miniAppId' => 'string',
        'miniCategoryIds' => 'string',
        'origin' => 'string',
        'ownerEntity' => 'string',
        'ownerPortrait' => 'string',
        'pluginRefreshType' => 'string',
        'serviceEmail' => 'string',
        'servicePhone' => '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 = [
        'appAliasName' => null,
        'appCategoryIds' => null,
        'appDesc' => null,
        'appEnglishName' => null,
        'appKey' => null,
        'appLogo' => null,
        'appName' => null,
        'appSlogan' => null,
        'appSubType' => null,
        'devId' => null,
        'gmtCreate' => null,
        'gmtModified' => null,
        'miniAppId' => null,
        'miniCategoryIds' => null,
        'origin' => null,
        'ownerEntity' => null,
        'ownerPortrait' => null,
        'pluginRefreshType' => null,
        'serviceEmail' => null,
        'servicePhone' => 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 = [
        'appAliasName' => 'app_alias_name',
        'appCategoryIds' => 'app_category_ids',
        'appDesc' => 'app_desc',
        'appEnglishName' => 'app_english_name',
        'appKey' => 'app_key',
        'appLogo' => 'app_logo',
        'appName' => 'app_name',
        'appSlogan' => 'app_slogan',
        'appSubType' => 'app_sub_type',
        'devId' => 'dev_id',
        'gmtCreate' => 'gmt_create',
        'gmtModified' => 'gmt_modified',
        'miniAppId' => 'mini_app_id',
        'miniCategoryIds' => 'mini_category_ids',
        'origin' => 'origin',
        'ownerEntity' => 'owner_entity',
        'ownerPortrait' => 'owner_portrait',
        'pluginRefreshType' => 'plugin_refresh_type',
        'serviceEmail' => 'service_email',
        'servicePhone' => 'service_phone'
    ];

    /**
     * Array of attributes to setter functions (for deserialization of responses)
     *
     * @var string[]
     */
    protected static $setters = [
        'appAliasName' => 'setAppAliasName',
        'appCategoryIds' => 'setAppCategoryIds',
        'appDesc' => 'setAppDesc',
        'appEnglishName' => 'setAppEnglishName',
        'appKey' => 'setAppKey',
        'appLogo' => 'setAppLogo',
        'appName' => 'setAppName',
        'appSlogan' => 'setAppSlogan',
        'appSubType' => 'setAppSubType',
        'devId' => 'setDevId',
        'gmtCreate' => 'setGmtCreate',
        'gmtModified' => 'setGmtModified',
        'miniAppId' => 'setMiniAppId',
        'miniCategoryIds' => 'setMiniCategoryIds',
        'origin' => 'setOrigin',
        'ownerEntity' => 'setOwnerEntity',
        'ownerPortrait' => 'setOwnerPortrait',
        'pluginRefreshType' => 'setPluginRefreshType',
        'serviceEmail' => 'setServiceEmail',
        'servicePhone' => 'setServicePhone'
    ];

    /**
     * Array of attributes to getter functions (for serialization of requests)
     *
     * @var string[]
     */
    protected static $getters = [
        'appAliasName' => 'getAppAliasName',
        'appCategoryIds' => 'getAppCategoryIds',
        'appDesc' => 'getAppDesc',
        'appEnglishName' => 'getAppEnglishName',
        'appKey' => 'getAppKey',
        'appLogo' => 'getAppLogo',
        'appName' => 'getAppName',
        'appSlogan' => 'getAppSlogan',
        'appSubType' => 'getAppSubType',
        'devId' => 'getDevId',
        'gmtCreate' => 'getGmtCreate',
        'gmtModified' => 'getGmtModified',
        'miniAppId' => 'getMiniAppId',
        'miniCategoryIds' => 'getMiniCategoryIds',
        'origin' => 'getOrigin',
        'ownerEntity' => 'getOwnerEntity',
        'ownerPortrait' => 'getOwnerPortrait',
        'pluginRefreshType' => 'getPluginRefreshType',
        'serviceEmail' => 'getServiceEmail',
        'servicePhone' => 'getServicePhone'
    ];

    /**
     * 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['appAliasName'] = $data['appAliasName'] ?? null;
        $this->container['appCategoryIds'] = $data['appCategoryIds'] ?? null;
        $this->container['appDesc'] = $data['appDesc'] ?? null;
        $this->container['appEnglishName'] = $data['appEnglishName'] ?? null;
        $this->container['appKey'] = $data['appKey'] ?? null;
        $this->container['appLogo'] = $data['appLogo'] ?? null;
        $this->container['appName'] = $data['appName'] ?? null;
        $this->container['appSlogan'] = $data['appSlogan'] ?? null;
        $this->container['appSubType'] = $data['appSubType'] ?? null;
        $this->container['devId'] = $data['devId'] ?? null;
        $this->container['gmtCreate'] = $data['gmtCreate'] ?? null;
        $this->container['gmtModified'] = $data['gmtModified'] ?? null;
        $this->container['miniAppId'] = $data['miniAppId'] ?? null;
        $this->container['miniCategoryIds'] = $data['miniCategoryIds'] ?? null;
        $this->container['origin'] = $data['origin'] ?? null;
        $this->container['ownerEntity'] = $data['ownerEntity'] ?? null;
        $this->container['ownerPortrait'] = $data['ownerPortrait'] ?? null;
        $this->container['pluginRefreshType'] = $data['pluginRefreshType'] ?? null;
        $this->container['serviceEmail'] = $data['serviceEmail'] ?? null;
        $this->container['servicePhone'] = $data['servicePhone'] ?? 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 appAliasName
     *
     * @return string|null
     */
    public function getAppAliasName()
    {
        return $this->container['appAliasName'];
    }

    /**
     * Sets appAliasName
     *
     * @param string|null $appAliasName 小程序别名，简称
     *
     * @return self
     */
    public function setAppAliasName($appAliasName)
    {
        $this->container['appAliasName'] = $appAliasName;

        return $this;
    }

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

    /**
     * Sets appCategoryIds
     *
     * @param string|null $appCategoryIds 类目Id列表
     *
     * @return self
     */
    public function setAppCategoryIds($appCategoryIds)
    {
        $this->container['appCategoryIds'] = $appCategoryIds;

        return $this;
    }

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

    /**
     * Sets appDesc
     *
     * @param string|null $appDesc 小程序应用描述
     *
     * @return self
     */
    public function setAppDesc($appDesc)
    {
        $this->container['appDesc'] = $appDesc;

        return $this;
    }

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

    /**
     * Sets appEnglishName
     *
     * @param string|null $appEnglishName 小程序英文名称
     *
     * @return self
     */
    public function setAppEnglishName($appEnglishName)
    {
        $this->container['appEnglishName'] = $appEnglishName;

        return $this;
    }

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

    /**
     * Sets appKey
     *
     * @param string|null $appKey 手淘开放平台鉴权key，支付宝不需要
     *
     * @return self
     */
    public function setAppKey($appKey)
    {
        $this->container['appKey'] = $appKey;

        return $this;
    }

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

    /**
     * Sets appLogo
     *
     * @param string|null $appLogo 小程序应用logo图标
     *
     * @return self
     */
    public function setAppLogo($appLogo)
    {
        $this->container['appLogo'] = $appLogo;

        return $this;
    }

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

    /**
     * Sets appName
     *
     * @param string|null $appName 小程序名称
     *
     * @return self
     */
    public function setAppName($appName)
    {
        $this->container['appName'] = $appName;

        return $this;
    }

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

    /**
     * Sets appSlogan
     *
     * @param string|null $appSlogan 小程序简介
     *
     * @return self
     */
    public function setAppSlogan($appSlogan)
    {
        $this->container['appSlogan'] = $appSlogan;

        return $this;
    }

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

    /**
     * Sets appSubType
     *
     * @param string|null $appSubType 小程序类型，TINYAPP_TEMPLATE，TINYAPP_NORMAL，TINYAPP_PLUGIN
     *
     * @return self
     */
    public function setAppSubType($appSubType)
    {
        $this->container['appSubType'] = $appSubType;

        return $this;
    }

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

    /**
     * Sets devId
     *
     * @param string|null $devId 小程序所属主体信息
     *
     * @return self
     */
    public function setDevId($devId)
    {
        $this->container['devId'] = $devId;

        return $this;
    }

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

    /**
     * Sets gmtCreate
     *
     * @param string|null $gmtCreate 小程序主体创建时间
     *
     * @return self
     */
    public function setGmtCreate($gmtCreate)
    {
        $this->container['gmtCreate'] = $gmtCreate;

        return $this;
    }

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

    /**
     * Sets gmtModified
     *
     * @param string|null $gmtModified 小程序主体更新时间
     *
     * @return self
     */
    public function setGmtModified($gmtModified)
    {
        $this->container['gmtModified'] = $gmtModified;

        return $this;
    }

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

    /**
     * Sets miniAppId
     *
     * @param string|null $miniAppId 小程序Id
     *
     * @return self
     */
    public function setMiniAppId($miniAppId)
    {
        $this->container['miniAppId'] = $miniAppId;

        return $this;
    }

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

    /**
     * Sets miniCategoryIds
     *
     * @param string|null $miniCategoryIds 新小程序前台类目，一级与二级、三级用下划线隔开，最多可以选四个类目，类目之间;隔开。使用后不再读取app_category_ids值，老前台类目将废弃
     *
     * @return self
     */
    public function setMiniCategoryIds($miniCategoryIds)
    {
        $this->container['miniCategoryIds'] = $miniCategoryIds;

        return $this;
    }

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

    /**
     * Sets origin
     *
     * @param string|null $origin 应用创建来源，alipay = 支付宝，taobao = 淘宝
     *
     * @return self
     */
    public function setOrigin($origin)
    {
        $this->container['origin'] = $origin;

        return $this;
    }

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

    /**
     * Sets ownerEntity
     *
     * @param string|null $ownerEntity 小程序主体信息
     *
     * @return self
     */
    public function setOwnerEntity($ownerEntity)
    {
        $this->container['ownerEntity'] = $ownerEntity;

        return $this;
    }

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

    /**
     * Sets ownerPortrait
     *
     * @param string|null $ownerPortrait 小程序主体头像信息
     *
     * @return self
     */
    public function setOwnerPortrait($ownerPortrait)
    {
        $this->container['ownerPortrait'] = $ownerPortrait;

        return $this;
    }

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

    /**
     * Sets pluginRefreshType
     *
     * @param string|null $pluginRefreshType AUTO/自动更新、MANUAL/手动更新
     *
     * @return self
     */
    public function setPluginRefreshType($pluginRefreshType)
    {
        $this->container['pluginRefreshType'] = $pluginRefreshType;

        return $this;
    }

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

    /**
     * Sets serviceEmail
     *
     * @param string|null $serviceEmail 小程序客服邮箱
     *
     * @return self
     */
    public function setServiceEmail($serviceEmail)
    {
        $this->container['serviceEmail'] = $serviceEmail;

        return $this;
    }

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

    /**
     * Sets servicePhone
     *
     * @param string|null $servicePhone 小程序客服电话
     *
     * @return self
     */
    public function setServicePhone($servicePhone)
    {
        $this->container['servicePhone'] = $servicePhone;

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

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

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

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

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

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

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


