code: public function jsonSerialize()
      {
          $json = [];
  
          if (null !== $this->description) {
              $json['description'] = $this->description;
          }
          if (null !== $this->protocol) {
              $json['protocol'] = $this->protocol;
          }
          if (null !== $this->definition) {
              $json['definition'] = $this->definition;
          }
          if (null !== $this->viewserver) {
              $json['viewserver'] = $this->viewserver;
          }
          if (null !== $this->viewpath) {
              $json['viewpath'] = $this->viewpath;
          }
          if (null !== $this->namingpattern) {
              $json['namingpattern'] = $this->namingpattern;
          }
          if (null !== $this->children) {
              $json['children'] = $this->children;
          }
          if (null !== $this->color) {
              $json['color'] = $this->color;
          }
          if (null !== $this->imagetemplates && !empty($this->imagetemplates)) {
              $json['imagetemplates'] = $this->imagetemplates;
          }
          if (null !== $this->videotemplates && !empty($this->videotemplates)) {
              $json['videotemplates'] = $this->videotemplates;
          }
          if (null !== $this->categories && !empty($this->categories)) {
              $json['categories'] = $this->categories;
          }
          if (null !== $this->name) {
              $json['name'] = $this->name;
          }
          if (null !== $this->deleted) {
              $json['deleted'] = $this->deleted;
          }
          if (null !== $this->properties && !empty($this->properties)) {
              $json['properties'] = $this->properties;
          }
          if (null !== $this->typeId) {
              $json['typeId'] = $this->typeId;
          }
  
          return $json;
      }
docs: Gets all data that should be available in a json representation.
  
  @return array an associative array of the available variables