Skip to content

Commit 77a185d

Browse files
api-clients-generation-pipeline[bot]skarimoci.datadog-api-spec
authored
Add Synthetics endpoint to fetch uptimes in API spec (#1792)
* add support for top level indexing * Regenerate client from commit 3b4747f4 of spec repo --------- Co-authored-by: Sherzod Karimov <sherzod.karimov@datadoghq.com> Co-authored-by: api-clients-generation-pipeline[bot] <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com> Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 82e2cbc commit 77a185d

File tree

17 files changed

+730
-4
lines changed

17 files changed

+730
-4
lines changed

.apigentools-info

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
"spec_versions": {
55
"v1": {
66
"apigentools_version": "1.6.6",
7-
"regenerated": "2024-10-02 13:39:26.970748",
8-
"spec_repo_commit": "e02e4f4c"
7+
"regenerated": "2024-10-02 14:33:57.486086",
8+
"spec_repo_commit": "3b4747f4"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2024-10-02 13:39:26.985809",
13-
"spec_repo_commit": "e02e4f4c"
12+
"regenerated": "2024-10-02 14:33:57.582216",
13+
"spec_repo_commit": "3b4747f4"
1414
}
1515
}
1616
}

.generator/schemas/v1/openapi.yaml

+143
Original file line numberDiff line numberDiff line change
@@ -15194,6 +15194,32 @@ components:
1519415194
- EDGE_LAPTOP_LARGE
1519515195
- EDGE_TABLET
1519615196
- EDGE_MOBILE_SMALL
15197+
SyntheticsFetchUptimesPayload:
15198+
description: Object containing IDs of Synthetic tests and a timeframe.
15199+
properties:
15200+
from_ts:
15201+
description: Timestamp in seconds (Unix epoch) for the start of uptime.
15202+
example: 0
15203+
format: int64
15204+
type: integer
15205+
public_ids:
15206+
description: An array of Synthetic test IDs you want to delete.
15207+
example: []
15208+
items:
15209+
description: A Synthetic test ID.
15210+
example: abc-def-123
15211+
type: string
15212+
type: array
15213+
to_ts:
15214+
description: Timestamp in seconds (Unix epoch) for the end of uptime.
15215+
example: 0
15216+
format: int64
15217+
type: integer
15218+
required:
15219+
- from_ts
15220+
- to_ts
15221+
- public_ids
15222+
type: object
1519715223
SyntheticsGetAPITestLatestResultsResponse:
1519815224
description: Object with the latest Synthetic API test run.
1519915225
properties:
@@ -17283,6 +17309,24 @@ components:
1728317309
description: String Port number to use when performing the test. Supports templated
1728417310
variables.
1728517311
type: string
17312+
SyntheticsTestUptime:
17313+
description: Object containing the uptime for a Synthetic test ID.
17314+
properties:
17315+
from_ts:
17316+
description: Timestamp in seconds for the start of uptime.
17317+
format: int64
17318+
type: integer
17319+
overall:
17320+
$ref: '#/components/schemas/SyntheticsUptime'
17321+
public_id:
17322+
description: A Synthetic test ID.
17323+
example: abc-def-123
17324+
type: string
17325+
to_ts:
17326+
description: Timestamp in seconds for the end of uptime.
17327+
format: int64
17328+
type: integer
17329+
type: object
1728617330
SyntheticsTiming:
1728717331
description: 'Object containing all metrics and their values collected for a
1728817332
Synthetic API test.
@@ -17406,6 +17450,62 @@ components:
1740617450
new_status:
1740717451
$ref: '#/components/schemas/SyntheticsTestPauseStatus'
1740817452
type: object
17453+
SyntheticsUptime:
17454+
description: Object containing the uptime information.
17455+
properties:
17456+
errors:
17457+
description: An array of error objects returned while querying the history
17458+
data for the service level objective.
17459+
items:
17460+
$ref: '#/components/schemas/SLOHistoryResponseErrorWithType'
17461+
nullable: true
17462+
type: array
17463+
group:
17464+
description: The location name
17465+
example: name
17466+
type: string
17467+
history:
17468+
description: 'The state transition history for the monitor, represented
17469+
as an array of
17470+
17471+
pairs. Each pair is an array where the first element is the transition
17472+
timestamp
17473+
17474+
in Unix epoch format (integer) and the second element is the state (integer).
17475+
17476+
For the state, an integer value of `0` indicates uptime, `1` indicates
17477+
downtime,
17478+
17479+
and `2` indicates no data.'
17480+
example:
17481+
- - 1579212382
17482+
- 0
17483+
items:
17484+
description: An array of transitions
17485+
example:
17486+
- 1579212382
17487+
- 0
17488+
items:
17489+
description: A timeseries data point which is a tuple of (timestamp,
17490+
value).
17491+
format: double
17492+
type: number
17493+
maxItems: 2
17494+
minItems: 2
17495+
type: array
17496+
type: array
17497+
span_precision:
17498+
description: The number of decimal places to which the SLI value is accurate
17499+
for the given from-to timestamps.
17500+
example: 2.0
17501+
format: double
17502+
type: number
17503+
uptime:
17504+
description: The overall uptime.
17505+
example: 99.99
17506+
format: double
17507+
type: number
17508+
type: object
1740917509
SyntheticsVariableParser:
1741017510
description: Details of the parser to use for the global variable.
1741117511
example:
@@ -32934,6 +33034,49 @@ paths:
3293433034
operator: OR
3293533035
permissions:
3293633036
- synthetics_write
33037+
/api/v1/synthetics/tests/uptimes:
33038+
post:
33039+
description: Fetch uptime for multiple Synthetic tests by ID.
33040+
operationId: FetchUptimes
33041+
requestBody:
33042+
content:
33043+
application/json:
33044+
schema:
33045+
$ref: '#/components/schemas/SyntheticsFetchUptimesPayload'
33046+
description: Public ID list of the Synthetic tests and timeframe.
33047+
required: true
33048+
responses:
33049+
'200':
33050+
content:
33051+
application/json:
33052+
schema:
33053+
items:
33054+
$ref: '#/components/schemas/SyntheticsTestUptime'
33055+
type: array
33056+
description: OK.
33057+
'400':
33058+
content:
33059+
application/json:
33060+
schema:
33061+
$ref: '#/components/schemas/APIErrorResponse'
33062+
description: '- JSON format is wrong'
33063+
'403':
33064+
content:
33065+
application/json:
33066+
schema:
33067+
$ref: '#/components/schemas/APIErrorResponse'
33068+
description: Forbidden
33069+
'429':
33070+
$ref: '#/components/responses/TooManyRequestsResponse'
33071+
security:
33072+
- apiKeyAuth: []
33073+
appKeyAuth: []
33074+
- AuthZ:
33075+
- synthetics_read
33076+
summary: Fetch uptime for multiple tests
33077+
tags:
33078+
- Synthetics
33079+
x-codegen-request-body-name: body
3293733080
/api/v1/synthetics/tests/{public_id}:
3293833081
get:
3293933082
description: Get the detailed configuration associated with a Synthetic test.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"2024-10-02T14:22:00.562Z"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"log": {
3+
"_recordingName": "Synthetics/Fetch uptime for multiple tests returns \"- JSON format is wrong\" response",
4+
"creator": {
5+
"comment": "persister:fs",
6+
"name": "Polly.JS",
7+
"version": "6.0.5"
8+
},
9+
"entries": [
10+
{
11+
"_id": "23da9bb74dd412c237ee8406f9945944",
12+
"_order": 0,
13+
"cache": {},
14+
"request": {
15+
"bodySize": 39,
16+
"cookies": [],
17+
"headers": [
18+
{
19+
"_fromType": "array",
20+
"name": "accept",
21+
"value": "application/json"
22+
},
23+
{
24+
"_fromType": "array",
25+
"name": "content-type",
26+
"value": "application/json"
27+
}
28+
],
29+
"headersSize": 570,
30+
"httpVersion": "HTTP/1.1",
31+
"method": "POST",
32+
"postData": {
33+
"mimeType": "application/json",
34+
"params": [],
35+
"text": "{\"from_ts\":0,\"public_ids\":[],\"to_ts\":0}"
36+
},
37+
"queryString": [],
38+
"url": "https://api.datadoghq.com/api/v1/synthetics/tests/uptimes"
39+
},
40+
"response": {
41+
"bodySize": 79,
42+
"content": {
43+
"mimeType": "application/json",
44+
"size": 79,
45+
"text": "{\"errors\":[\"Minimum number of elements in parameter 'public_ids' should be 1\"]}"
46+
},
47+
"cookies": [],
48+
"headers": [
49+
{
50+
"name": "content-type",
51+
"value": "application/json"
52+
}
53+
],
54+
"headersSize": 664,
55+
"httpVersion": "HTTP/1.1",
56+
"redirectURL": "",
57+
"status": 400,
58+
"statusText": "Bad Request"
59+
},
60+
"startedDateTime": "2024-10-02T14:22:00.573Z",
61+
"time": 81
62+
}
63+
],
64+
"pages": [],
65+
"version": "1.2"
66+
}
67+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"2024-09-11T13:09:28.349Z"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"log": {
3+
"_recordingName": "Synthetics/Fetch uptime for multiple tests returns \"OK.\" response",
4+
"creator": {
5+
"comment": "persister:fs",
6+
"name": "Polly.JS",
7+
"version": "6.0.5"
8+
},
9+
"entries": [
10+
{
11+
"_id": "5bb349ef4e2317c9387395651078521d",
12+
"_order": 0,
13+
"cache": {},
14+
"request": {
15+
"bodySize": 70,
16+
"cookies": [],
17+
"headers": [
18+
{
19+
"_fromType": "array",
20+
"name": "accept",
21+
"value": "application/json"
22+
},
23+
{
24+
"_fromType": "array",
25+
"name": "content-type",
26+
"value": "application/json"
27+
}
28+
],
29+
"headersSize": 570,
30+
"httpVersion": "HTTP/1.1",
31+
"method": "POST",
32+
"postData": {
33+
"mimeType": "application/json",
34+
"params": [],
35+
"text": "{\"from_ts\":1726041488,\"public_ids\":[\"p8m-9gw-nte\"],\"to_ts\":1726055954}"
36+
},
37+
"queryString": [],
38+
"url": "https://api.datadoghq.com/api/v1/synthetics/tests/uptimes"
39+
},
40+
"response": {
41+
"bodySize": 314,
42+
"content": {
43+
"mimeType": "application/json",
44+
"size": 314,
45+
"text": "[{\"from_ts\":1726041488,\"to_ts\":1726055954,\"overall\":{\"name\":\"[Synthetics] Synthetics test\",\"preview\":false,\"monitor_type\":\"synthetics alert\",\"monitor_modified\":1726060063,\"errors\":null,\"span_precision\":0,\"history\":[[1726004543,0],[1726053503,1]],\"uptime\":83.05682373046875},\"public_id\":\"p8m-9gw-nte\",\"groups\":[]}]\n"
46+
},
47+
"cookies": [],
48+
"headers": [
49+
{
50+
"name": "content-type",
51+
"value": "application/json"
52+
}
53+
],
54+
"headersSize": 665,
55+
"httpVersion": "HTTP/1.1",
56+
"redirectURL": "",
57+
"status": 200,
58+
"statusText": "OK"
59+
},
60+
"startedDateTime": "2024-09-11T13:09:28.358Z",
61+
"time": 508
62+
}
63+
],
64+
"pages": [],
65+
"version": "1.2"
66+
}
67+
}
+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/**
2+
* Fetch uptime for multiple tests returns "OK." response
3+
*/
4+
5+
import { client, v1 } from "@datadog/datadog-api-client";
6+
7+
const configuration = client.createConfiguration();
8+
const apiInstance = new v1.SyntheticsApi(configuration);
9+
10+
const params: v1.SyntheticsApiFetchUptimesRequest = {
11+
body: {
12+
fromTs: 1726041488,
13+
publicIds: ["p8m-9gw-nte"],
14+
toTs: 1726055954,
15+
},
16+
};
17+
18+
apiInstance
19+
.fetchUptimes(params)
20+
.then((data: v1.SyntheticsTestUptime[]) => {
21+
console.log(
22+
"API called successfully. Returned data: " + JSON.stringify(data)
23+
);
24+
})
25+
.catch((error: any) => console.error(error));

features/support/scenarios_model_mapping.ts

+7
Original file line numberDiff line numberDiff line change
@@ -2108,6 +2108,13 @@ export const ScenariosModelMappings: {[key: string]: {[key: string]: any}} = {
21082108
},
21092109
"operationResponseType": "SyntheticsTriggerCITestsResponse",
21102110
},
2111+
"v1.FetchUptimes": {
2112+
"body": {
2113+
"type": "SyntheticsFetchUptimesPayload",
2114+
"format": "",
2115+
},
2116+
"operationResponseType": "Array<SyntheticsTestUptime>",
2117+
},
21112118
"v1.GetTest": {
21122119
"publicId": {
21132120
"type": "string",

features/support/templating.ts

+3
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ function pathLookup(data: any, dottedPath: string): any {
125125
continue;
126126
}
127127
for (const part of dotPath.split("[")) {
128+
if (part === "") {
129+
continue;
130+
}
128131
if (part.includes("]")) {
129132
const results = result as any[];
130133
result = results[parseInt(part)];

0 commit comments

Comments
 (0)