diff --git a/app/Http/Controllers/Api/V1/ResultsController.php b/app/Http/Controllers/Api/V1/ResultsController.php index 9c802fe84..5f462ae3c 100644 --- a/app/Http/Controllers/Api/V1/ResultsController.php +++ b/app/Http/Controllers/Api/V1/ResultsController.php @@ -28,7 +28,7 @@ public function list(Request $request) ); } $validator = Validator::make($request->all(), [ - 'per_page' => 'integer|min:1|max:500', + 'page.size' => 'integer|min:1|max:'.config('json-api-paginate.max_results'), ]); if ($validator->fails()) { @@ -65,7 +65,7 @@ public function list(Request $request) 'created_at', 'updated_at', ]) - ->jsonPaginate($request->input('per_page', 25)); + ->jsonPaginate(); return ResultResource::collection($results); } diff --git a/app/OpenApi/Annotations/V1/ResultsAnnotations.php b/app/OpenApi/Annotations/V1/ResultsAnnotations.php index 9bfe6a691..76b794c90 100644 --- a/app/OpenApi/Annotations/V1/ResultsAnnotations.php +++ b/app/OpenApi/Annotations/V1/ResultsAnnotations.php @@ -19,7 +19,7 @@ class ResultsAnnotations parameters: [ new OA\Parameter(ref: '#/components/parameters/AcceptHeader'), new OA\Parameter( - name: 'per_page', + name: 'per.page', in: 'query', required: false, schema: new OA\Schema(type: 'integer', minimum: 1, maximum: 500, default: 25), diff --git a/app/OpenApi/Schemas/ResultsCollectionSchema.php b/app/OpenApi/Schemas/ResultsCollectionSchema.php index 2a4ac55a7..2f8d82c5f 100644 --- a/app/OpenApi/Schemas/ResultsCollectionSchema.php +++ b/app/OpenApi/Schemas/ResultsCollectionSchema.php @@ -47,7 +47,7 @@ ) ), new OA\Property(property: 'path', type: 'string'), - new OA\Property(property: 'per_page', type: 'integer'), + new OA\Property(property: 'per.page', type: 'integer'), new OA\Property(property: 'to', type: 'integer'), new OA\Property(property: 'total', type: 'integer'), ], diff --git a/config/json-api-paginate.php b/config/json-api-paginate.php new file mode 100644 index 000000000..6ff3c2afa --- /dev/null +++ b/config/json-api-paginate.php @@ -0,0 +1,17 @@ + env('API_MAX_RESULTS', 500), + + /* + * The default number of results that will be returned + * when using the JSON API paginator. + */ + 'default_size' => 25, + +]; diff --git a/openapi.json b/openapi.json index ffe15d82d..1717e7ee6 100644 --- a/openapi.json +++ b/openapi.json @@ -21,7 +21,7 @@ "$ref": "#/components/parameters/AcceptHeader" }, { - "name": "per_page", + "name": "per.page", "in": "query", "description": "Number of results per page", "required": false,