diff --git a/lib/class-wp-rest-swagger-controller.php b/lib/class-wp-rest-swagger-controller.php index 72c0d68..bca1579 100644 --- a/lib/class-wp-rest-swagger-controller.php +++ b/lib/class-wp-rest-swagger-controller.php @@ -248,10 +248,18 @@ function ($matches) use (&$defaultidParams){ if(!empty($pdetails['type'])){ if($pdetails['type']=='array'){ $parameter['type']=$pdetails['type']; - $parameter['items']=array('type'=>'string'); + if($pdetails['items']) { + $parameter['items']=$pdetails['items']; + } else { + $parameter['items']=array('type'=>'string'); + } }elseif($pdetails['type']=='object'){ - $parameter['type']='string'; - + $parameter['type']=$pdetails['type']; + if (isset($pdetails['properties'])) { + $parameter['properties']=$pdetails['properties']; + }else { + $parameter['properties']=array('type'=>'string'); + } }elseif($pdetails['type']=='date-time'){ $parameter['type']='string'; $parameter['format']='date-time'; @@ -342,13 +350,14 @@ private function schemaIntoDefinition($schema){ } //-- - - if($prop['type']=='array'){ - $prop['items']=array('type'=>'string'); - }else - if($prop['type']=='date-time'){ - $prop['type']='string'; - $prop['format']='date-time'; + if (array_key_exists('type', $prop)) { + if($prop['type']=='array' && !array_key_exists('items', $prop)){ + $prop['items']=array('type'=>'string'); + }else + if($prop['type']=='date-time'){ + $prop['type']='string'; + $prop['format']='date-time'; + } } // else if(!empty($prop['context']) && $prop['format']!='date-time'){ // //$prop['enum']=$prop['context'];