Skip to content

Commit c6b0ec9

Browse files
Added date validation for list results API and improve documentation of params (#2319)
Co-authored-by: Alex Justesen <1144087+alexjustesen@users.noreply.github.com> Co-authored-by: GitHub Action <actions@github.com>
1 parent 930a95e commit c6b0ec9

File tree

2 files changed

+181
-0
lines changed

2 files changed

+181
-0
lines changed

app/OpenApi/Annotations/V1/ResultsAnnotations.php

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,78 @@ class ResultsAnnotations
1616
summary: 'List all results',
1717
operationId: 'listResults',
1818
tags: ['Results'],
19+
parameters: [
20+
new OA\Parameter(
21+
name: 'per_page',
22+
in: 'query',
23+
required: false,
24+
schema: new OA\Schema(type: 'integer', minimum: 1, maximum: 500, default: 25),
25+
description: 'Number of results per page'
26+
),
27+
new OA\Parameter(
28+
name: 'filter[ping]',
29+
in: 'query',
30+
required: false,
31+
schema: new OA\Schema(type: 'number'),
32+
description: 'Filter by ping value (supports operators like >=, <=, etc.)'
33+
),
34+
new OA\Parameter(
35+
name: 'filter[download]',
36+
in: 'query',
37+
required: false,
38+
schema: new OA\Schema(type: 'integer'),
39+
description: 'Filter by download speed (supports operators like >=, <=, etc.)'
40+
),
41+
new OA\Parameter(
42+
name: 'filter[upload]',
43+
in: 'query',
44+
required: false,
45+
schema: new OA\Schema(type: 'integer'),
46+
description: 'Filter by upload speed (supports operators like >=, <=, etc.)'
47+
),
48+
new OA\Parameter(
49+
name: 'filter[healthy]',
50+
in: 'query',
51+
required: false,
52+
schema: new OA\Schema(type: 'boolean'),
53+
description: 'Filter by healthy status'
54+
),
55+
new OA\Parameter(
56+
name: 'filter[status]',
57+
in: 'query',
58+
required: false,
59+
schema: new OA\Schema(type: 'string'),
60+
description: 'Filter by status'
61+
),
62+
new OA\Parameter(
63+
name: 'filter[scheduled]',
64+
in: 'query',
65+
required: false,
66+
schema: new OA\Schema(type: 'boolean'),
67+
description: 'Filter by scheduled status'
68+
),
69+
new OA\Parameter(
70+
name: 'filter[start_at]',
71+
in: 'query',
72+
required: false,
73+
schema: new OA\Schema(type: 'string', format: 'date'),
74+
description: 'Filter results created on or after this date (alias for created_at>=)'
75+
),
76+
new OA\Parameter(
77+
name: 'filter[end_at]',
78+
in: 'query',
79+
required: false,
80+
schema: new OA\Schema(type: 'string', format: 'date'),
81+
description: 'Filter results created on or before this date (alias for created_at<=)'
82+
),
83+
new OA\Parameter(
84+
name: 'sort',
85+
in: 'query',
86+
required: false,
87+
schema: new OA\Schema(type: 'string', enum: ['ping', '-ping', 'download', '-download', 'upload', '-upload', 'created_at', '-created_at', 'updated_at', '-updated_at']),
88+
description: 'Sort results by field (prefix with - for descending)'
89+
),
90+
],
1991
responses: [
2092
new OA\Response(
2193
response: Response::HTTP_OK,

openapi.json

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,115 @@
1616
],
1717
"summary": "List all results",
1818
"operationId": "listResults",
19+
"parameters": [
20+
{
21+
"name": "per_page",
22+
"in": "query",
23+
"description": "Number of results per page",
24+
"required": false,
25+
"schema": {
26+
"type": "integer",
27+
"default": 25,
28+
"maximum": 500,
29+
"minimum": 1
30+
}
31+
},
32+
{
33+
"name": "filter[ping]",
34+
"in": "query",
35+
"description": "Filter by ping value (supports operators like >=, <=, etc.)",
36+
"required": false,
37+
"schema": {
38+
"type": "number"
39+
}
40+
},
41+
{
42+
"name": "filter[download]",
43+
"in": "query",
44+
"description": "Filter by download speed (supports operators like >=, <=, etc.)",
45+
"required": false,
46+
"schema": {
47+
"type": "integer"
48+
}
49+
},
50+
{
51+
"name": "filter[upload]",
52+
"in": "query",
53+
"description": "Filter by upload speed (supports operators like >=, <=, etc.)",
54+
"required": false,
55+
"schema": {
56+
"type": "integer"
57+
}
58+
},
59+
{
60+
"name": "filter[healthy]",
61+
"in": "query",
62+
"description": "Filter by healthy status",
63+
"required": false,
64+
"schema": {
65+
"type": "boolean"
66+
}
67+
},
68+
{
69+
"name": "filter[status]",
70+
"in": "query",
71+
"description": "Filter by status",
72+
"required": false,
73+
"schema": {
74+
"type": "string"
75+
}
76+
},
77+
{
78+
"name": "filter[scheduled]",
79+
"in": "query",
80+
"description": "Filter by scheduled status",
81+
"required": false,
82+
"schema": {
83+
"type": "boolean"
84+
}
85+
},
86+
{
87+
"name": "filter[start_at]",
88+
"in": "query",
89+
"description": "Filter results created on or after this date (alias for created_at>=)",
90+
"required": false,
91+
"schema": {
92+
"type": "string",
93+
"format": "date"
94+
}
95+
},
96+
{
97+
"name": "filter[end_at]",
98+
"in": "query",
99+
"description": "Filter results created on or before this date (alias for created_at<=)",
100+
"required": false,
101+
"schema": {
102+
"type": "string",
103+
"format": "date"
104+
}
105+
},
106+
{
107+
"name": "sort",
108+
"in": "query",
109+
"description": "Sort results by field (prefix with - for descending)",
110+
"required": false,
111+
"schema": {
112+
"type": "string",
113+
"enum": [
114+
"ping",
115+
"-ping",
116+
"download",
117+
"-download",
118+
"upload",
119+
"-upload",
120+
"created_at",
121+
"-created_at",
122+
"updated_at",
123+
"-updated_at"
124+
]
125+
}
126+
}
127+
],
19128
"responses": {
20129
"200": {
21130
"description": "OK",

0 commit comments

Comments
 (0)