- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Search or aggregate your CI Visibility pipeline events and send them to your Datadog site over HTTP. See the CI Pipeline Visibility in Datadog page for more information.
POST https://api.ap1.datadoghq.com/api/v2/ci/pipelinehttps://api.datadoghq.eu/api/v2/ci/pipelinehttps://api.ddog-gov.com/api/v2/ci/pipelinehttps://api.datadoghq.com/api/v2/ci/pipelinehttps://api.us3.datadoghq.com/api/v2/ci/pipelinehttps://api.us5.datadoghq.com/api/v2/ci/pipeline
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.
Pipeline events can be submitted with a timestamp that is up to 18 hours in the past.
항목
유형
설명
data
object
Data of the pipeline event to create.
attributes
object
Attributes of the pipeline event to create.
env
string
The Datadog environment.
resource [required]
<oneOf>
Details of the CI pipeline event.
Option 1
<oneOf>
Details of the top level pipeline, build, or workflow of your CI.
Option 1
object
Details of a finished pipeline.
end [required]
date-time
Time when the pipeline run finished. It cannot be older than 18 hours in the past from the current time. The time format must be RFC3339.
error
object
Contains information of the CI error.
domain
enum
Error category used to differentiate between issues related to the developer or provider environments.
Allowed enum values: provider,user,unknown
message
string
Error message.
stack
string
The stack trace of the reported errors.
type
string
Short description of the error type.
git
object
If pipelines are triggered due to actions to a Git repository, then all payloads must contain this.
Note that either tag
or branch
has to be provided, but not both.
author_email [required]
string
The commit author email.
author_name
string
The commit author name.
author_time
string
The commit author timestamp in RFC3339 format.
branch
string
The branch name (if a tag use the tag parameter).
commit_time
string
The commit timestamp in RFC3339 format.
committer_email
string
The committer email.
committer_name
string
The committer name.
default_branch
string
The Git repository's default branch.
message
string
The commit message.
repository_url [required]
string
The URL of the repository.
sha [required]
string
The git commit SHA.
tag
string
The tag name (if a branch use the branch parameter).
is_manual
boolean
Whether or not the pipeline was triggered manually by the user.
is_resumed
boolean
Whether or not the pipeline was resumed after being blocked.
level [required]
enum
Used to distinguish between pipelines, stages, jobs, and steps.
Allowed enum values: pipeline
default: pipeline
metrics
[string]
A list of user-defined metrics. The metrics must follow the key:value
pattern and the value must be numeric.
name [required]
string
Name of the pipeline. All pipeline runs for the builds should have the same name.
node
object
Contains information of the host running the pipeline, stage, job, or step.
hostname
string
FQDN of the host.
labels
[string]
A list of labels used to select or identify the node.
name
string
Name for the host.
workspace
string
The path where the code is checked out.
parameters
object
A map of key-value parameters or environment variables that were defined for the pipeline.
<any-key>
string
parent_pipeline
object
If the pipeline is triggered as child of another pipeline, this should contain the details of the parent pipeline.
id [required]
string
UUID of a pipeline.
url
string
The URL to look at the pipeline in the CI provider UI.
partial_retry [required]
boolean
Whether or not the pipeline was a partial retry of a previous attempt. A partial retry is one which only runs a subset of the original jobs.
pipeline_id
string
Any ID used in the provider to identify the pipeline run even if it is not unique across retries.
If the pipeline_id
is unique, then both unique_id
and pipeline_id
can be set to the same value.
previous_attempt
object
If the pipeline is a retry, this should contain the details of the previous attempt.
id [required]
string
UUID of a pipeline.
url
string
The URL to look at the pipeline in the CI provider UI.
queue_time
int64
The queue time in milliseconds, if applicable.
start [required]
date-time
Time when the pipeline run started (it should not include any queue time). The time format must be RFC3339.
status [required]
enum
The final status of the pipeline.
Allowed enum values: success,error,canceled,skipped,blocked
tags
[string]
A list of user-defined tags. The tags must follow the key:value
pattern.
unique_id [required]
string
UUID of the pipeline run. The ID has to be unique across retries and pipelines, including partial retries.
url [required]
string
The URL to look at the pipeline in the CI provider UI.
Option 2
object
Details of a running pipeline.
error
object
Contains information of the CI error.
domain
enum
Error category used to differentiate between issues related to the developer or provider environments.
Allowed enum values: provider,user,unknown
message
string
Error message.
stack
string
The stack trace of the reported errors.
type
string
Short description of the error type.
git
object
If pipelines are triggered due to actions to a Git repository, then all payloads must contain this.
Note that either tag
or branch
has to be provided, but not both.
author_email [required]
string
The commit author email.
author_name
string
The commit author name.
author_time
string
The commit author timestamp in RFC3339 format.
branch
string
The branch name (if a tag use the tag parameter).
commit_time
string
The commit timestamp in RFC3339 format.
committer_email
string
The committer email.
committer_name
string
The committer name.
default_branch
string
The Git repository's default branch.
message
string
The commit message.
repository_url [required]
string
The URL of the repository.
sha [required]
string
The git commit SHA.
tag
string
The tag name (if a branch use the branch parameter).
is_manual
boolean
Whether or not the pipeline was triggered manually by the user.
is_resumed
boolean
Whether or not the pipeline was resumed after being blocked.
level [required]
enum
Used to distinguish between pipelines, stages, jobs, and steps.
Allowed enum values: pipeline
default: pipeline
metrics
[string]
A list of user-defined metrics. The metrics must follow the key:value
pattern and the value must be numeric.
name [required]
string
Name of the pipeline. All pipeline runs for the builds should have the same name.
node
object
Contains information of the host running the pipeline, stage, job, or step.
hostname
string
FQDN of the host.
labels
[string]
A list of labels used to select or identify the node.
name
string
Name for the host.
workspace
string
The path where the code is checked out.
parameters
object
A map of key-value parameters or environment variables that were defined for the pipeline.
<any-key>
string
parent_pipeline
object
If the pipeline is triggered as child of another pipeline, this should contain the details of the parent pipeline.
id [required]
string
UUID of a pipeline.
url
string
The URL to look at the pipeline in the CI provider UI.
partial_retry [required]
boolean
Whether or not the pipeline was a partial retry of a previous attempt. A partial retry is one which only runs a subset of the original jobs.
pipeline_id
string
Any ID used in the provider to identify the pipeline run even if it is not unique across retries.
If the pipeline_id
is unique, then both unique_id
and pipeline_id
can be set to the same value.
previous_attempt
object
If the pipeline is a retry, this should contain the details of the previous attempt.
id [required]
string
UUID of a pipeline.
url
string
The URL to look at the pipeline in the CI provider UI.
queue_time
int64
The queue time in milliseconds, if applicable.
start [required]
date-time
Time when the pipeline run started (it should not include any queue time). The time format must be RFC3339.
status [required]
enum
The in progress status of the pipeline.
Allowed enum values: running
tags
[string]
A list of user-defined tags. The tags must follow the key:value
pattern.
unique_id [required]
string
UUID of the pipeline run. The ID has to be the same as the finished pipeline.
url [required]
string
The URL to look at the pipeline in the CI provider UI.
Option 2
object
Details of a CI stage.
dependencies
[string]
A list of stage IDs that this stage depends on.
end [required]
date-time
Time when the stage run finished. The time format must be RFC3339.
error
object
Contains information of the CI error.
domain
enum
Error category used to differentiate between issues related to the developer or provider environments.
Allowed enum values: provider,user,unknown
message
string
Error message.
stack
string
The stack trace of the reported errors.
type
string
Short description of the error type.
git
object
If pipelines are triggered due to actions to a Git repository, then all payloads must contain this.
Note that either tag
or branch
has to be provided, but not both.
author_email [required]
string
The commit author email.
author_name
string
The commit author name.
author_time
string
The commit author timestamp in RFC3339 format.
branch
string
The branch name (if a tag use the tag parameter).
commit_time
string
The commit timestamp in RFC3339 format.
committer_email
string
The committer email.
committer_name
string
The committer name.
default_branch
string
The Git repository's default branch.
message
string
The commit message.
repository_url [required]
string
The URL of the repository.
sha [required]
string
The git commit SHA.
tag
string
The tag name (if a branch use the branch parameter).
id [required]
string
UUID for the stage. It has to be unique at least in the pipeline scope.
level [required]
enum
Used to distinguish between pipelines, stages, jobs and steps.
Allowed enum values: stage
default: stage
metrics
[string]
A list of user-defined metrics. The metrics must follow the key:value
pattern and the value must be numeric.
name [required]
string
The name for the stage.
node
object
Contains information of the host running the pipeline, stage, job, or step.
hostname
string
FQDN of the host.
labels
[string]
A list of labels used to select or identify the node.
name
string
Name for the host.
workspace
string
The path where the code is checked out.
parameters
object
A map of key-value parameters or environment variables that were defined for the pipeline.
<any-key>
string
pipeline_name [required]
string
The parent pipeline name.
pipeline_unique_id [required]
string
The parent pipeline UUID.
queue_time
int64
The queue time in milliseconds, if applicable.
start [required]
date-time
Time when the stage run started (it should not include any queue time). The time format must be RFC3339.
status [required]
enum
The final status of the stage.
Allowed enum values: success,error,canceled,skipped
tags
[string]
A list of user-defined tags. The tags must follow the key:value
pattern.
Option 3
object
Details of a CI job.
dependencies
[string]
A list of job IDs that this job depends on.
end [required]
date-time
Time when the job run finished. The time format must be RFC3339.
error
object
Contains information of the CI error.
domain
enum
Error category used to differentiate between issues related to the developer or provider environments.
Allowed enum values: provider,user,unknown
message
string
Error message.
stack
string
The stack trace of the reported errors.
type
string
Short description of the error type.
git
object
If pipelines are triggered due to actions to a Git repository, then all payloads must contain this.
Note that either tag
or branch
has to be provided, but not both.
author_email [required]
string
The commit author email.
author_name
string
The commit author name.
author_time
string
The commit author timestamp in RFC3339 format.
branch
string
The branch name (if a tag use the tag parameter).
commit_time
string
The commit timestamp in RFC3339 format.
committer_email
string
The committer email.
committer_name
string
The committer name.
default_branch
string
The Git repository's default branch.
message
string
The commit message.
repository_url [required]
string
The URL of the repository.
sha [required]
string
The git commit SHA.
tag
string
The tag name (if a branch use the branch parameter).
id [required]
string
The UUID for the job. It has to be unique within each pipeline execution.
level [required]
enum
Used to distinguish between pipelines, stages, jobs, and steps.
Allowed enum values: job
default: job
metrics
[string]
A list of user-defined metrics. The metrics must follow the key:value
pattern and the value must be numeric.
name [required]
string
The name for the job.
node
object
Contains information of the host running the pipeline, stage, job, or step.
hostname
string
FQDN of the host.
labels
[string]
A list of labels used to select or identify the node.
name
string
Name for the host.
workspace
string
The path where the code is checked out.
parameters
object
A map of key-value parameters or environment variables that were defined for the pipeline.
<any-key>
string
pipeline_name [required]
string
The parent pipeline name.
pipeline_unique_id [required]
string
The parent pipeline UUID.
queue_time
int64
The queue time in milliseconds, if applicable.
stage_id
string
The parent stage UUID (if applicable).
stage_name
string
The parent stage name (if applicable).
start [required]
date-time
Time when the job run instance started (it should not include any queue time). The time format must be RFC3339.
status [required]
enum
The final status of the job.
Allowed enum values: success,error,canceled,skipped
tags
[string]
A list of user-defined tags. The tags must follow the key:value
pattern.
url [required]
string
The URL to look at the job in the CI provider UI.
Option 4
object
Details of a CI step.
end [required]
date-time
Time when the step run finished. The time format must be RFC3339.
error
object
Contains information of the CI error.
domain
enum
Error category used to differentiate between issues related to the developer or provider environments.
Allowed enum values: provider,user,unknown
message
string
Error message.
stack
string
The stack trace of the reported errors.
type
string
Short description of the error type.
git
object
If pipelines are triggered due to actions to a Git repository, then all payloads must contain this.
Note that either tag
or branch
has to be provided, but not both.
author_email [required]
string
The commit author email.
author_name
string
The commit author name.
author_time
string
The commit author timestamp in RFC3339 format.
branch
string
The branch name (if a tag use the tag parameter).
commit_time
string
The commit timestamp in RFC3339 format.
committer_email
string
The committer email.
committer_name
string
The committer name.
default_branch
string
The Git repository's default branch.
message
string
The commit message.
repository_url [required]
string
The URL of the repository.
sha [required]
string
The git commit SHA.
tag
string
The tag name (if a branch use the branch parameter).
id [required]
string
UUID for the step. It has to be unique within each pipeline execution.
job_id
string
The parent job UUID (if applicable).
job_name
string
The parent job name (if applicable).
level [required]
enum
Used to distinguish between pipelines, stages, jobs and steps.
Allowed enum values: step
default: step
metrics
[string]
A list of user-defined metrics. The metrics must follow the key:value
pattern and the value must be numeric.
name [required]
string
The name for the step.
node
object
Contains information of the host running the pipeline, stage, job, or step.
hostname
string
FQDN of the host.
labels
[string]
A list of labels used to select or identify the node.
name
string
Name for the host.
workspace
string
The path where the code is checked out.
parameters
object
A map of key-value parameters or environment variables that were defined for the pipeline.
<any-key>
string
pipeline_name [required]
string
The parent pipeline name.
pipeline_unique_id [required]
string
The parent pipeline UUID.
stage_id
string
The parent stage UUID (if applicable).
stage_name
string
The parent stage name (if applicable).
start [required]
date-time
Time when the step run started. The time format must be RFC3339.
status [required]
enum
The final status of the step.
Allowed enum values: success,error
tags
[string]
A list of user-defined tags. The tags must follow the key:value
pattern.
url
string
The URL to look at the step in the CI provider UI.
service
string
If the CI provider is SaaS, use this to differentiate between instances.
type
enum
Type of the event.
Allowed enum values: cipipeline_resource_request
default: cipipeline_resource_request
{
"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": "2021-11-11T11:09:11+00:00",
"end": "2021-11-11T11:10:41+00:00",
"status": "success",
"partial_retry": false,
"git": {
"repository_url": "https://github.com/DataDog/datadog-agent",
"sha": "7f263865994b76066c4612fd1965215e7dcb4cd2",
"author_email": "john.doe@email.com"
}
}
},
"type": "cipipeline_resource_request"
}
}
{
"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": "2021-11-11T11:09:11+00:00",
"status": "running",
"partial_retry": false,
"git": {
"repository_url": "https://github.com/DataDog/datadog-agent",
"sha": "7f263865994b76066c4612fd1965215e7dcb4cd2",
"author_email": "john.doe@email.com"
}
}
},
"type": "cipipeline_resource_request"
}
}
Request accepted for processing
{}
Bad Request
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
Unauthorized
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
Forbidden
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
Request Timeout
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
Payload Too Large
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
Too Many Requests
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
Internal Server Error
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
Service Unavailable
Errors occurred.
항목
유형
설명
errors
[object]
Structured errors.
detail
string
Error message.
status
string
Error code.
title
string
Error title.
{
"errors": [
{
"detail": "Malformed payload",
"status": "400",
"title": "Bad Request"
}
]
}
# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/pipeline" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-d @- << EOF
{
"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": "2021-11-11T11:09:11+00:00",
"end": "2021-11-11T11:10:41+00:00",
"status": "success",
"partial_retry": false,
"git": {
"repository_url": "https://github.com/DataDog/datadog-agent",
"sha": "7f263865994b76066c4612fd1965215e7dcb4cd2",
"author_email": "john.doe@email.com"
}
}
},
"type": "cipipeline_resource_request"
}
}
EOF
# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/pipeline" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-d @- << EOF
{
"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": "2021-11-11T11:09:11+00:00",
"status": "running",
"partial_retry": false,
"git": {
"repository_url": "https://github.com/DataDog/datadog-agent",
"sha": "7f263865994b76066c4612fd1965215e7dcb4cd2",
"author_email": "john.doe@email.com"
}
}
},
"type": "cipipeline_resource_request"
}
}
EOF
// Send pipeline event returns "Request accepted for processing" response
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"time"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
body := datadogV2.CIAppCreatePipelineEventRequest{
Data: &datadogV2.CIAppCreatePipelineEventRequestData{
Attributes: &datadogV2.CIAppCreatePipelineEventRequestAttributes{
Resource: datadogV2.CIAppCreatePipelineEventRequestAttributesResource{
CIAppPipelineEventPipeline: &datadogV2.CIAppPipelineEventPipeline{
End: time.Now().Add(time.Second * -30),
Level: datadogV2.CIAPPPIPELINEEVENTPIPELINELEVEL_PIPELINE,
Name: "Deploy to AWS",
PartialRetry: false,
Start: time.Now().Add(time.Second * -120),
Status: datadogV2.CIAPPPIPELINEEVENTPIPELINESTATUS_SUCCESS,
UniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
Url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
Git: *datadogV2.NewNullableCIAppGitInfo(&datadogV2.CIAppGitInfo{
RepositoryUrl: "https://github.com/DataDog/datadog-agent",
Sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
AuthorEmail: "john.doe@email.com",
}),
}},
},
Type: datadogV2.CIAPPCREATEPIPELINEEVENTREQUESTDATATYPE_CIPIPELINE_RESOURCE_REQUEST.Ptr(),
},
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewCIVisibilityPipelinesApi(apiClient)
resp, r, err := api.CreateCIAppPipelineEvent(ctx, body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `CIVisibilityPipelinesApi.CreateCIAppPipelineEvent`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `CIVisibilityPipelinesApi.CreateCIAppPipelineEvent`:\n%s\n", responseContent)
}
First install the library and its dependencies and then save the example to main.go
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" go run "main.go"
// Send pipeline event returns "Request accepted for processing" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi;
import com.datadog.api.client.v2.model.CIAppCreatePipelineEventRequest;
import com.datadog.api.client.v2.model.CIAppCreatePipelineEventRequestAttributes;
import com.datadog.api.client.v2.model.CIAppCreatePipelineEventRequestAttributesResource;
import com.datadog.api.client.v2.model.CIAppCreatePipelineEventRequestData;
import com.datadog.api.client.v2.model.CIAppCreatePipelineEventRequestDataType;
import com.datadog.api.client.v2.model.CIAppGitInfo;
import com.datadog.api.client.v2.model.CIAppPipelineEventPipeline;
import com.datadog.api.client.v2.model.CIAppPipelineEventPipelineLevel;
import com.datadog.api.client.v2.model.CIAppPipelineEventPipelineStatus;
import java.time.OffsetDateTime;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
CiVisibilityPipelinesApi apiInstance = new CiVisibilityPipelinesApi(defaultClient);
CIAppCreatePipelineEventRequest body =
new CIAppCreatePipelineEventRequest()
.data(
new CIAppCreatePipelineEventRequestData()
.attributes(
new CIAppCreatePipelineEventRequestAttributes()
.resource(
new CIAppCreatePipelineEventRequestAttributesResource(
new CIAppPipelineEventPipeline()
.end(OffsetDateTime.now().plusSeconds(-30))
.level(CIAppPipelineEventPipelineLevel.PIPELINE)
.name("Deploy to AWS")
.partialRetry(false)
.start(OffsetDateTime.now().plusSeconds(-120))
.status(CIAppPipelineEventPipelineStatus.SUCCESS)
.uniqueId("3eacb6f3-ff04-4e10-8a9c-46e6d054024a")
.url(
"https://my-ci-provider.example/pipelines/my-pipeline/run/1")
.git(
new CIAppGitInfo()
.repositoryUrl(
"https://github.com/DataDog/datadog-agent")
.sha("7f263865994b76066c4612fd1965215e7dcb4cd2")
.authorEmail("john.doe@email.com")))))
.type(CIAppCreatePipelineEventRequestDataType.CIPIPELINE_RESOURCE_REQUEST));
try {
apiInstance.createCIAppPipelineEvent(body);
} catch (ApiException e) {
System.err.println(
"Exception when calling CiVisibilityPipelinesApi#createCIAppPipelineEvent");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
First install the library and its dependencies and then save the example to Example.java
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" java "Example.java"
"""
Send pipeline event returns "Request accepted for processing" response
"""
from datetime import datetime
from dateutil.relativedelta import relativedelta
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.ci_visibility_pipelines_api import CIVisibilityPipelinesApi
from datadog_api_client.v2.model.ci_app_create_pipeline_event_request import CIAppCreatePipelineEventRequest
from datadog_api_client.v2.model.ci_app_create_pipeline_event_request_attributes import (
CIAppCreatePipelineEventRequestAttributes,
)
from datadog_api_client.v2.model.ci_app_create_pipeline_event_request_data import CIAppCreatePipelineEventRequestData
from datadog_api_client.v2.model.ci_app_create_pipeline_event_request_data_type import (
CIAppCreatePipelineEventRequestDataType,
)
from datadog_api_client.v2.model.ci_app_git_info import CIAppGitInfo
from datadog_api_client.v2.model.ci_app_pipeline_event_pipeline import CIAppPipelineEventPipeline
from datadog_api_client.v2.model.ci_app_pipeline_event_pipeline_level import CIAppPipelineEventPipelineLevel
from datadog_api_client.v2.model.ci_app_pipeline_event_pipeline_status import CIAppPipelineEventPipelineStatus
body = CIAppCreatePipelineEventRequest(
data=CIAppCreatePipelineEventRequestData(
attributes=CIAppCreatePipelineEventRequestAttributes(
resource=CIAppPipelineEventPipeline(
end=(datetime.now() + relativedelta(seconds=-30)),
level=CIAppPipelineEventPipelineLevel.PIPELINE,
name="Deploy to AWS",
partial_retry=False,
start=(datetime.now() + relativedelta(seconds=-120)),
status=CIAppPipelineEventPipelineStatus.SUCCESS,
unique_id="3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
url="https://my-ci-provider.example/pipelines/my-pipeline/run/1",
git=CIAppGitInfo(
repository_url="https://github.com/DataDog/datadog-agent",
sha="7f263865994b76066c4612fd1965215e7dcb4cd2",
author_email="john.doe@email.com",
),
),
),
type=CIAppCreatePipelineEventRequestDataType.CIPIPELINE_RESOURCE_REQUEST,
),
)
configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = CIVisibilityPipelinesApi(api_client)
response = api_instance.create_ci_app_pipeline_event(body=body)
print(response)
First install the library and its dependencies and then save the example to example.py
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" python3 "example.py"
# Send pipeline event returns "Request accepted for processing" response
require "datadog_api_client"
api_instance = DatadogAPIClient::V2::CIVisibilityPipelinesAPI.new
body = DatadogAPIClient::V2::CIAppCreatePipelineEventRequest.new({
data: DatadogAPIClient::V2::CIAppCreatePipelineEventRequestData.new({
attributes: DatadogAPIClient::V2::CIAppCreatePipelineEventRequestAttributes.new({
resource: DatadogAPIClient::V2::CIAppPipelineEventPipeline.new({
_end: (Time.now + -30),
level: DatadogAPIClient::V2::CIAppPipelineEventPipelineLevel::PIPELINE,
name: "Deploy to AWS",
partial_retry: false,
start: (Time.now + -120),
status: DatadogAPIClient::V2::CIAppPipelineEventPipelineStatus::SUCCESS,
unique_id: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
git: DatadogAPIClient::V2::CIAppGitInfo.new({
repository_url: "https://github.com/DataDog/datadog-agent",
sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
author_email: "john.doe@email.com",
}),
}),
}),
type: DatadogAPIClient::V2::CIAppCreatePipelineEventRequestDataType::CIPIPELINE_RESOURCE_REQUEST,
}),
})
p api_instance.create_ci_app_pipeline_event(body)
First install the library and its dependencies and then save the example to example.rb
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" rb "example.rb"
// Send pipeline event returns "Request accepted for processing" response
use chrono::{DateTime, Utc};
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::CIVisibilityPipelinesAPI;
use datadog_api_client::datadogV2::model::CIAppCreatePipelineEventRequest;
use datadog_api_client::datadogV2::model::CIAppCreatePipelineEventRequestAttributes;
use datadog_api_client::datadogV2::model::CIAppCreatePipelineEventRequestAttributesResource;
use datadog_api_client::datadogV2::model::CIAppCreatePipelineEventRequestData;
use datadog_api_client::datadogV2::model::CIAppCreatePipelineEventRequestDataType;
use datadog_api_client::datadogV2::model::CIAppGitInfo;
use datadog_api_client::datadogV2::model::CIAppPipelineEventPipeline;
use datadog_api_client::datadogV2::model::CIAppPipelineEventPipelineLevel;
use datadog_api_client::datadogV2::model::CIAppPipelineEventPipelineStatus;
#[tokio::main]
async fn main() {
let body = CIAppCreatePipelineEventRequest::new().data(
CIAppCreatePipelineEventRequestData::new()
.attributes(CIAppCreatePipelineEventRequestAttributes::new(
CIAppCreatePipelineEventRequestAttributesResource::CIAppPipelineEventPipeline(
Box::new(
CIAppPipelineEventPipeline::new(
DateTime::parse_from_rfc3339("2021-11-11T11:10:41+00:00")
.expect("Failed to parse datetime")
.with_timezone(&Utc),
CIAppPipelineEventPipelineLevel::PIPELINE,
"Deploy to AWS".to_string(),
false,
DateTime::parse_from_rfc3339("2021-11-11T11:09:11+00:00")
.expect("Failed to parse datetime")
.with_timezone(&Utc),
CIAppPipelineEventPipelineStatus::SUCCESS,
"3eacb6f3-ff04-4e10-8a9c-46e6d054024a".to_string(),
"https://my-ci-provider.example/pipelines/my-pipeline/run/1"
.to_string(),
)
.git(Some(CIAppGitInfo::new(
"john.doe@email.com".to_string(),
"https://github.com/DataDog/datadog-agent".to_string(),
"7f263865994b76066c4612fd1965215e7dcb4cd2".to_string(),
))),
),
),
))
.type_(CIAppCreatePipelineEventRequestDataType::CIPIPELINE_RESOURCE_REQUEST),
);
let configuration = datadog::Configuration::new();
let api = CIVisibilityPipelinesAPI::with_config(configuration);
let resp = api.create_ci_app_pipeline_event(body).await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
First install the library and its dependencies and then save the example to src/main.rs
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" cargo run
/**
* Send pipeline event returns "Request accepted for processing" response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration();
const apiInstance = new v2.CIVisibilityPipelinesApi(configuration);
const params: v2.CIVisibilityPipelinesApiCreateCIAppPipelineEventRequest = {
body: {
data: {
attributes: {
resource: {
end: new Date(new Date().getTime() + -30 * 1000),
level: "pipeline",
name: "Deploy to AWS",
partialRetry: false,
start: new Date(new Date().getTime() + -120 * 1000),
status: "success",
uniqueId: "3eacb6f3-ff04-4e10-8a9c-46e6d054024a",
url: "https://my-ci-provider.example/pipelines/my-pipeline/run/1",
git: {
repositoryUrl: "https://github.com/DataDog/datadog-agent",
sha: "7f263865994b76066c4612fd1965215e7dcb4cd2",
authorEmail: "john.doe@email.com",
},
},
},
type: "cipipeline_resource_request",
},
},
};
apiInstance
.createCIAppPipelineEvent(params)
.then((data: any) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
First install the library and its dependencies and then save the example to example.ts
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" tsc "example.ts"
GET https://api.ap1.datadoghq.com/api/v2/ci/pipelines/eventshttps://api.datadoghq.eu/api/v2/ci/pipelines/eventshttps://api.ddog-gov.com/api/v2/ci/pipelines/eventshttps://api.datadoghq.com/api/v2/ci/pipelines/eventshttps://api.us3.datadoghq.com/api/v2/ci/pipelines/eventshttps://api.us5.datadoghq.com/api/v2/ci/pipelines/events
List endpoint returns CI Visibility pipeline events that match a search query. Results are paginated similarly to logs.
Use this endpoint to see your latest pipeline events.
This endpoint requires theci_visibility_read
permission.OAuth apps require the ci_visibility_read
authorization scope to access this endpoint.
이름
유형
설명
filter[query]
string
Search query following log syntax.
filter[from]
string
Minimum timestamp for requested events.
filter[to]
string
Maximum timestamp for requested events.
sort
enum
Order of events in results.
Allowed enum values: timestamp, -timestamp
page[cursor]
string
List following results with a cursor provided in the previous query.
page[limit]
integer
Maximum number of events in the response.
OK
Response object with all pipeline events matching the request and pagination information.
항목
유형
설명
data
[object]
Array of events matching the request.
attributes
object
JSON object containing all event attributes and their associated values.
attributes
object
JSON object of attributes from CI Visibility pipeline events.
ci_level
enum
Pipeline execution level.
Allowed enum values: pipeline,stage,job,step,custom
tags
[string]
Array of tags associated with your event.
id
string
Unique ID of the event.
type
enum
Type of the event.
Allowed enum values: cipipeline
links
object
Links attributes.
next
string
Link for the next set of results. The request can also be made using the POST endpoint.
meta
object
The metadata associated with a request.
elapsed
int64
The time elapsed in milliseconds.
page
object
Paging attributes.
after
string
The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of page[cursor]
.
request_id
string
The identifier of the request.
status
enum
The status of the response.
Allowed enum values: done,timeout
warnings
[object]
A list of warnings (non-fatal errors) encountered. Partial results may return if warnings are present in the response.
code
string
A unique code for this type of warning.
detail
string
A detailed explanation of this specific warning.
title
string
A short human-readable summary of the warning.
{
"data": [
{
"attributes": {
"attributes": {
"customAttribute": 123,
"duration": 2345
},
"ci_level": "pipeline",
"tags": [
"team:A"
]
},
"id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA",
"type": "cipipeline"
}
],
"links": {
"next": "https://app.datadoghq.com/api/v2/ci/tests/events?filter[query]=foo\u0026page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ=="
},
"meta": {
"elapsed": 132,
"page": {
"after": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ=="
},
"request_id": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR",
"status": "done",
"warnings": [
{
"code": "unknown_index",
"detail": "indexes: foo, bar",
"title": "One or several indexes are missing or invalid, results hold data from the other indexes"
}
]
}
}
Bad Request
API error response.
{
"errors": [
"Bad Request"
]
}
Not Authorized
API error response.
{
"errors": [
"Bad Request"
]
}
Too many requests
API error response.
{
"errors": [
"Bad Request"
]
}
# Curl command
curl -X GET "https://api.ap1.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/pipelines/events" \
-H "Accept: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}"
"""
Get a list of pipelines events returns "OK" response
"""
from datetime import datetime
from dateutil.relativedelta import relativedelta
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.ci_visibility_pipelines_api import CIVisibilityPipelinesApi
configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = CIVisibilityPipelinesApi(api_client)
response = api_instance.list_ci_app_pipeline_events(
filter_query="@ci.provider.name:circleci",
filter_from=(datetime.now() + relativedelta(minutes=-30)),
filter_to=datetime.now(),
page_limit=5,
)
print(response)
First install the library and its dependencies and then save the example to example.py
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
# Get a list of pipelines events returns "OK" response
require "datadog_api_client"
api_instance = DatadogAPIClient::V2::CIVisibilityPipelinesAPI.new
opts = {
filter_query: "@ci.provider.name:circleci",
filter_from: (Time.now + -30 * 60),
filter_to: Time.now,
page_limit: 5,
}
p api_instance.list_ci_app_pipeline_events(opts)
First install the library and its dependencies and then save the example to example.rb
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
// Get a list of pipelines events returns "OK" response
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"time"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewCIVisibilityPipelinesApi(apiClient)
resp, r, err := api.ListCIAppPipelineEvents(ctx, *datadogV2.NewListCIAppPipelineEventsOptionalParameters().WithFilterQuery("@ci.provider.name:circleci").WithFilterFrom(time.Now().Add(time.Minute * -30)).WithFilterTo(time.Now()).WithPageLimit(5))
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `CIVisibilityPipelinesApi.ListCIAppPipelineEvents`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `CIVisibilityPipelinesApi.ListCIAppPipelineEvents`:\n%s\n", responseContent)
}
First install the library and its dependencies and then save the example to main.go
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
// Get a list of pipelines events returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi.ListCIAppPipelineEventsOptionalParameters;
import com.datadog.api.client.v2.model.CIAppPipelineEventsResponse;
import java.time.OffsetDateTime;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
CiVisibilityPipelinesApi apiInstance = new CiVisibilityPipelinesApi(defaultClient);
try {
CIAppPipelineEventsResponse result =
apiInstance.listCIAppPipelineEvents(
new ListCIAppPipelineEventsOptionalParameters()
.filterQuery("@ci.provider.name:circleci")
.filterFrom(OffsetDateTime.now().plusMinutes(-30))
.filterTo(OffsetDateTime.now())
.pageLimit(5));
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling CiVisibilityPipelinesApi#listCIAppPipelineEvents");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
First install the library and its dependencies and then save the example to Example.java
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
// Get a list of pipelines events returns "OK" response
use chrono::{DateTime, Utc};
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::CIVisibilityPipelinesAPI;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::ListCIAppPipelineEventsOptionalParams;
#[tokio::main]
async fn main() {
let configuration = datadog::Configuration::new();
let api = CIVisibilityPipelinesAPI::with_config(configuration);
let resp = api
.list_ci_app_pipeline_events(
ListCIAppPipelineEventsOptionalParams::default()
.filter_query("@ci.provider.name:circleci".to_string())
.filter_from(
DateTime::parse_from_rfc3339("2021-11-11T10:41:11+00:00")
.expect("Failed to parse datetime")
.with_timezone(&Utc),
)
.filter_to(
DateTime::parse_from_rfc3339("2021-11-11T11:11:11+00:00")
.expect("Failed to parse datetime")
.with_timezone(&Utc),
)
.page_limit(5),
)
.await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
First install the library and its dependencies and then save the example to src/main.rs
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
/**
* Get a list of pipelines events returns "OK" response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration();
const apiInstance = new v2.CIVisibilityPipelinesApi(configuration);
const params: v2.CIVisibilityPipelinesApiListCIAppPipelineEventsRequest = {
filterQuery: "@ci.provider.name:circleci",
filterFrom: new Date(new Date().getTime() + -30 * 60 * 1000),
filterTo: new Date(),
pageLimit: 5,
};
apiInstance
.listCIAppPipelineEvents(params)
.then((data: v2.CIAppPipelineEventsResponse) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
First install the library and its dependencies and then save the example to example.ts
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"
POST https://api.ap1.datadoghq.com/api/v2/ci/pipelines/events/searchhttps://api.datadoghq.eu/api/v2/ci/pipelines/events/searchhttps://api.ddog-gov.com/api/v2/ci/pipelines/events/searchhttps://api.datadoghq.com/api/v2/ci/pipelines/events/searchhttps://api.us3.datadoghq.com/api/v2/ci/pipelines/events/searchhttps://api.us5.datadoghq.com/api/v2/ci/pipelines/events/search
List endpoint returns CI Visibility pipeline events that match a search query. Results are paginated similarly to logs.
Use this endpoint to build complex events filtering and search.
This endpoint requires theci_visibility_read
permission.OAuth apps require the ci_visibility_read
authorization scope to access this endpoint.
항목
유형
설명
filter
object
The search and filter query settings.
from
string
The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).
default: now-15m
query
string
The search query following the CI Visibility Explorer search syntax.
default: *
to
string
The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).
default: now
options
object
Global query options that are used during the query. Only supply timezone or time offset, not both. Otherwise, the query fails.
time_offset
int64
The time offset (in seconds) to apply to the query.
timezone
string
The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).
default: UTC
page
object
Paging attributes for listing events.
cursor
string
List following results with a cursor provided in the previous query.
limit
int32
Maximum number of events in the response.
default: 10
sort
enum
Sort parameters when querying events.
Allowed enum values: timestamp,-timestamp
{
"filter": {
"from": "now-15m",
"query": "@ci.provider.name:github AND @ci.status:error",
"to": "now"
},
"options": {
"timezone": "GMT"
},
"page": {
"limit": 5
},
"sort": "timestamp"
}
{
"filter": {
"from": "now-30s",
"to": "now"
},
"options": {
"timezone": "GMT"
},
"page": {
"limit": 2
},
"sort": "timestamp"
}
OK
Response object with all pipeline events matching the request and pagination information.
항목
유형
설명
data
[object]
Array of events matching the request.
attributes
object
JSON object containing all event attributes and their associated values.
attributes
object
JSON object of attributes from CI Visibility pipeline events.
ci_level
enum
Pipeline execution level.
Allowed enum values: pipeline,stage,job,step,custom
tags
[string]
Array of tags associated with your event.
id
string
Unique ID of the event.
type
enum
Type of the event.
Allowed enum values: cipipeline
links
object
Links attributes.
next
string
Link for the next set of results. The request can also be made using the POST endpoint.
meta
object
The metadata associated with a request.
elapsed
int64
The time elapsed in milliseconds.
page
object
Paging attributes.
after
string
The cursor to use to get the next results, if any. To make the next request, use the same parameters with the addition of page[cursor]
.
request_id
string
The identifier of the request.
status
enum
The status of the response.
Allowed enum values: done,timeout
warnings
[object]
A list of warnings (non-fatal errors) encountered. Partial results may return if warnings are present in the response.
code
string
A unique code for this type of warning.
detail
string
A detailed explanation of this specific warning.
title
string
A short human-readable summary of the warning.
{
"data": [
{
"attributes": {
"attributes": {
"customAttribute": 123,
"duration": 2345
},
"ci_level": "pipeline",
"tags": [
"team:A"
]
},
"id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA",
"type": "cipipeline"
}
],
"links": {
"next": "https://app.datadoghq.com/api/v2/ci/tests/events?filter[query]=foo\u0026page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ=="
},
"meta": {
"elapsed": 132,
"page": {
"after": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ=="
},
"request_id": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR",
"status": "done",
"warnings": [
{
"code": "unknown_index",
"detail": "indexes: foo, bar",
"title": "One or several indexes are missing or invalid, results hold data from the other indexes"
}
]
}
}
Bad Request
API error response.
{
"errors": [
"Bad Request"
]
}
Not Authorized
API error response.
{
"errors": [
"Bad Request"
]
}
Too many requests
API error response.
{
"errors": [
"Bad Request"
]
}
# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/pipelines/events/search" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \
-d @- << EOF
{
"filter": {
"from": "now-15m",
"query": "@ci.provider.name:github AND @ci.status:error",
"to": "now"
},
"options": {
"timezone": "GMT"
},
"page": {
"limit": 5
},
"sort": "timestamp"
}
EOF
# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/pipelines/events/search" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \
-d @- << EOF
{
"filter": {
"from": "now-30s",
"to": "now"
},
"options": {
"timezone": "GMT"
},
"page": {
"limit": 2
},
"sort": "timestamp"
}
EOF
// Search pipelines events returns "OK" response
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
body := datadogV2.CIAppPipelineEventsRequest{
Filter: &datadogV2.CIAppPipelinesQueryFilter{
From: datadog.PtrString("now-15m"),
Query: datadog.PtrString("@ci.provider.name:github AND @ci.status:error"),
To: datadog.PtrString("now"),
},
Options: &datadogV2.CIAppQueryOptions{
Timezone: datadog.PtrString("GMT"),
},
Page: &datadogV2.CIAppQueryPageOptions{
Limit: datadog.PtrInt32(5),
},
Sort: datadogV2.CIAPPSORT_TIMESTAMP_ASCENDING.Ptr(),
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewCIVisibilityPipelinesApi(apiClient)
resp, r, err := api.SearchCIAppPipelineEvents(ctx, *datadogV2.NewSearchCIAppPipelineEventsOptionalParameters().WithBody(body))
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `CIVisibilityPipelinesApi.SearchCIAppPipelineEvents`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `CIVisibilityPipelinesApi.SearchCIAppPipelineEvents`:\n%s\n", responseContent)
}
// Search pipelines events returns "OK" response with pagination
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
body := datadogV2.CIAppPipelineEventsRequest{
Filter: &datadogV2.CIAppPipelinesQueryFilter{
From: datadog.PtrString("now-30s"),
To: datadog.PtrString("now"),
},
Options: &datadogV2.CIAppQueryOptions{
Timezone: datadog.PtrString("GMT"),
},
Page: &datadogV2.CIAppQueryPageOptions{
Limit: datadog.PtrInt32(2),
},
Sort: datadogV2.CIAPPSORT_TIMESTAMP_ASCENDING.Ptr(),
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewCIVisibilityPipelinesApi(apiClient)
resp, _ := api.SearchCIAppPipelineEventsWithPagination(ctx, *datadogV2.NewSearchCIAppPipelineEventsOptionalParameters().WithBody(body))
for paginationResult := range resp {
if paginationResult.Error != nil {
fmt.Fprintf(os.Stderr, "Error when calling `CIVisibilityPipelinesApi.SearchCIAppPipelineEvents`: %v\n", paginationResult.Error)
}
responseContent, _ := json.MarshalIndent(paginationResult.Item, "", " ")
fmt.Fprintf(os.Stdout, "%s\n", responseContent)
}
}
First install the library and its dependencies and then save the example to main.go
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
// Search pipelines events returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi.SearchCIAppPipelineEventsOptionalParameters;
import com.datadog.api.client.v2.model.CIAppPipelineEventsRequest;
import com.datadog.api.client.v2.model.CIAppPipelineEventsResponse;
import com.datadog.api.client.v2.model.CIAppPipelinesQueryFilter;
import com.datadog.api.client.v2.model.CIAppQueryOptions;
import com.datadog.api.client.v2.model.CIAppQueryPageOptions;
import com.datadog.api.client.v2.model.CIAppSort;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
CiVisibilityPipelinesApi apiInstance = new CiVisibilityPipelinesApi(defaultClient);
CIAppPipelineEventsRequest body =
new CIAppPipelineEventsRequest()
.filter(
new CIAppPipelinesQueryFilter()
.from("now-15m")
.query("@ci.provider.name:github AND @ci.status:error")
.to("now"))
.options(new CIAppQueryOptions().timezone("GMT"))
.page(new CIAppQueryPageOptions().limit(5))
.sort(CIAppSort.TIMESTAMP_ASCENDING);
try {
CIAppPipelineEventsResponse result =
apiInstance.searchCIAppPipelineEvents(
new SearchCIAppPipelineEventsOptionalParameters().body(body));
System.out.println(result);
} catch (ApiException e) {
System.err.println(
"Exception when calling CiVisibilityPipelinesApi#searchCIAppPipelineEvents");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
// Search pipelines events returns "OK" response with pagination
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.PaginationIterable;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi.SearchCIAppPipelineEventsOptionalParameters;
import com.datadog.api.client.v2.model.CIAppPipelineEvent;
import com.datadog.api.client.v2.model.CIAppPipelineEventsRequest;
import com.datadog.api.client.v2.model.CIAppPipelinesQueryFilter;
import com.datadog.api.client.v2.model.CIAppQueryOptions;
import com.datadog.api.client.v2.model.CIAppQueryPageOptions;
import com.datadog.api.client.v2.model.CIAppSort;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
CiVisibilityPipelinesApi apiInstance = new CiVisibilityPipelinesApi(defaultClient);
CIAppPipelineEventsRequest body =
new CIAppPipelineEventsRequest()
.filter(new CIAppPipelinesQueryFilter().from("now-30s").to("now"))
.options(new CIAppQueryOptions().timezone("GMT"))
.page(new CIAppQueryPageOptions().limit(2))
.sort(CIAppSort.TIMESTAMP_ASCENDING);
try {
PaginationIterable<CIAppPipelineEvent> iterable =
apiInstance.searchCIAppPipelineEventsWithPagination(
new SearchCIAppPipelineEventsOptionalParameters().body(body));
for (CIAppPipelineEvent item : iterable) {
System.out.println(item);
}
} catch (RuntimeException e) {
System.err.println(
"Exception when calling"
+ " CiVisibilityPipelinesApi#searchCIAppPipelineEventsWithPagination");
System.err.println("Reason: " + e.getMessage());
e.printStackTrace();
}
}
}
First install the library and its dependencies and then save the example to Example.java
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
"""
Search pipelines events returns "OK" response
"""
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.ci_visibility_pipelines_api import CIVisibilityPipelinesApi
from datadog_api_client.v2.model.ci_app_pipeline_events_request import CIAppPipelineEventsRequest
from datadog_api_client.v2.model.ci_app_pipelines_query_filter import CIAppPipelinesQueryFilter
from datadog_api_client.v2.model.ci_app_query_options import CIAppQueryOptions
from datadog_api_client.v2.model.ci_app_query_page_options import CIAppQueryPageOptions
from datadog_api_client.v2.model.ci_app_sort import CIAppSort
body = CIAppPipelineEventsRequest(
filter=CIAppPipelinesQueryFilter(
_from="now-15m",
query="@ci.provider.name:github AND @ci.status:error",
to="now",
),
options=CIAppQueryOptions(
timezone="GMT",
),
page=CIAppQueryPageOptions(
limit=5,
),
sort=CIAppSort.TIMESTAMP_ASCENDING,
)
configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = CIVisibilityPipelinesApi(api_client)
response = api_instance.search_ci_app_pipeline_events(body=body)
print(response)
"""
Search pipelines events returns "OK" response with pagination
"""
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.ci_visibility_pipelines_api import CIVisibilityPipelinesApi
from datadog_api_client.v2.model.ci_app_pipeline_events_request import CIAppPipelineEventsRequest
from datadog_api_client.v2.model.ci_app_pipelines_query_filter import CIAppPipelinesQueryFilter
from datadog_api_client.v2.model.ci_app_query_options import CIAppQueryOptions
from datadog_api_client.v2.model.ci_app_query_page_options import CIAppQueryPageOptions
from datadog_api_client.v2.model.ci_app_sort import CIAppSort
body = CIAppPipelineEventsRequest(
filter=CIAppPipelinesQueryFilter(
_from="now-30s",
to="now",
),
options=CIAppQueryOptions(
timezone="GMT",
),
page=CIAppQueryPageOptions(
limit=2,
),
sort=CIAppSort.TIMESTAMP_ASCENDING,
)
configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = CIVisibilityPipelinesApi(api_client)
items = api_instance.search_ci_app_pipeline_events_with_pagination(body=body)
for item in items:
print(item)
First install the library and its dependencies and then save the example to example.py
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
# Search pipelines events returns "OK" response
require "datadog_api_client"
api_instance = DatadogAPIClient::V2::CIVisibilityPipelinesAPI.new
body = DatadogAPIClient::V2::CIAppPipelineEventsRequest.new({
filter: DatadogAPIClient::V2::CIAppPipelinesQueryFilter.new({
from: "now-15m",
query: "@ci.provider.name:github AND @ci.status:error",
to: "now",
}),
options: DatadogAPIClient::V2::CIAppQueryOptions.new({
timezone: "GMT",
}),
page: DatadogAPIClient::V2::CIAppQueryPageOptions.new({
limit: 5,
}),
sort: DatadogAPIClient::V2::CIAppSort::TIMESTAMP_ASCENDING,
})
opts = {
body: body,
}
p api_instance.search_ci_app_pipeline_events(opts)
# Search pipelines events returns "OK" response with pagination
require "datadog_api_client"
api_instance = DatadogAPIClient::V2::CIVisibilityPipelinesAPI.new
body = DatadogAPIClient::V2::CIAppPipelineEventsRequest.new({
filter: DatadogAPIClient::V2::CIAppPipelinesQueryFilter.new({
from: "now-30s",
to: "now",
}),
options: DatadogAPIClient::V2::CIAppQueryOptions.new({
timezone: "GMT",
}),
page: DatadogAPIClient::V2::CIAppQueryPageOptions.new({
limit: 2,
}),
sort: DatadogAPIClient::V2::CIAppSort::TIMESTAMP_ASCENDING,
})
opts = {
body: body,
}
api_instance.search_ci_app_pipeline_events_with_pagination(opts) { |item| puts item }
First install the library and its dependencies and then save the example to example.rb
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
// Search pipelines events returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::CIVisibilityPipelinesAPI;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::SearchCIAppPipelineEventsOptionalParams;
use datadog_api_client::datadogV2::model::CIAppPipelineEventsRequest;
use datadog_api_client::datadogV2::model::CIAppPipelinesQueryFilter;
use datadog_api_client::datadogV2::model::CIAppQueryOptions;
use datadog_api_client::datadogV2::model::CIAppQueryPageOptions;
use datadog_api_client::datadogV2::model::CIAppSort;
#[tokio::main]
async fn main() {
let body = CIAppPipelineEventsRequest::new()
.filter(
CIAppPipelinesQueryFilter::new()
.from("now-15m".to_string())
.query("@ci.provider.name:github AND @ci.status:error".to_string())
.to("now".to_string()),
)
.options(CIAppQueryOptions::new().timezone("GMT".to_string()))
.page(CIAppQueryPageOptions::new().limit(5))
.sort(CIAppSort::TIMESTAMP_ASCENDING);
let configuration = datadog::Configuration::new();
let api = CIVisibilityPipelinesAPI::with_config(configuration);
let resp = api
.search_ci_app_pipeline_events(
SearchCIAppPipelineEventsOptionalParams::default().body(body),
)
.await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
// Search pipelines events returns "OK" response with pagination
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::CIVisibilityPipelinesAPI;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::SearchCIAppPipelineEventsOptionalParams;
use datadog_api_client::datadogV2::model::CIAppPipelineEventsRequest;
use datadog_api_client::datadogV2::model::CIAppPipelinesQueryFilter;
use datadog_api_client::datadogV2::model::CIAppQueryOptions;
use datadog_api_client::datadogV2::model::CIAppQueryPageOptions;
use datadog_api_client::datadogV2::model::CIAppSort;
use futures_util::pin_mut;
use futures_util::stream::StreamExt;
#[tokio::main]
async fn main() {
let body = CIAppPipelineEventsRequest::new()
.filter(
CIAppPipelinesQueryFilter::new()
.from("now-30s".to_string())
.to("now".to_string()),
)
.options(CIAppQueryOptions::new().timezone("GMT".to_string()))
.page(CIAppQueryPageOptions::new().limit(2))
.sort(CIAppSort::TIMESTAMP_ASCENDING);
let configuration = datadog::Configuration::new();
let api = CIVisibilityPipelinesAPI::with_config(configuration);
let response = api.search_ci_app_pipeline_events_with_pagination(
SearchCIAppPipelineEventsOptionalParams::default().body(body),
);
pin_mut!(response);
while let Some(resp) = response.next().await {
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
}
First install the library and its dependencies and then save the example to src/main.rs
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
/**
* Search pipelines events returns "OK" response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration();
const apiInstance = new v2.CIVisibilityPipelinesApi(configuration);
const params: v2.CIVisibilityPipelinesApiSearchCIAppPipelineEventsRequest = {
body: {
filter: {
from: "now-15m",
query: "@ci.provider.name:github AND @ci.status:error",
to: "now",
},
options: {
timezone: "GMT",
},
page: {
limit: 5,
},
sort: "timestamp",
},
};
apiInstance
.searchCIAppPipelineEvents(params)
.then((data: v2.CIAppPipelineEventsResponse) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
/**
* Search pipelines events returns "OK" response with pagination
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration();
const apiInstance = new v2.CIVisibilityPipelinesApi(configuration);
const params: v2.CIVisibilityPipelinesApiSearchCIAppPipelineEventsRequest = {
body: {
filter: {
from: "now-30s",
to: "now",
},
options: {
timezone: "GMT",
},
page: {
limit: 2,
},
sort: "timestamp",
},
};
(async () => {
try {
for await (const item of apiInstance.searchCIAppPipelineEventsWithPagination(
params
)) {
console.log(item);
}
} catch (error) {
console.error(error);
}
})();
First install the library and its dependencies and then save the example to example.ts
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"
POST https://api.ap1.datadoghq.com/api/v2/ci/pipelines/analytics/aggregatehttps://api.datadoghq.eu/api/v2/ci/pipelines/analytics/aggregatehttps://api.ddog-gov.com/api/v2/ci/pipelines/analytics/aggregatehttps://api.datadoghq.com/api/v2/ci/pipelines/analytics/aggregatehttps://api.us3.datadoghq.com/api/v2/ci/pipelines/analytics/aggregatehttps://api.us5.datadoghq.com/api/v2/ci/pipelines/analytics/aggregate
Use this API endpoint to aggregate CI Visibility pipeline events into buckets of computed metrics and timeseries.
This endpoint requires the ci_visibility_read
permission.
OAuth apps require the ci_visibility_read
authorization scope to access this endpoint.
항목
유형
설명
compute
[object]
The list of metrics or timeseries to compute for the retrieved buckets.
aggregation [required]
enum
An aggregation function.
Allowed enum values: count,cardinality,pc75,pc90,pc95,pc98,pc99,sum,min,max,avg,median,latest,earliest,most_frequent,delta
interval
string
The time buckets' size (only used for type=timeseries) Defaults to a resolution of 150 points.
metric
string
The metric to use.
type
enum
The type of compute.
Allowed enum values: timeseries,total
default: total
filter
object
The search and filter query settings.
from
string
The minimum time for the requested events; supports date, math, and regular timestamps (in milliseconds).
default: now-15m
query
string
The search query following the CI Visibility Explorer search syntax.
default: *
to
string
The maximum time for the requested events, supports date, math, and regular timestamps (in milliseconds).
default: now
group_by
[object]
The rules for the group-by.
facet [required]
string
The name of the facet to use (required).
histogram
object
Used to perform a histogram computation (only for measure facets).
At most, 100 buckets are allowed, the number of buckets is (max - min)/interval
.
interval [required]
double
The bin size of the histogram buckets.
max [required]
double
The maximum value for the measure used in the histogram (values greater than this one are filtered out).
min [required]
double
The minimum value for the measure used in the histogram (values smaller than this one are filtered out).
limit
int64
The maximum buckets to return for this group-by.
default: 10
missing
<oneOf>
The value to use for logs that don't have the facet used to group-by.
Option 1
string
The missing value to use if there is a string valued facet.
Option 2
double
The missing value to use if there is a number valued facet.
sort
object
A sort rule. The aggregation
field is required when type
is measure
.
aggregation
enum
An aggregation function.
Allowed enum values: count,cardinality,pc75,pc90,pc95,pc98,pc99,sum,min,max,avg,median,latest,earliest,most_frequent,delta
metric
string
The metric to sort by (only used for type=measure
).
order
enum
The order to use, ascending or descending.
Allowed enum values: asc,desc
type
enum
The type of sorting algorithm.
Allowed enum values: alphabetical,measure
default: alphabetical
total
<oneOf>
A resulting object to put the given computes in over all the matching records.
Option 1
boolean
If set to true, creates an additional bucket labeled "$facet_total".
Option 2
string
A string to use as the key value for the total bucket.
Option 3
double
A number to use as the key value for the total bucket.
options
object
Global query options that are used during the query. Only supply timezone or time offset, not both. Otherwise, the query fails.
time_offset
int64
The time offset (in seconds) to apply to the query.
timezone
string
The timezone can be specified as GMT, UTC, an offset from UTC (like UTC+1), or as a Timezone Database identifier (like America/New_York).
default: UTC
{
"compute": [
{
"aggregation": "pc90",
"metric": "@duration",
"type": "total"
}
],
"filter": {
"from": "now-15m",
"query": "@ci.provider.name:(gitlab OR github)",
"to": "now"
},
"group_by": [
{
"facet": "@ci.status",
"limit": 10,
"total": false
}
],
"options": {
"timezone": "GMT"
}
}
OK
The response object for the pipeline events aggregate API endpoint.
항목
유형
설명
data
object
The query results.
buckets
[object]
The list of matching buckets, one item per bucket.
by
object
The key-value pairs for each group-by.
<any-key>
The values for each group-by.
computes
object
A map of the metric name to value for regular compute, or a list of values for a timeseries.
<any-key>
<oneOf>
A bucket value, can either be a timeseries or a single value.
Option 1
string
A single string value.
Option 2
double
A single number value.
Option 3
[object]
A timeseries array.
time
date-time
The time value for this point.
value
double
The value for this point.
links
object
Links attributes.
next
string
Link for the next set of results. The request can also be made using the POST endpoint.
meta
object
The metadata associated with a request.
elapsed
int64
The time elapsed in milliseconds.
request_id
string
The identifier of the request.
status
enum
The status of the response.
Allowed enum values: done,timeout
warnings
[object]
A list of warnings (non-fatal errors) encountered. Partial results may return if warnings are present in the response.
code
string
A unique code for this type of warning.
detail
string
A detailed explanation of this specific warning.
title
string
A short human-readable summary of the warning.
{
"data": {
"buckets": [
{
"by": {
"<any-key>": "undefined"
},
"computes": {
"<any-key>": {
"description": "undefined",
"type": "undefined"
}
}
}
]
},
"links": {
"next": "https://app.datadoghq.com/api/v2/ci/tests/events?filter[query]=foo\u0026page[cursor]=eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ=="
},
"meta": {
"elapsed": 132,
"request_id": "MWlFUjVaWGZTTTZPYzM0VXp1OXU2d3xLSVpEMjZKQ0VKUTI0dEYtM3RSOFVR",
"status": "done",
"warnings": [
{
"code": "unknown_index",
"detail": "indexes: foo, bar",
"title": "One or several indexes are missing or invalid, results hold data from the other indexes"
}
]
}
}
Bad Request
API error response.
{
"errors": [
"Bad Request"
]
}
Not Authorized
API error response.
{
"errors": [
"Bad Request"
]
}
Too many requests
API error response.
{
"errors": [
"Bad Request"
]
}
# Curl command
curl -X POST "https://api.ap1.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/pipelines/analytics/aggregate" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "DD-API-KEY: ${DD_API_KEY}" \
-H "DD-APPLICATION-KEY: ${DD_APP_KEY}" \
-d @- << EOF
{
"compute": [
{
"aggregation": "pc90",
"metric": "@duration",
"type": "total"
}
],
"filter": {
"from": "now-15m",
"query": "@ci.provider.name:(gitlab OR github)",
"to": "now"
},
"group_by": [
{
"facet": "@ci.status",
"limit": 10,
"total": false
}
],
"options": {
"timezone": "GMT"
}
}
EOF
// Aggregate pipelines events returns "OK" response
package main
import (
"context"
"encoding/json"
"fmt"
"os"
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
"github.com/DataDog/datadog-api-client-go/v2/api/datadogV2"
)
func main() {
body := datadogV2.CIAppPipelinesAggregateRequest{
Compute: []datadogV2.CIAppCompute{
{
Aggregation: datadogV2.CIAPPAGGREGATIONFUNCTION_PERCENTILE_90,
Metric: datadog.PtrString("@duration"),
Type: datadogV2.CIAPPCOMPUTETYPE_TOTAL.Ptr(),
},
},
Filter: &datadogV2.CIAppPipelinesQueryFilter{
From: datadog.PtrString("now-15m"),
Query: datadog.PtrString("@ci.provider.name:(gitlab OR github)"),
To: datadog.PtrString("now"),
},
GroupBy: []datadogV2.CIAppPipelinesGroupBy{
{
Facet: "@ci.status",
Limit: datadog.PtrInt64(10),
Total: &datadogV2.CIAppGroupByTotal{
CIAppGroupByTotalBoolean: datadog.PtrBool(false)},
},
},
Options: &datadogV2.CIAppQueryOptions{
Timezone: datadog.PtrString("GMT"),
},
}
ctx := datadog.NewDefaultContext(context.Background())
configuration := datadog.NewConfiguration()
apiClient := datadog.NewAPIClient(configuration)
api := datadogV2.NewCIVisibilityPipelinesApi(apiClient)
resp, r, err := api.AggregateCIAppPipelineEvents(ctx, body)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `CIVisibilityPipelinesApi.AggregateCIAppPipelineEvents`: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
}
responseContent, _ := json.MarshalIndent(resp, "", " ")
fmt.Fprintf(os.Stdout, "Response from `CIVisibilityPipelinesApi.AggregateCIAppPipelineEvents`:\n%s\n", responseContent)
}
First install the library and its dependencies and then save the example to main.go
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
// Aggregate pipelines events returns "OK" response
import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v2.api.CiVisibilityPipelinesApi;
import com.datadog.api.client.v2.model.CIAppAggregationFunction;
import com.datadog.api.client.v2.model.CIAppCompute;
import com.datadog.api.client.v2.model.CIAppComputeType;
import com.datadog.api.client.v2.model.CIAppGroupByTotal;
import com.datadog.api.client.v2.model.CIAppPipelinesAggregateRequest;
import com.datadog.api.client.v2.model.CIAppPipelinesAnalyticsAggregateResponse;
import com.datadog.api.client.v2.model.CIAppPipelinesGroupBy;
import com.datadog.api.client.v2.model.CIAppPipelinesQueryFilter;
import com.datadog.api.client.v2.model.CIAppQueryOptions;
import java.util.Collections;
public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
CiVisibilityPipelinesApi apiInstance = new CiVisibilityPipelinesApi(defaultClient);
CIAppPipelinesAggregateRequest body =
new CIAppPipelinesAggregateRequest()
.compute(
Collections.singletonList(
new CIAppCompute()
.aggregation(CIAppAggregationFunction.PERCENTILE_90)
.metric("@duration")
.type(CIAppComputeType.TOTAL)))
.filter(
new CIAppPipelinesQueryFilter()
.from("now-15m")
.query("@ci.provider.name:(gitlab OR github)")
.to("now"))
.groupBy(
Collections.singletonList(
new CIAppPipelinesGroupBy()
.facet("@ci.status")
.limit(10L)
.total(new CIAppGroupByTotal(false))))
.options(new CIAppQueryOptions().timezone("GMT"));
try {
CIAppPipelinesAnalyticsAggregateResponse result =
apiInstance.aggregateCIAppPipelineEvents(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println(
"Exception when calling CiVisibilityPipelinesApi#aggregateCIAppPipelineEvents");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
First install the library and its dependencies and then save the example to Example.java
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
"""
Aggregate pipelines events returns "OK" response
"""
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.ci_visibility_pipelines_api import CIVisibilityPipelinesApi
from datadog_api_client.v2.model.ci_app_aggregation_function import CIAppAggregationFunction
from datadog_api_client.v2.model.ci_app_compute import CIAppCompute
from datadog_api_client.v2.model.ci_app_compute_type import CIAppComputeType
from datadog_api_client.v2.model.ci_app_pipelines_aggregate_request import CIAppPipelinesAggregateRequest
from datadog_api_client.v2.model.ci_app_pipelines_group_by import CIAppPipelinesGroupBy
from datadog_api_client.v2.model.ci_app_pipelines_query_filter import CIAppPipelinesQueryFilter
from datadog_api_client.v2.model.ci_app_query_options import CIAppQueryOptions
body = CIAppPipelinesAggregateRequest(
compute=[
CIAppCompute(
aggregation=CIAppAggregationFunction.PERCENTILE_90,
metric="@duration",
type=CIAppComputeType.TOTAL,
),
],
filter=CIAppPipelinesQueryFilter(
_from="now-15m",
query="@ci.provider.name:(gitlab OR github)",
to="now",
),
group_by=[
CIAppPipelinesGroupBy(
facet="@ci.status",
limit=10,
total=False,
),
],
options=CIAppQueryOptions(
timezone="GMT",
),
)
configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = CIVisibilityPipelinesApi(api_client)
response = api_instance.aggregate_ci_app_pipeline_events(body=body)
print(response)
First install the library and its dependencies and then save the example to example.py
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
# Aggregate pipelines events returns "OK" response
require "datadog_api_client"
api_instance = DatadogAPIClient::V2::CIVisibilityPipelinesAPI.new
body = DatadogAPIClient::V2::CIAppPipelinesAggregateRequest.new({
compute: [
DatadogAPIClient::V2::CIAppCompute.new({
aggregation: DatadogAPIClient::V2::CIAppAggregationFunction::PERCENTILE_90,
metric: "@duration",
type: DatadogAPIClient::V2::CIAppComputeType::TOTAL,
}),
],
filter: DatadogAPIClient::V2::CIAppPipelinesQueryFilter.new({
from: "now-15m",
query: "@ci.provider.name:(gitlab OR github)",
to: "now",
}),
group_by: [
DatadogAPIClient::V2::CIAppPipelinesGroupBy.new({
facet: "@ci.status",
limit: 10,
total: false,
}),
],
options: DatadogAPIClient::V2::CIAppQueryOptions.new({
timezone: "GMT",
}),
})
p api_instance.aggregate_ci_app_pipeline_events(body)
First install the library and its dependencies and then save the example to example.rb
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
// Aggregate pipelines events returns "OK" response
use datadog_api_client::datadog;
use datadog_api_client::datadogV2::api_ci_visibility_pipelines::CIVisibilityPipelinesAPI;
use datadog_api_client::datadogV2::model::CIAppAggregationFunction;
use datadog_api_client::datadogV2::model::CIAppCompute;
use datadog_api_client::datadogV2::model::CIAppComputeType;
use datadog_api_client::datadogV2::model::CIAppGroupByTotal;
use datadog_api_client::datadogV2::model::CIAppPipelinesAggregateRequest;
use datadog_api_client::datadogV2::model::CIAppPipelinesGroupBy;
use datadog_api_client::datadogV2::model::CIAppPipelinesQueryFilter;
use datadog_api_client::datadogV2::model::CIAppQueryOptions;
#[tokio::main]
async fn main() {
let body = CIAppPipelinesAggregateRequest::new()
.compute(vec![CIAppCompute::new(
CIAppAggregationFunction::PERCENTILE_90,
)
.metric("@duration".to_string())
.type_(CIAppComputeType::TOTAL)])
.filter(
CIAppPipelinesQueryFilter::new()
.from("now-15m".to_string())
.query("@ci.provider.name:(gitlab OR github)".to_string())
.to("now".to_string()),
)
.group_by(vec![CIAppPipelinesGroupBy::new("@ci.status".to_string())
.limit(10)
.total(CIAppGroupByTotal::CIAppGroupByTotalBoolean(false))])
.options(CIAppQueryOptions::new().timezone("GMT".to_string()));
let configuration = datadog::Configuration::new();
let api = CIVisibilityPipelinesAPI::with_config(configuration);
let resp = api.aggregate_ci_app_pipeline_events(body).await;
if let Ok(value) = resp {
println!("{:#?}", value);
} else {
println!("{:#?}", resp.unwrap_err());
}
}
First install the library and its dependencies and then save the example to src/main.rs
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
/**
* Aggregate pipelines events returns "OK" response
*/
import { client, v2 } from "@datadog/datadog-api-client";
const configuration = client.createConfiguration();
const apiInstance = new v2.CIVisibilityPipelinesApi(configuration);
const params: v2.CIVisibilityPipelinesApiAggregateCIAppPipelineEventsRequest = {
body: {
compute: [
{
aggregation: "pc90",
metric: "@duration",
type: "total",
},
],
filter: {
from: "now-15m",
query: "@ci.provider.name:(gitlab OR github)",
to: "now",
},
groupBy: [
{
facet: "@ci.status",
limit: 10,
total: false,
},
],
options: {
timezone: "GMT",
},
},
};
apiInstance
.aggregateCIAppPipelineEvents(params)
.then((data: v2.CIAppPipelinesAnalyticsAggregateResponse) => {
console.log(
"API called successfully. Returned data: " + JSON.stringify(data)
);
})
.catch((error: any) => console.error(error));
First install the library and its dependencies and then save the example to example.ts
and run following commands:
DD_SITE="datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.euap1.datadoghq.comddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"