Skip to content

Commit 6e33790

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Allow to send batches of events in pipelines API (#2737)
Co-authored-by: ci.datadog-api-spec <[email protected]>
1 parent 5292fbc commit 6e33790

File tree

10 files changed

+192
-14
lines changed

10 files changed

+192
-14
lines changed

.generator/schemas/v2/openapi.yaml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5994,7 +5994,7 @@ components:
59945994
description: Request object.
59955995
properties:
59965996
data:
5997-
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestData'
5997+
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestDataSingleOrArray'
59985998
type: object
59995999
CIAppCreatePipelineEventRequestAttributes:
60006000
description: Attributes of the pipeline event to create.
@@ -6030,6 +6030,16 @@ components:
60306030
type:
60316031
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestDataType'
60326032
type: object
6033+
CIAppCreatePipelineEventRequestDataArray:
6034+
description: Array of pipeline events to create in batch.
6035+
items:
6036+
$ref: '#/components/schemas/CIAppCreatePipelineEventRequestData'
6037+
type: array
6038+
CIAppCreatePipelineEventRequestDataSingleOrArray:
6039+
description: Data of the pipeline events to create.
6040+
oneOf:
6041+
- $ref: '#/components/schemas/CIAppCreatePipelineEventRequestData'
6042+
- $ref: '#/components/schemas/CIAppCreatePipelineEventRequestDataArray'
60336043
CIAppCreatePipelineEventRequestDataType:
60346044
default: cipipeline_resource_request
60356045
description: Type of the event.
@@ -51718,6 +51728,9 @@ paths:
5171851728
we support, see [Pipeline Data Model And Execution Types](https://docs.datadoghq.com/continuous_integration/guides/pipeline_data_model/).
5171951729

5172051730

51731+
Multiple events can be sent in an array (up to 1000).
51732+
51733+
5172151734
Pipeline events can be submitted with a timestamp that is up to 18 hours in
5172251735
the past.'
5172351736
operationId: CreateCIAppPipelineEvent
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"2025-09-02T15:10:26.479Z"
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
{
2+
"log": {
3+
"_recordingName": "CI Visibility Pipelines/Send several pipeline events returns \"Request accepted for processing\" response",
4+
"creator": {
5+
"comment": "persister:fs",
6+
"name": "Polly.JS",
7+
"version": "6.0.5"
8+
},
9+
"entries": [
10+
{
11+
"_id": "072988315f64383f647bdf106bca8593",
12+
"_order": 0,
13+
"cache": {},
14+
"request": {
15+
"bodySize": 1069,
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": 509,
30+
"httpVersion": "HTTP/1.1",
31+
"method": "POST",
32+
"postData": {
33+
"mimeType": "application/json",
34+
"params": [],
35+
"text": "{\"data\":[{\"attributes\":{\"provider_name\":\"example-provider\",\"resource\":{\"end\":\"2025-09-02T15:09:56.479Z\",\"git\":{\"author_email\":\"[email protected]\",\"repository_url\":\"https://github.com/DataDog/datadog-agent\",\"sha\":\"7f263865994b76066c4612fd1965215e7dcb4cd2\"},\"level\":\"pipeline\",\"name\":\"Deploy to AWS\",\"partial_retry\":false,\"start\":\"2025-09-02T15:08:26.479Z\",\"status\":\"success\",\"unique_id\":\"3eacb6f3-ff04-4e10-8a9c-46e6d054024a\",\"url\":\"https://my-ci-provider.example/pipelines/my-pipeline/run/1\"}},\"type\":\"cipipeline_resource_request\"},{\"attributes\":{\"provider_name\":\"example-provider\",\"resource\":{\"end\":\"2025-09-02T15:09:41.479Z\",\"git\":{\"author_email\":\"[email protected]\",\"repository_url\":\"https://github.com/DataDog/datadog-agent\",\"sha\":\"9a4f7c28b3e5d12f8e6c9b2a5d8f3e1c7b4a6d9e\"},\"level\":\"pipeline\",\"name\":\"Deploy to Production\",\"partial_retry\":false,\"start\":\"2025-09-02T15:07:26.479Z\",\"status\":\"success\",\"unique_id\":\"7b2c8f9e-aa15-4d22-9c7d-83f4e065138b\",\"url\":\"https://my-ci-provider.example/pipelines/prod-pipeline/run/2\"}},\"type\":\"cipipeline_resource_request\"}]}"
36+
},
37+
"queryString": [],
38+
"url": "https://api.datadoghq.com/api/v2/ci/pipeline"
39+
},
40+
"response": {
41+
"bodySize": 13,
42+
"content": {
43+
"mimeType": "application/vnd.api+json",
44+
"size": 13,
45+
"text": "{\"data\":null}"
46+
},
47+
"cookies": [],
48+
"headers": [
49+
{
50+
"name": "content-type",
51+
"value": "application/vnd.api+json"
52+
}
53+
],
54+
"headersSize": 676,
55+
"httpVersion": "HTTP/1.1",
56+
"redirectURL": "",
57+
"status": 202,
58+
"statusText": "Accepted"
59+
},
60+
"startedDateTime": "2025-09-02T15:10:26.749Z",
61+
"time": 396
62+
}
63+
],
64+
"pages": [],
65+
"version": "1.2"
66+
}
67+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
/**
2+
* Send several pipeline events returns "Request accepted for processing" response
3+
*/
4+
5+
import { client, v2 } from "@datadog/datadog-api-client";
6+
7+
const configuration = client.createConfiguration();
8+
const apiInstance = new v2.CIVisibilityPipelinesApi(configuration);
9+
10+
const params: v2.CIVisibilityPipelinesApiCreateCIAppPipelineEventRequest = {
11+
body: {
12+
data: [
13+
{
14+
attributes: {
15+
providerName: "example-provider",
16+
resource: {
17+
level: "pipeline",
18+
uniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
19+
name: "Deploy to AWS",
20+
url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
21+
start: new Date(new Date().getTime() + -120 * 1000),
22+
end: new Date(new Date().getTime() + -30 * 1000),
23+
status: "success",
24+
partialRetry: false,
25+
git: {
26+
repositoryUrl: "https://github.com/DataDog/datadog-agent",
27+
sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
28+
authorEmail: "[email protected]",
29+
},
30+
},
31+
},
32+
type: "cipipeline_resource_request",
33+
},
34+
{
35+
attributes: {
36+
providerName: "example-provider",
37+
resource: {
38+
level: "pipeline",
39+
uniqueId: "7b2c8f9e-aa15-4d22-9c7d-83f4e065138b",
40+
name: "Deploy to Production",
41+
url: "https://my-ci-provider.example/pipelines/prod-pipeline/run/2",
42+
start: new Date(new Date().getTime() + -180 * 1000),
43+
end: new Date(new Date().getTime() + -45 * 1000),
44+
status: "success",
45+
partialRetry: false,
46+
git: {
47+
repositoryUrl: "https://github.com/DataDog/datadog-agent",
48+
sha: "9a4f7c28b3e5d12f8e6c9b2a5d8f3e1c7b4a6d9e",
49+
authorEmail: "[email protected]",
50+
},
51+
},
52+
},
53+
type: "cipipeline_resource_request",
54+
},
55+
],
56+
},
57+
};
58+
59+
apiInstance
60+
.createCIAppPipelineEvent(params)
61+
.then((data: any) => {
62+
console.log(
63+
"API called successfully. Returned data: " + JSON.stringify(data)
64+
);
65+
})
66+
.catch((error: any) => console.error(error));

features/v2/ci_visibility_pipelines.feature

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Feature: CI Visibility Pipelines
1717
When the request is sent
1818
Then the response status is 400 Bad Request
1919

20-
@team:DataDog/ci-app-backend
20+
@skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
2121
Scenario: Aggregate pipelines events returns "OK" response
2222
Given a valid "appKeyAuth" key in the system
2323
And new "AggregateCIAppPipelineEvents" request
@@ -33,7 +33,7 @@ Feature: CI Visibility Pipelines
3333
When the request is sent
3434
Then the response status is 400 Bad Request
3535

36-
@team:DataDog/ci-app-backend
36+
@skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
3737
Scenario: Get a list of pipelines events returns "OK" response
3838
Given a valid "appKeyAuth" key in the system
3939
And new "ListCIAppPipelineEvents" request
@@ -44,7 +44,7 @@ Feature: CI Visibility Pipelines
4444
When the request is sent
4545
Then the response status is 200 OK
4646

47-
@replay-only @skip-validation @team:DataDog/ci-app-backend @with-pagination
47+
@replay-only @skip-java @skip-python @skip-typescript @skip-validation @team:DataDog/ci-app-backend @with-pagination
4848
Scenario: Get a list of pipelines events returns "OK" response with pagination
4949
Given a valid "appKeyAuth" key in the system
5050
And new "ListCIAppPipelineEvents" request
@@ -63,15 +63,15 @@ Feature: CI Visibility Pipelines
6363
When the request is sent
6464
Then the response status is 400 Bad Request
6565

66-
@team:DataDog/ci-app-backend
66+
@skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
6767
Scenario: Search pipelines events returns "OK" response
6868
Given a valid "appKeyAuth" key in the system
6969
And new "SearchCIAppPipelineEvents" request
7070
And body with value {"filter": {"from": "now-15m", "query": "@ci.provider.name:github AND @ci.status:error", "to": "now"}, "options": {"timezone": "GMT"}, "page": {"limit": 5}, "sort": "timestamp"}
7171
When the request is sent
7272
Then the response status is 200 OK
7373

74-
@replay-only @skip-validation @team:DataDog/ci-app-backend @with-pagination
74+
@replay-only @skip-java @skip-python @skip-typescript @skip-validation @team:DataDog/ci-app-backend @with-pagination
7575
Scenario: Search pipelines events returns "OK" response with pagination
7676
Given a valid "appKeyAuth" key in the system
7777
And new "SearchCIAppPipelineEvents" request
@@ -101,30 +101,37 @@ Feature: CI Visibility Pipelines
101101
When the request is sent
102102
Then the response status is 408 Request Timeout
103103

104-
@team:DataDog/ci-app-backend
104+
@skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
105105
Scenario: Send pipeline event returns "Request accepted for processing" response
106106
Given new "CreateCIAppPipelineEvent" request
107107
And body with value {"data": {"attributes": {"resource": {"level": "pipeline","unique_id": "3eacb6f3-ff04-4e10-8a9c-46e6d054024a","name": "Deploy to AWS","url": "https://my-ci-provider.example/pipelines/my-pipeline/run/1","start": "{{ timeISO('now - 120s') }}","end": "{{ timeISO('now - 30s') }}","status": "success","partial_retry": false,"git": {"repository_url": "https://github.com/DataDog/datadog-agent","sha": "7f263865994b76066c4612fd1965215e7dcb4cd2","author_email": "[email protected]"}}},"type": "cipipeline_resource_request"}}
108108
When the request is sent
109109
Then the response status is 202 Request accepted for processing
110110

111-
@team:DataDog/ci-app-backend
111+
@skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
112112
Scenario: Send pipeline event with custom provider returns "Request accepted for processing" response
113113
Given new "CreateCIAppPipelineEvent" request
114114
And body with value {"data": {"attributes": {"provider_name": "example-provider", "resource": {"level": "pipeline","unique_id": "3eacb6f3-ff04-4e10-8a9c-46e6d054024a","name": "Deploy to AWS","url": "https://my-ci-provider.example/pipelines/my-pipeline/run/1","start": "{{ timeISO('now - 120s') }}","end": "{{ timeISO('now - 30s') }}","status": "success","partial_retry": false,"git": {"repository_url": "https://github.com/DataDog/datadog-agent","sha": "7f263865994b76066c4612fd1965215e7dcb4cd2","author_email": "[email protected]"}}},"type": "cipipeline_resource_request"}}
115115
When the request is sent
116116
Then the response status is 202 Request accepted for processing
117117

118-
@skip @team:DataDog/ci-app-backend
118+
@skip @skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
119119
Scenario: Send pipeline job event returns "Request accepted for processing" response
120120
Given new "CreateCIAppPipelineEvent" request
121121
And body with value {"data": {"attributes": {"resource": {"level": "job", "id": "cf9456de-8b9e-4c27-aa79-27b1e78c1a33", "name": "Build image", "pipeline_unique_id": "3eacb6f3-ff04-4e10-8a9c-46e6d054024a", "pipeline_name": "Deploy to AWS", "start": "{{ timeISO('now - 120s') }}", "end": "{{ timeISO('now - 30s') }}", "status": "error", "url": "https://my-ci-provider.example/jobs/my-jobs/run/1"}}, "type": "cipipeline_resource_request"}}
122122
When the request is sent
123123
Then the response status is 202 Request accepted for processing
124124

125-
@team:DataDog/ci-app-backend
125+
@skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
126126
Scenario: Send running pipeline event returns "Request accepted for processing" response
127127
Given new "CreateCIAppPipelineEvent" request
128128
And body with value {"data": {"attributes": {"resource": {"level": "pipeline","unique_id": "3eacb6f3-ff04-4e10-8a9c-46e6d054024a","name": "Deploy to AWS","url": "https://my-ci-provider.example/pipelines/my-pipeline/run/1","start": "{{ timeISO('now - 120s') }}","status": "running","partial_retry": false,"git": {"repository_url": "https://github.com/DataDog/datadog-agent","sha": "7f263865994b76066c4612fd1965215e7dcb4cd2","author_email": "[email protected]"}}},"type": "cipipeline_resource_request"}}
129129
When the request is sent
130130
Then the response status is 202 Request accepted for processing
131+
132+
@skip-java @skip-python @skip-typescript @team:DataDog/ci-app-backend
133+
Scenario: Send several pipeline events returns "Request accepted for processing" response
134+
Given new "CreateCIAppPipelineEvent" request
135+
And body with value {"data": [{"attributes": {"provider_name": "example-provider", "resource": {"level": "pipeline","unique_id": "3eacb6f3-ff04-4e10-8a9c-46e6d054024a","name": "Deploy to AWS","url": "https://my-ci-provider.example/pipelines/my-pipeline/run/1","start": "{{ timeISO('now - 120s') }}","end": "{{ timeISO('now - 30s') }}","status": "success","partial_retry": false,"git": {"repository_url": "https://github.com/DataDog/datadog-agent","sha": "7f263865994b76066c4612fd1965215e7dcb4cd2","author_email": "[email protected]"}}},"type": "cipipeline_resource_request"},{"attributes": {"provider_name": "example-provider", "resource": {"level": "pipeline","unique_id": "7b2c8f9e-aa15-4d22-9c7d-83f4e065138b","name": "Deploy to Production","url": "https://my-ci-provider.example/pipelines/prod-pipeline/run/2","start": "{{ timeISO('now - 180s') }}","end": "{{ timeISO('now - 45s') }}","status": "success","partial_retry": false,"git": {"repository_url": "https://github.com/DataDog/datadog-agent","sha": "9a4f7c28b3e5d12f8e6c9b2a5d8f3e1c7b4a6d9e","author_email": "[email protected]"}}},"type": "cipipeline_resource_request"}]}
136+
When the request is sent
137+
Then the response status is 202 Request accepted for processing

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,8 @@ export class CIVisibilityPipelinesApi {
574574
/**
575575
* Send your pipeline event to your Datadog platform over HTTP. For details about how pipeline executions are modeled and what execution types we support, see [Pipeline Data Model And Execution Types](https://docs.datadoghq.com/continuous_integration/guides/pipeline_data_model/).
576576
*
577+
* Multiple events can be sent in an array (up to 1000).
578+
*
577579
* Pipeline events can be submitted with a timestamp that is up to 18 hours in the past.
578580
* @param param The request object
579581
*/

packages/datadog-api-client-v2/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,6 +1194,7 @@ export { CIAppCreatePipelineEventRequest } from "./models/CIAppCreatePipelineEve
11941194
export { CIAppCreatePipelineEventRequestAttributes } from "./models/CIAppCreatePipelineEventRequestAttributes";
11951195
export { CIAppCreatePipelineEventRequestAttributesResource } from "./models/CIAppCreatePipelineEventRequestAttributesResource";
11961196
export { CIAppCreatePipelineEventRequestData } from "./models/CIAppCreatePipelineEventRequestData";
1197+
export { CIAppCreatePipelineEventRequestDataSingleOrArray } from "./models/CIAppCreatePipelineEventRequestDataSingleOrArray";
11971198
export { CIAppCreatePipelineEventRequestDataType } from "./models/CIAppCreatePipelineEventRequestDataType";
11981199
export { CIAppEventAttributes } from "./models/CIAppEventAttributes";
11991200
export { CIAppGitInfo } from "./models/CIAppGitInfo";

packages/datadog-api-client-v2/models/CIAppCreatePipelineEventRequest.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* This product includes software developed at Datadog (https://www.datadoghq.com/).
44
* Copyright 2020-Present Datadog, Inc.
55
*/
6-
import { CIAppCreatePipelineEventRequestData } from "./CIAppCreatePipelineEventRequestData";
6+
import { CIAppCreatePipelineEventRequestDataSingleOrArray } from "./CIAppCreatePipelineEventRequestDataSingleOrArray";
77

88
import { AttributeTypeMap } from "../../datadog-api-client-common/util";
99

@@ -12,9 +12,9 @@ import { AttributeTypeMap } from "../../datadog-api-client-common/util";
1212
*/
1313
export class CIAppCreatePipelineEventRequest {
1414
/**
15-
* Data of the pipeline event to create.
15+
* Data of the pipeline events to create.
1616
*/
17-
"data"?: CIAppCreatePipelineEventRequestData;
17+
"data"?: CIAppCreatePipelineEventRequestDataSingleOrArray;
1818

1919
/**
2020
* A container for additional, undeclared properties.
@@ -34,7 +34,7 @@ export class CIAppCreatePipelineEventRequest {
3434
static readonly attributeTypeMap: AttributeTypeMap = {
3535
data: {
3636
baseName: "data",
37-
type: "CIAppCreatePipelineEventRequestData",
37+
type: "CIAppCreatePipelineEventRequestDataSingleOrArray",
3838
},
3939
additionalProperties: {
4040
baseName: "additionalProperties",
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/**
2+
* Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License.
3+
* This product includes software developed at Datadog (https://www.datadoghq.com/).
4+
* Copyright 2020-Present Datadog, Inc.
5+
*/
6+
import { CIAppCreatePipelineEventRequestData } from "./CIAppCreatePipelineEventRequestData";
7+
8+
import { UnparsedObject } from "../../datadog-api-client-common/util";
9+
10+
/**
11+
* Data of the pipeline events to create.
12+
*/
13+
14+
export type CIAppCreatePipelineEventRequestDataSingleOrArray =
15+
| CIAppCreatePipelineEventRequestData
16+
| Array<CIAppCreatePipelineEventRequestData>
17+
| UnparsedObject;

packages/datadog-api-client-v2/models/ObjectSerializer.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6474,6 +6474,10 @@ const oneOfMap: { [index: string]: string[] } = {
64746474
"CIAppPipelineEventJob",
64756475
"CIAppPipelineEventStep",
64766476
],
6477+
CIAppCreatePipelineEventRequestDataSingleOrArray: [
6478+
"CIAppCreatePipelineEventRequestData",
6479+
"Array<CIAppCreatePipelineEventRequestData>",
6480+
],
64776481
CIAppGroupByMissing: ["string", "number"],
64786482
CIAppGroupByTotal: ["boolean", "string", "number"],
64796483
CIAppPipelineEventPipeline: [

0 commit comments

Comments
 (0)