Search tests events

POST https://api.ap1.datadoghq.com/api/v2/ci/tests/events/searchhttps://api.ap2.datadoghq.com/api/v2/ci/tests/events/searchhttps://api.datadoghq.eu/api/v2/ci/tests/events/searchhttps://api.ddog-gov.com/api/v2/ci/tests/events/searchhttps://api.us2.ddog-gov.com/api/v2/ci/tests/events/searchhttps://api.datadoghq.com/api/v2/ci/tests/events/searchhttps://api.us3.datadoghq.com/api/v2/ci/tests/events/searchhttps://api.us5.datadoghq.com/api/v2/ci/tests/events/search

Overview

List endpoint returns CI Visibility test 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 any of the following permissions:
  • ci_visibility_read
  • test_optimization_read

  • OAuth apps require the test_optimization_read authorization scope to access this endpoint.

    Request

    Body Data

    Expand All

    Field

    Type

    Description

    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": "@test.service:web-ui-tests AND @test.status:skip",
        "to": "now"
      },
      "options": {
        "timezone": "GMT"
      },
      "page": {
        "limit": 25
      },
      "sort": "timestamp"
    }
    {
      "filter": {
        "from": "now-15m",
        "query": "@test.status:pass AND -@language:python",
        "to": "now"
      },
      "page": {
        "limit": 2
      },
      "sort": "timestamp"
    }

    Response

    OK

    Response object with all test events matching the request and pagination information.

    Expand All

    Field

    Type

    Description

    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 test events.

    tags

    [string]

    Array of tags associated with your event.

    test_level

    enum

    Test run level. Allowed enum values: session,module,suite,test

    id

    string

    Unique ID of the event.

    type

    enum

    Type of the event. Allowed enum values: citest

    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
            },
            "tags": [
              "team:A"
            ],
            "test_level": "test"
          },
          "id": "AAAAAWgN8Xwgr1vKDQAAAABBV2dOOFh3ZzZobm1mWXJFYTR0OA",
          "type": "citest"
        }
      ],
      "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.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Not Authorized

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Too many requests

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [string]

    A list of errors.

    {
      "errors": [
        "Bad Request"
      ]
    }

    Code Example

                              ## default
    # 
    
    # Curl command
    curl -X POST "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/tests/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": "@test.service:web-tests AND @test.status:fail", "to": "now" }, "options": { "timezone": "GMT" }, "page": { "cursor": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", "limit": 25 }, "sort": "timestamp" } EOF
                              ## default
    # 
    
    # Curl command
    curl -X POST "https://api.ap1.datadoghq.com"https://api.ap2.datadoghq.com"https://api.datadoghq.eu"https://api.ddog-gov.com"https://api.us2.ddog-gov.com"https://api.datadoghq.com"https://api.us3.datadoghq.com"https://api.us5.datadoghq.com/api/v2/ci/tests/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": "@test.service:web-tests AND @test.status:fail", "to": "now" }, "options": { "timezone": "GMT" }, "page": { "cursor": "eyJzdGFydEF0IjoiQVFBQUFYS2tMS3pPbm40NGV3QUFBQUJCV0V0clRFdDZVbG8zY3pCRmNsbHJiVmxDWlEifQ==", "limit": 25 }, "sort": "timestamp" } EOF
    // Search tests 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.CIAppTestEventsRequest{
    		Filter: &datadogV2.CIAppTestsQueryFilter{
    			From:  datadog.PtrString("now-15m"),
    			Query: datadog.PtrString("@test.service:web-ui-tests AND @test.status:skip"),
    			To:    datadog.PtrString("now"),
    		},
    		Options: &datadogV2.CIAppQueryOptions{
    			Timezone: datadog.PtrString("GMT"),
    		},
    		Page: &datadogV2.CIAppQueryPageOptions{
    			Limit: datadog.PtrInt32(25),
    		},
    		Sort: datadogV2.CIAPPSORT_TIMESTAMP_ASCENDING.Ptr(),
    	}
    	ctx := datadog.NewDefaultContext(context.Background())
    	configuration := datadog.NewConfiguration()
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewCIVisibilityTestsApi(apiClient)
    	resp, r, err := api.SearchCIAppTestEvents(ctx, *datadogV2.NewSearchCIAppTestEventsOptionalParameters().WithBody(body))
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `CIVisibilityTestsApi.SearchCIAppTestEvents`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `CIVisibilityTestsApi.SearchCIAppTestEvents`:\n%s\n", responseContent)
    }
    
    // Search tests 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.CIAppTestEventsRequest{
    		Filter: &datadogV2.CIAppTestsQueryFilter{
    			From:  datadog.PtrString("now-15m"),
    			Query: datadog.PtrString("@test.status:pass AND -@language:python"),
    			To:    datadog.PtrString("now"),
    		},
    		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.NewCIVisibilityTestsApi(apiClient)
    	resp, _ := api.SearchCIAppTestEventsWithPagination(ctx, *datadogV2.NewSearchCIAppTestEventsOptionalParameters().WithBody(body))
    
    	for paginationResult := range resp {
    		if paginationResult.Error != nil {
    			fmt.Fprintf(os.Stderr, "Error when calling `CIVisibilityTestsApi.SearchCIAppTestEvents`: %v\n", paginationResult.Error)
    		}
    		responseContent, _ := json.MarshalIndent(paginationResult.Item, "", "  ")
    		fmt.Fprintf(os.Stdout, "%s\n", responseContent)
    	}
    }
    

    Instructions

    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.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" go run "main.go"
    // Search tests events returns "OK" response
    
    import com.datadog.api.client.ApiClient;
    import com.datadog.api.client.ApiException;
    import com.datadog.api.client.v2.api.CiVisibilityTestsApi;
    import com.datadog.api.client.v2.api.CiVisibilityTestsApi.SearchCIAppTestEventsOptionalParameters;
    import com.datadog.api.client.v2.model.CIAppQueryOptions;
    import com.datadog.api.client.v2.model.CIAppQueryPageOptions;
    import com.datadog.api.client.v2.model.CIAppSort;
    import com.datadog.api.client.v2.model.CIAppTestEventsRequest;
    import com.datadog.api.client.v2.model.CIAppTestEventsResponse;
    import com.datadog.api.client.v2.model.CIAppTestsQueryFilter;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        CiVisibilityTestsApi apiInstance = new CiVisibilityTestsApi(defaultClient);
    
        CIAppTestEventsRequest body =
            new CIAppTestEventsRequest()
                .filter(
                    new CIAppTestsQueryFilter()
                        .from("now-15m")
                        .query("@test.service:web-ui-tests AND @test.status:skip")
                        .to("now"))
                .options(new CIAppQueryOptions().timezone("GMT"))
                .page(new CIAppQueryPageOptions().limit(25))
                .sort(CIAppSort.TIMESTAMP_ASCENDING);
    
        try {
          CIAppTestEventsResponse result =
              apiInstance.searchCIAppTestEvents(
                  new SearchCIAppTestEventsOptionalParameters().body(body));
          System.out.println(result);
        } catch (ApiException e) {
          System.err.println("Exception when calling CiVisibilityTestsApi#searchCIAppTestEvents");
          System.err.println("Status code: " + e.getCode());
          System.err.println("Reason: " + e.getResponseBody());
          System.err.println("Response headers: " + e.getResponseHeaders());
          e.printStackTrace();
        }
      }
    }
    
    // Search tests 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.CiVisibilityTestsApi;
    import com.datadog.api.client.v2.api.CiVisibilityTestsApi.SearchCIAppTestEventsOptionalParameters;
    import com.datadog.api.client.v2.model.CIAppQueryPageOptions;
    import com.datadog.api.client.v2.model.CIAppSort;
    import com.datadog.api.client.v2.model.CIAppTestEvent;
    import com.datadog.api.client.v2.model.CIAppTestEventsRequest;
    import com.datadog.api.client.v2.model.CIAppTestsQueryFilter;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        CiVisibilityTestsApi apiInstance = new CiVisibilityTestsApi(defaultClient);
    
        CIAppTestEventsRequest body =
            new CIAppTestEventsRequest()
                .filter(
                    new CIAppTestsQueryFilter()
                        .from("now-15m")
                        .query("@test.status:pass AND -@language:python")
                        .to("now"))
                .page(new CIAppQueryPageOptions().limit(2))
                .sort(CIAppSort.TIMESTAMP_ASCENDING);
    
        try {
          PaginationIterable<CIAppTestEvent> iterable =
              apiInstance.searchCIAppTestEventsWithPagination(
                  new SearchCIAppTestEventsOptionalParameters().body(body));
    
          for (CIAppTestEvent item : iterable) {
            System.out.println(item);
          }
        } catch (RuntimeException e) {
          System.err.println(
              "Exception when calling CiVisibilityTestsApi#searchCIAppTestEventsWithPagination");
          System.err.println("Reason: " + e.getMessage());
          e.printStackTrace();
        }
      }
    }
    

    Instructions

    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.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" java "Example.java"
    """
    Search tests events returns "OK" response
    """
    
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.ci_visibility_tests_api import CIVisibilityTestsApi
    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
    from datadog_api_client.v2.model.ci_app_test_events_request import CIAppTestEventsRequest
    from datadog_api_client.v2.model.ci_app_tests_query_filter import CIAppTestsQueryFilter
    
    body = CIAppTestEventsRequest(
        filter=CIAppTestsQueryFilter(
            _from="now-15m",
            query="@test.service:web-ui-tests AND @test.status:skip",
            to="now",
        ),
        options=CIAppQueryOptions(
            timezone="GMT",
        ),
        page=CIAppQueryPageOptions(
            limit=25,
        ),
        sort=CIAppSort.TIMESTAMP_ASCENDING,
    )
    
    configuration = Configuration()
    with ApiClient(configuration) as api_client:
        api_instance = CIVisibilityTestsApi(api_client)
        response = api_instance.search_ci_app_test_events(body=body)
    
        print(response)
    
    """
    Search tests events returns "OK" response with pagination
    """
    
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.ci_visibility_tests_api import CIVisibilityTestsApi
    from datadog_api_client.v2.model.ci_app_query_page_options import CIAppQueryPageOptions
    from datadog_api_client.v2.model.ci_app_sort import CIAppSort
    from datadog_api_client.v2.model.ci_app_test_events_request import CIAppTestEventsRequest
    from datadog_api_client.v2.model.ci_app_tests_query_filter import CIAppTestsQueryFilter
    
    body = CIAppTestEventsRequest(
        filter=CIAppTestsQueryFilter(
            _from="now-15m",
            query="@test.status:pass AND -@language:python",
            to="now",
        ),
        page=CIAppQueryPageOptions(
            limit=2,
        ),
        sort=CIAppSort.TIMESTAMP_ASCENDING,
    )
    
    configuration = Configuration()
    with ApiClient(configuration) as api_client:
        api_instance = CIVisibilityTestsApi(api_client)
        items = api_instance.search_ci_app_test_events_with_pagination(body=body)
        for item in items:
            print(item)
    

    Instructions

    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.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" python3 "example.py"
    # Search tests events returns "OK" response
    
    require "datadog_api_client"
    api_instance = DatadogAPIClient::V2::CIVisibilityTestsAPI.new
    
    body = DatadogAPIClient::V2::CIAppTestEventsRequest.new({
      filter: DatadogAPIClient::V2::CIAppTestsQueryFilter.new({
        from: "now-15m",
        query: "@test.service:web-ui-tests AND @test.status:skip",
        to: "now",
      }),
      options: DatadogAPIClient::V2::CIAppQueryOptions.new({
        timezone: "GMT",
      }),
      page: DatadogAPIClient::V2::CIAppQueryPageOptions.new({
        limit: 25,
      }),
      sort: DatadogAPIClient::V2::CIAppSort::TIMESTAMP_ASCENDING,
    })
    opts = {
      body: body,
    }
    p api_instance.search_ci_app_test_events(opts)
    
    # Search tests events returns "OK" response with pagination
    
    require "datadog_api_client"
    api_instance = DatadogAPIClient::V2::CIVisibilityTestsAPI.new
    
    body = DatadogAPIClient::V2::CIAppTestEventsRequest.new({
      filter: DatadogAPIClient::V2::CIAppTestsQueryFilter.new({
        from: "now-15m",
        query: "@test.status:pass AND -@language:python",
        to: "now",
      }),
      page: DatadogAPIClient::V2::CIAppQueryPageOptions.new({
        limit: 2,
      }),
      sort: DatadogAPIClient::V2::CIAppSort::TIMESTAMP_ASCENDING,
    })
    opts = {
      body: body,
    }
    api_instance.search_ci_app_test_events_with_pagination(opts) { |item| puts item }
    

    Instructions

    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.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" rb "example.rb"
    // Search tests events returns "OK" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_ci_visibility_tests::CIVisibilityTestsAPI;
    use datadog_api_client::datadogV2::api_ci_visibility_tests::SearchCIAppTestEventsOptionalParams;
    use datadog_api_client::datadogV2::model::CIAppQueryOptions;
    use datadog_api_client::datadogV2::model::CIAppQueryPageOptions;
    use datadog_api_client::datadogV2::model::CIAppSort;
    use datadog_api_client::datadogV2::model::CIAppTestEventsRequest;
    use datadog_api_client::datadogV2::model::CIAppTestsQueryFilter;
    
    #[tokio::main]
    async fn main() {
        let body = CIAppTestEventsRequest::new()
            .filter(
                CIAppTestsQueryFilter::new()
                    .from("now-15m".to_string())
                    .query("@test.service:web-ui-tests AND @test.status:skip".to_string())
                    .to("now".to_string()),
            )
            .options(CIAppQueryOptions::new().timezone("GMT".to_string()))
            .page(CIAppQueryPageOptions::new().limit(25))
            .sort(CIAppSort::TIMESTAMP_ASCENDING);
        let configuration = datadog::Configuration::new();
        let api = CIVisibilityTestsAPI::with_config(configuration);
        let resp = api
            .search_ci_app_test_events(SearchCIAppTestEventsOptionalParams::default().body(body))
            .await;
        if let Ok(value) = resp {
            println!("{:#?}", value);
        } else {
            println!("{:#?}", resp.unwrap_err());
        }
    }
    
    // Search tests events returns "OK" response with pagination
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_ci_visibility_tests::CIVisibilityTestsAPI;
    use datadog_api_client::datadogV2::api_ci_visibility_tests::SearchCIAppTestEventsOptionalParams;
    use datadog_api_client::datadogV2::model::CIAppQueryPageOptions;
    use datadog_api_client::datadogV2::model::CIAppSort;
    use datadog_api_client::datadogV2::model::CIAppTestEventsRequest;
    use datadog_api_client::datadogV2::model::CIAppTestsQueryFilter;
    use futures_util::pin_mut;
    use futures_util::stream::StreamExt;
    
    #[tokio::main]
    async fn main() {
        let body = CIAppTestEventsRequest::new()
            .filter(
                CIAppTestsQueryFilter::new()
                    .from("now-15m".to_string())
                    .query("@test.status:pass AND -@language:python".to_string())
                    .to("now".to_string()),
            )
            .page(CIAppQueryPageOptions::new().limit(2))
            .sort(CIAppSort::TIMESTAMP_ASCENDING);
        let configuration = datadog::Configuration::new();
        let api = CIVisibilityTestsAPI::with_config(configuration);
        let response = api.search_ci_app_test_events_with_pagination(
            SearchCIAppTestEventsOptionalParams::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());
            }
        }
    }
    

    Instructions

    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.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" cargo run
    /**
     * Search tests events returns "OK" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration();
    const apiInstance = new v2.CIVisibilityTestsApi(configuration);
    
    const params: v2.CIVisibilityTestsApiSearchCIAppTestEventsRequest = {
      body: {
        filter: {
          from: "now-15m",
          query: "@test.service:web-ui-tests AND @test.status:skip",
          to: "now",
        },
        options: {
          timezone: "GMT",
        },
        page: {
          limit: 25,
        },
        sort: "timestamp",
      },
    };
    
    apiInstance
      .searchCIAppTestEvents(params)
      .then((data: v2.CIAppTestEventsResponse) => {
        console.log(
          "API called successfully. Returned data: " + JSON.stringify(data)
        );
      })
      .catch((error: any) => console.error(error));
    
    /**
     * Search tests events returns "OK" response with pagination
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration();
    const apiInstance = new v2.CIVisibilityTestsApi(configuration);
    
    const params: v2.CIVisibilityTestsApiSearchCIAppTestEventsRequest = {
      body: {
        filter: {
          from: "now-15m",
          query: "@test.status:pass AND -@language:python",
          to: "now",
        },
        page: {
          limit: 2,
        },
        sort: "timestamp",
      },
    };
    
    (async () => {
      try {
        for await (const item of apiInstance.searchCIAppTestEventsWithPagination(
          params
        )) {
          console.log(item);
        }
      } catch (error) {
        console.error(error);
      }
    })();
    

    Instructions

    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.comap2.datadoghq.comddog-gov.comus2.ddog-gov.com" DD_API_KEY="<DD_API_KEY>" DD_APP_KEY="<DD_APP_KEY>" tsc "example.ts"