Skip to content

Commit e136a4c

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add page[size] and page[number] parameters to Downtime docs (#1466)
Co-authored-by: ci.datadog-api-spec <[email protected]> Co-authored-by: api-clients-generation-pipeline[bot] <54105614+api-clients-generation-pipeline[bot]@users.noreply.github.com>
1 parent b55eb4a commit e136a4c

File tree

6 files changed

+131
-4
lines changed

6 files changed

+131
-4
lines changed

.apigentools-info

Lines changed: 4 additions & 4 deletions
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-01-02 15:20:16.768476",
8-
"spec_repo_commit": "415bb394"
7+
"regenerated": "2024-01-02 15:59:28.663017",
8+
"spec_repo_commit": "d5ac2418"
99
},
1010
"v2": {
1111
"apigentools_version": "1.6.6",
12-
"regenerated": "2024-01-02 15:20:16.783957",
13-
"spec_repo_commit": "415bb394"
12+
"regenerated": "2024-01-02 15:59:28.678394",
13+
"spec_repo_commit": "d5ac2418"
1414
}
1515
}
1616
}

.generator/schemas/v2/openapi.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26896,6 +26896,16 @@ paths:
2689626896
schema:
2689726897
format: int64
2689826898
type: integer
26899+
- $ref: '#/components/parameters/PageOffset'
26900+
- description: Maximum number of downtimes in the response.
26901+
example: 100
26902+
in: query
26903+
name: page[limit]
26904+
required: false
26905+
schema:
26906+
default: 30
26907+
format: int64
26908+
type: integer
2689926909
responses:
2690026910
'200':
2690126911
content:
@@ -26920,6 +26930,10 @@ paths:
2692026930
tags:
2692126931
- Downtimes
2692226932
x-codegen-request-body-name: body
26933+
x-pagination:
26934+
limitParam: page[limit]
26935+
pageOffsetParam: page[offset]
26936+
resultsPath: data
2692326937
/api/v2/permissions:
2692426938
get:
2692526939
description: Returns a list of all permissions, including name, description,
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* Get active downtimes for a monitor returns "OK" response with pagination
3+
*/
4+
5+
import { client, v2 } from "@datadog/datadog-api-client";
6+
7+
const configuration = client.createConfiguration();
8+
const apiInstance = new v2.DowntimesApi(configuration);
9+
10+
const params: v2.DowntimesApiListMonitorDowntimesRequest = {
11+
monitorId: 9223372036854775807,
12+
};
13+
14+
(async () => {
15+
try {
16+
for await (const item of apiInstance.listMonitorDowntimesWithPagination(
17+
params
18+
)) {
19+
console.log(item);
20+
}
21+
} catch (error) {
22+
console.error(error);
23+
}
24+
})();

features/support/scenarios_model_mapping.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3146,6 +3146,14 @@ export const ScenariosModelMappings: {[key: string]: {[key: string]: any}} = {
31463146
"type": "number",
31473147
"format": "int64",
31483148
},
3149+
"pageOffset": {
3150+
"type": "number",
3151+
"format": "int64",
3152+
},
3153+
"pageLimit": {
3154+
"type": "number",
3155+
"format": "int64",
3156+
},
31493157
"operationResponseType": "MonitorDowntimeMatchResponse",
31503158
},
31513159
"v2.ListEvents": {

features/v2/downtimes.feature

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ Feature: Downtimes
6767
And the response "data" has length 1
6868
And the response "data" has item with field "id" with value "aeefc6a8-15d8-11ee-a8ef-da7ad0900002"
6969

70+
@generated @skip @team:DataDog/monitor-app @with-pagination
71+
Scenario: Get active downtimes for a monitor returns "OK" response with pagination
72+
Given new "ListMonitorDowntimes" request
73+
And request contains "monitor_id" parameter from "REPLACE.ME"
74+
When the request with pagination is sent
75+
Then the response status is 200 OK
76+
7077
@team:DataDog/monitor-app
7178
Scenario: Get all downtimes for a monitor returns "Monitor Not Found error" response
7279
Given new "ListMonitorDowntimes" request

packages/datadog-api-client-v2/apis/DowntimesApi.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { DowntimeResponseData } from "../models/DowntimeResponseData";
2323
import { DowntimeUpdateRequest } from "../models/DowntimeUpdateRequest";
2424
import { ListDowntimesResponse } from "../models/ListDowntimesResponse";
2525
import { MonitorDowntimeMatchResponse } from "../models/MonitorDowntimeMatchResponse";
26+
import { MonitorDowntimeMatchResponseData } from "../models/MonitorDowntimeMatchResponseData";
2627

2728
export class DowntimesApiRequestFactory extends BaseAPIRequestFactory {
2829
public async cancelDowntime(
@@ -201,6 +202,8 @@ export class DowntimesApiRequestFactory extends BaseAPIRequestFactory {
201202

202203
public async listMonitorDowntimes(
203204
monitorId: number,
205+
pageOffset?: number,
206+
pageLimit?: number,
204207
_options?: Configuration
205208
): Promise<RequestContext> {
206209
const _config = _options || this.configuration;
@@ -224,6 +227,20 @@ export class DowntimesApiRequestFactory extends BaseAPIRequestFactory {
224227
requestContext.setHeaderParam("Accept", "application/json");
225228
requestContext.setHttpConfig(_config.httpConfig);
226229

230+
// Query Params
231+
if (pageOffset !== undefined) {
232+
requestContext.setQueryParam(
233+
"page[offset]",
234+
ObjectSerializer.serialize(pageOffset, "number", "int64")
235+
);
236+
}
237+
if (pageLimit !== undefined) {
238+
requestContext.setQueryParam(
239+
"page[limit]",
240+
ObjectSerializer.serialize(pageLimit, "number", "int64")
241+
);
242+
}
243+
227244
// Apply auth methods
228245
applySecurityAuthentication(_config, requestContext, [
229246
"AuthZ",
@@ -708,6 +725,16 @@ export interface DowntimesApiListMonitorDowntimesRequest {
708725
* @type number
709726
*/
710727
monitorId: number;
728+
/**
729+
* Specific offset to use as the beginning of the returned page.
730+
* @type number
731+
*/
732+
pageOffset?: number;
733+
/**
734+
* Maximum number of downtimes in the response.
735+
* @type number
736+
*/
737+
pageLimit?: number;
711738
}
712739

713740
export interface DowntimesApiUpdateDowntimeRequest {
@@ -884,6 +911,8 @@ export class DowntimesApi {
884911
): Promise<MonitorDowntimeMatchResponse> {
885912
const requestContextPromise = this.requestFactory.listMonitorDowntimes(
886913
param.monitorId,
914+
param.pageOffset,
915+
param.pageLimit,
887916
options
888917
);
889918
return requestContextPromise.then((requestContext) => {
@@ -895,6 +924,51 @@ export class DowntimesApi {
895924
});
896925
}
897926

927+
/**
928+
* Provide a paginated version of listMonitorDowntimes returning a generator with all the items.
929+
*/
930+
public async *listMonitorDowntimesWithPagination(
931+
param: DowntimesApiListMonitorDowntimesRequest,
932+
options?: Configuration
933+
): AsyncGenerator<MonitorDowntimeMatchResponseData> {
934+
let pageSize = 30;
935+
if (param.pageLimit !== undefined) {
936+
pageSize = param.pageLimit;
937+
}
938+
param.pageLimit = pageSize;
939+
while (true) {
940+
const requestContext = await this.requestFactory.listMonitorDowntimes(
941+
param.monitorId,
942+
param.pageOffset,
943+
param.pageLimit,
944+
options
945+
);
946+
const responseContext = await this.configuration.httpApi.send(
947+
requestContext
948+
);
949+
950+
const response = await this.responseProcessor.listMonitorDowntimes(
951+
responseContext
952+
);
953+
const responseData = response.data;
954+
if (responseData === undefined) {
955+
break;
956+
}
957+
const results = responseData;
958+
for (const item of results) {
959+
yield item;
960+
}
961+
if (results.length < pageSize) {
962+
break;
963+
}
964+
if (param.pageOffset === undefined) {
965+
param.pageOffset = pageSize;
966+
} else {
967+
param.pageOffset = param.pageOffset + pageSize;
968+
}
969+
}
970+
}
971+
898972
/**
899973
* Update a downtime by `downtime_id`.
900974
* @param param The request object

0 commit comments

Comments
 (0)