diff --git a/app/OpenApi/Annotations/V1/ResultsAnnotations.php b/app/OpenApi/Annotations/V1/ResultsAnnotations.php index d19b9a277..5e3f41740 100644 --- a/app/OpenApi/Annotations/V1/ResultsAnnotations.php +++ b/app/OpenApi/Annotations/V1/ResultsAnnotations.php @@ -16,6 +16,78 @@ class ResultsAnnotations summary: 'List all results', operationId: 'listResults', tags: ['Results'], + parameters: [ + new OA\Parameter( + name: 'per_page', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer', minimum: 1, maximum: 500, default: 25), + description: 'Number of results per page' + ), + new OA\Parameter( + name: 'filter[ping]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'number'), + description: 'Filter by ping value (supports operators like >=, <=, etc.)' + ), + new OA\Parameter( + name: 'filter[download]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer'), + description: 'Filter by download speed (supports operators like >=, <=, etc.)' + ), + new OA\Parameter( + name: 'filter[upload]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'integer'), + description: 'Filter by upload speed (supports operators like >=, <=, etc.)' + ), + new OA\Parameter( + name: 'filter[healthy]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'boolean'), + description: 'Filter by healthy status' + ), + new OA\Parameter( + name: 'filter[status]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string'), + description: 'Filter by status' + ), + new OA\Parameter( + name: 'filter[scheduled]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'boolean'), + description: 'Filter by scheduled status' + ), + new OA\Parameter( + name: 'filter[start_at]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string', format: 'date'), + description: 'Filter results created on or after this date (alias for created_at>=)' + ), + new OA\Parameter( + name: 'filter[end_at]', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string', format: 'date'), + description: 'Filter results created on or before this date (alias for created_at<=)' + ), + new OA\Parameter( + name: 'sort', + in: 'query', + required: false, + schema: new OA\Schema(type: 'string', enum: ['ping', '-ping', 'download', '-download', 'upload', '-upload', 'created_at', '-created_at', 'updated_at', '-updated_at']), + description: 'Sort results by field (prefix with - for descending)' + ), + ], responses: [ new OA\Response( response: Response::HTTP_OK, diff --git a/openapi.json b/openapi.json index f036f9345..66f90cc37 100644 --- a/openapi.json +++ b/openapi.json @@ -16,6 +16,115 @@ ], "summary": "List all results", "operationId": "listResults", + "parameters": [ + { + "name": "per_page", + "in": "query", + "description": "Number of results per page", + "required": false, + "schema": { + "type": "integer", + "default": 25, + "maximum": 500, + "minimum": 1 + } + }, + { + "name": "filter[ping]", + "in": "query", + "description": "Filter by ping value (supports operators like >=, <=, etc.)", + "required": false, + "schema": { + "type": "number" + } + }, + { + "name": "filter[download]", + "in": "query", + "description": "Filter by download speed (supports operators like >=, <=, etc.)", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "filter[upload]", + "in": "query", + "description": "Filter by upload speed (supports operators like >=, <=, etc.)", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "filter[healthy]", + "in": "query", + "description": "Filter by healthy status", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "filter[status]", + "in": "query", + "description": "Filter by status", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "filter[scheduled]", + "in": "query", + "description": "Filter by scheduled status", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "filter[start_at]", + "in": "query", + "description": "Filter results created on or after this date (alias for created_at>=)", + "required": false, + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "filter[end_at]", + "in": "query", + "description": "Filter results created on or before this date (alias for created_at<=)", + "required": false, + "schema": { + "type": "string", + "format": "date" + } + }, + { + "name": "sort", + "in": "query", + "description": "Sort results by field (prefix with - for descending)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "ping", + "-ping", + "download", + "-download", + "upload", + "-upload", + "created_at", + "-created_at", + "updated_at", + "-updated_at" + ] + } + } + ], "responses": { "200": { "description": "OK",