@@ -654,6 +654,7 @@ foreach ($routes as $scope => $scopeRoutes) {
654
654
$ pathParameters [] = $ parameter ;
655
655
}
656
656
657
+ $ queryParameters = [];
657
658
$ bodyParameters = [];
658
659
foreach ($ route ->controllerMethod ->parameters as $ parameter ) {
659
660
$ alreadyInPath = false ;
@@ -664,7 +665,11 @@ foreach ($routes as $scope => $scopeRoutes) {
664
665
}
665
666
}
666
667
if (!$ alreadyInPath ) {
667
- $ bodyParameters [] = $ parameter ;
668
+ if (in_array (strtolower ($ route ->verb ), ['put ' , 'post ' , 'patch ' ])) {
669
+ $ bodyParameters [] = $ parameter ;
670
+ } else {
671
+ $ queryParameters [] = $ parameter ;
672
+ }
668
673
}
669
674
}
670
675
@@ -764,9 +769,9 @@ foreach ($routes as $scope => $scopeRoutes) {
764
769
if (count ($ security ) > 0 ) {
765
770
$ operation ["security " ] = $ security ;
766
771
}
767
- if (count ($ bodyParameters ) > 0 || count ($ pathParameters ) > 0 || $ route ->isOCS ) {
772
+
773
+ if (count ($ bodyParameters ) > 0 ) {
768
774
$ requiredBodyParameters = [];
769
- $ parameters = [];
770
775
771
776
foreach ($ bodyParameters as $ bodyParameter ) {
772
777
$ required = !$ bodyParameter ->type ->nullable && !$ bodyParameter ->type ->hasDefaultValue ;
@@ -775,48 +780,61 @@ foreach ($routes as $scope => $scopeRoutes) {
775
780
}
776
781
}
777
782
778
- if (count ($ bodyParameters ) > 0 ) {
779
- $ required = count ($ requiredBodyParameters ) > 0 ;
780
-
781
- $ schema = [
782
- "type " => "object " ,
783
- ];
784
- if ($ required ) {
785
- $ schema ["required " ] = $ requiredBodyParameters ;
786
- }
787
- $ schema ["properties " ] = [];
788
- foreach ($ bodyParameters as $ bodyParameter ) {
789
- $ schema ["properties " ][$ bodyParameter ->name ] = $ bodyParameter ->type ->toArray ();
790
- }
783
+ $ required = count ($ requiredBodyParameters ) > 0 ;
791
784
792
- $ operation ["requestBody " ] = [
793
- "required " => $ required ,
794
- "content " => [
795
- "application/json " => [
796
- "schema " => $ schema ,
797
- ],
798
- ],
799
- ];
785
+ $ schema = [
786
+ "type " => "object " ,
787
+ ];
788
+ if ($ required ) {
789
+ $ schema ["required " ] = $ requiredBodyParameters ;
790
+ }
791
+ $ schema ["properties " ] = [];
792
+ foreach ($ bodyParameters as $ bodyParameter ) {
793
+ $ schema ["properties " ][$ bodyParameter ->name ] = $ bodyParameter ->type ->toArray ();
800
794
}
801
795
802
- $ parameters = array_merge ($ parameters , $ pathParameters );
803
- if ($ route ->isOCS ) {
804
- $ parameters [] = [
805
- "name " => "OCS-APIRequest " ,
806
- "in " => "header " ,
807
- "description " => "Required to be true for the API request to pass " ,
808
- "required " => true ,
809
- "schema " => [
810
- "type " => "boolean " ,
811
- "default " => true ,
796
+ $ operation ["requestBody " ] = [
797
+ "required " => $ required ,
798
+ "content " => [
799
+ "application/json " => [
800
+ "schema " => $ schema ,
812
801
],
813
- ];
814
- }
802
+ ],
803
+ ];
804
+ }
815
805
816
- if (count ($ parameters ) > 0 ) {
817
- $ operation ["parameters " ] = $ parameters ;
806
+ $ parameters = $ pathParameters ;
807
+ foreach ($ queryParameters as $ queryParameter ) {
808
+ $ parameter = [
809
+ "name " => $ queryParameter ->name . ($ queryParameter ->type ->type === "array " ? "[] " : "" ),
810
+ "in " => "query " ,
811
+ ];
812
+ if ($ queryParameter ->docType !== null && $ queryParameter ->docType ->description !== "" ) {
813
+ $ parameter ["description " ] = Helpers::cleanDocComment ($ queryParameter ->docType ->description );
814
+ }
815
+ if (!$ queryParameter ->type ->nullable && !$ queryParameter ->type ->hasDefaultValue ) {
816
+ $ parameter ["required " ] = true ;
818
817
}
818
+ $ parameter ["schema " ] = $ queryParameter ->type ->toArray (true );
819
+
820
+ $ parameters [] = $ parameter ;
821
+ }
822
+ if ($ route ->isOCS ) {
823
+ $ parameters [] = [
824
+ "name " => "OCS-APIRequest " ,
825
+ "in " => "header " ,
826
+ "description " => "Required to be true for the API request to pass " ,
827
+ "required " => true ,
828
+ "schema " => [
829
+ "type " => "boolean " ,
830
+ "default " => true ,
831
+ ],
832
+ ];
819
833
}
834
+ if (count ($ parameters ) > 0 ) {
835
+ $ operation ["parameters " ] = $ parameters ;
836
+ }
837
+
820
838
$ operation ["responses " ] = $ mergedResponses ;
821
839
822
840
$ scopePaths [$ scope ] ??= [];
@@ -981,7 +999,7 @@ foreach ($scopePaths as $scope => $paths) {
981
999
}
982
1000
983
1001
if (count ($ scopedSchemas ) === 0 ) {
984
- $ scopedSchemas = new \ stdClass ();
1002
+ $ scopedSchemas = new stdClass ();
985
1003
} else {
986
1004
ksort ($ scopedSchemas );
987
1005
}
@@ -992,7 +1010,7 @@ foreach ($scopePaths as $scope => $paths) {
992
1010
$ pathsCount = count ($ openapiScope ['paths ' ]);
993
1011
if ($ pathsCount === 0 ) {
994
1012
// Make sure the paths array is always a dictionary
995
- $ openapiScope ['paths ' ] = new \ stdClass ();
1013
+ $ openapiScope ['paths ' ] = new stdClass ();
996
1014
}
997
1015
998
1016
$ startExtension = strrpos ($ out , '. ' );
0 commit comments