public function jsonSerialize()
    {
        $json = [];
    
        // Mandatory parameters
        $json['ignore_user_timezone'] = $this->ignoreUserTimezone;
        $json['send_date'] = is_string($this->sendDate) ? $this->sendDate : $this->sendDate->format('Y-m-d H:i');
    
        // Optional parameters
        isset($this->campain) ? $json['campaign'] = $this->campain : false;
        isset($this->content) ? $json['content'] = $this->content : false;
        isset($this->data) ? $json['data'] = $this->data : false;
        isset($this->devices) ? $json['devices'] = $this->devices : false;
        isset($this->filter) ? $json['filter'] = $this->filter : false;
        isset($this->link) ? $json['link'] = $this->link : false;
        isset($this->minimizeLink) ? $json['minimize_link'] = $this->minimizeLink->getValue() : false;
        isset($this->pageId) ? $json['page_id'] = $this->pageId : false;
        isset($this->remotePage) ? $json['remote_page'] = $this->remotePage : false;
        isset($this->richPageId) ? $json['rich_page_id'] = $this->richPageId : false;
        isset($this->sendRate)? $json['send_rate'] = $this->sendRate : false;
        isset($this->timezone)? $json['timezone'] = $this->timezone : false;

        if (isset($this->conditions)) {
            $conditionsArray = [];
    
            foreach ($this->conditions as $condition) {
                $conditionsArray[] = $condition->jsonSerialize();
            }
    
            $json['conditions'] = $conditionsArray;
        }
    
        if (isset($this->platforms)) {
            $platformsArray = [];
    
            foreach ($this->platforms as $platform) {
                $platformsArray[] = $platform->getValue();
            }
    
            $json['platforms'] = $platformsArray;
        }
    
        // Merge specific platforms informations
        return JsonUtils::mergeJsonSerializables(
            $json,
            $this->aDM,
            $this->android,
            $this->blackBerry,
            $this->chrome,
            $this->firefox,
            $this->iOS,
            $this->mac,
            $this->safari,
            $this->wNS,
            $this->wP
        );
    }