Update a Synthetics downtime

PUT https://api.ap1.datadoghq.com/api/v2/synthetics/downtimes/{downtime_id}https://api.ap2.datadoghq.com/api/v2/synthetics/downtimes/{downtime_id}https://api.datadoghq.eu/api/v2/synthetics/downtimes/{downtime_id}https://api.ddog-gov.com/api/v2/synthetics/downtimes/{downtime_id}https://api.us2.ddog-gov.com/api/v2/synthetics/downtimes/{downtime_id}https://api.datadoghq.com/api/v2/synthetics/downtimes/{downtime_id}https://api.us3.datadoghq.com/api/v2/synthetics/downtimes/{downtime_id}https://api.us5.datadoghq.com/api/v2/synthetics/downtimes/{downtime_id}

Overview

Update a Synthetics downtime by its ID. This endpoint requires all of the following permissions:

  • synthetics_write
  • synthetics_default_settings_write

  • Arguments

    Path Parameters

    Name

    Type

    Description

    downtime_id [required]

    string

    The ID of the downtime to update.

    Request

    Body Data (required)

    Expand All

    Field

    Type

    Description

    data [required]

    object

    The data object for a Synthetics downtime create or update request.

    attributes [required]

    object

    Attributes for creating or updating a Synthetics downtime.

    description

    string

    An optional description of the downtime.

    isEnabled [required]

    boolean

    Whether the downtime is enabled.

    name [required]

    string

    The name of the downtime.

    tags

    [string]

    List of tags associated with a Synthetics downtime.

    testIds [required]

    [string]

    List of Synthetics test public IDs associated with a downtime.

    timeSlots [required]

    [object]

    List of time slots for a Synthetics downtime create or update request.

    duration [required]

    int64

    The duration of the time slot in seconds, between 60 and 604800.

    name

    string

    An optional label for the time slot.

    recurrence

    object

    Recurrence settings for a Synthetics downtime time slot.

    end

    object

    A specific date and time used to define the start or end of a Synthetics downtime time slot.

    day [required]

    int64

    The day component of the date (1-31).

    hour [required]

    int64

    The hour component of the time (0-23).

    minute [required]

    int64

    The minute component of the time (0-59).

    month [required]

    int64

    The month component of the date (1-12).

    year [required]

    int64

    The year component of the date.

    frequency [required]

    enum

    The recurrence frequency of a Synthetics downtime time slot. Allowed enum values: DAILY,WEEKLY,MONTHLY,YEARLY

    interval

    int64

    The interval between recurrences, relative to the frequency.

    weekdayPositions

    [integer]

    Positions of the weekdays within a month for a monthly Synthetics downtime recurrence. Used in combination with weekdays to schedule occurrences such as "the first Monday of the month".

    weekdays

    [string]

    Days of the week for a Synthetics downtime recurrence schedule.

    start [required]

    object

    A specific date and time used to define the start or end of a Synthetics downtime time slot.

    day [required]

    int64

    The day component of the date (1-31).

    hour [required]

    int64

    The hour component of the time (0-23).

    minute [required]

    int64

    The minute component of the time (0-59).

    month [required]

    int64

    The month component of the date (1-12).

    year [required]

    int64

    The year component of the date.

    timezone [required]

    string

    The IANA timezone name for the time slot.

    type [required]

    enum

    The resource type for a Synthetics downtime. Allowed enum values: downtime

    {
      "data": {
        "attributes": {
          "description": "Scheduled weekly maintenance window.",
          "isEnabled": true,
          "name": "Weekly maintenance",
          "tags": [
            "team:backend",
            "env:prod"
          ],
          "testIds": [
            "abc-def-123",
            "xyz-uvw-456"
          ],
          "timeSlots": [
            {
              "duration": 3600,
              "name": "Weekly maintenance window",
              "recurrence": {
                "end": {
                  "day": 15,
                  "hour": 10,
                  "minute": 30,
                  "month": 1,
                  "year": 2024
                },
                "frequency": "WEEKLY",
                "interval": 1,
                "weekdayPositions": [
                  1
                ],
                "weekdays": [
                  "MO",
                  "WE",
                  "FR"
                ]
              },
              "start": {
                "day": 15,
                "hour": 10,
                "minute": 30,
                "month": 1,
                "year": 2024
              },
              "timezone": "Europe/Paris"
            }
          ]
        },
        "type": "downtime"
      }
    }

    Response

    OK

    Response containing a single Synthetics downtime.

    Expand All

    Field

    Type

    Description

    data [required]

    object

    A Synthetics downtime object.

    attributes [required]

    object

    Attributes of a Synthetics downtime response object.

    createdAt [required]

    date-time

    The timestamp when the downtime was created.

    createdBy [required]

    string

    The UUID of the user who created the downtime.

    createdByName [required]

    string

    The display name of the user who created the downtime.

    description [required]

    string

    The description of the downtime.

    isEnabled [required]

    boolean

    Whether the downtime is enabled.

    name [required]

    string

    The name of the downtime.

    tags [required]

    [string]

    List of tags associated with a Synthetics downtime.

    testIds [required]

    [string]

    List of Synthetics test public IDs associated with a downtime.

    timeSlots [required]

    [object]

    List of time slots in a Synthetics downtime response.

    duration [required]

    int64

    The duration of the time slot in seconds.

    id [required]

    string

    The unique identifier of the time slot.

    name

    string

    The label for the time slot.

    recurrence

    object

    Recurrence settings returned in a Synthetics downtime time slot response.

    frequency [required]

    enum

    The recurrence frequency of a Synthetics downtime time slot. Allowed enum values: DAILY,WEEKLY,MONTHLY,YEARLY

    interval [required]

    int64

    The interval between recurrences, relative to the frequency.

    until

    object

    A specific date and time used to define the start or end of a Synthetics downtime time slot.

    day [required]

    int64

    The day component of the date (1-31).

    hour [required]

    int64

    The hour component of the time (0-23).

    minute [required]

    int64

    The minute component of the time (0-59).

    month [required]

    int64

    The month component of the date (1-12).

    year [required]

    int64

    The year component of the date.

    weekdayPositions

    [integer]

    Positions of the weekdays within a month for a monthly Synthetics downtime recurrence. Used in combination with weekdays to schedule occurrences such as "the first Monday of the month".

    weekdays [required]

    [string]

    Days of the week for a Synthetics downtime recurrence schedule.

    start [required]

    object

    A specific date and time used to define the start or end of a Synthetics downtime time slot.

    day [required]

    int64

    The day component of the date (1-31).

    hour [required]

    int64

    The hour component of the time (0-23).

    minute [required]

    int64

    The minute component of the time (0-59).

    month [required]

    int64

    The month component of the date (1-12).

    year [required]

    int64

    The year component of the date.

    timezone [required]

    string

    The IANA timezone name for the time slot.

    updatedAt [required]

    date-time

    The timestamp when the downtime was last updated.

    updatedBy [required]

    string

    The UUID of the user who last updated the downtime.

    updatedByName [required]

    string

    The display name of the user who last updated the downtime.

    id [required]

    string

    The unique identifier of the downtime.

    type [required]

    enum

    The resource type for a Synthetics downtime. Allowed enum values: downtime

    {
      "data": {
        "attributes": {
          "createdAt": "2024-01-15T10:30:00Z",
          "createdBy": "00000000-0000-0000-0000-000000000003",
          "createdByName": "Jane Doe",
          "description": "Scheduled weekly maintenance window.",
          "isEnabled": true,
          "name": "Weekly maintenance",
          "tags": [
            "team:backend",
            "env:prod"
          ],
          "testIds": [
            "abc-def-123",
            "xyz-uvw-456"
          ],
          "timeSlots": [
            {
              "duration": 3600,
              "id": "00000000-0000-0000-0000-000000000002",
              "name": "Weekly maintenance window",
              "recurrence": {
                "frequency": "WEEKLY",
                "interval": 1,
                "until": {
                  "day": 15,
                  "hour": 10,
                  "minute": 30,
                  "month": 1,
                  "year": 2024
                },
                "weekdayPositions": [
                  1
                ],
                "weekdays": [
                  "MO",
                  "WE",
                  "FR"
                ]
              },
              "start": {
                "day": 15,
                "hour": 10,
                "minute": 30,
                "month": 1,
                "year": 2024
              },
              "timezone": "Europe/Paris"
            }
          ],
          "updatedAt": "2024-01-15T10:30:00Z",
          "updatedBy": "00000000-0000-0000-0000-000000000003",
          "updatedByName": "Jane Doe"
        },
        "id": "00000000-0000-0000-0000-000000000001",
        "type": "downtime"
      }
    }

    Bad Request

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Forbidden

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "Bad Request"
        }
      ]
    }

    Not Found

    API error response.

    Expand All

    Field

    Type

    Description

    errors [required]

    [object]

    A list of errors.

    detail

    string

    A human-readable explanation specific to this occurrence of the error.

    meta

    object

    Non-standard meta-information about the error

    source

    object

    References to the source of the error.

    header

    string

    A string indicating the name of a single request header which caused the error.

    parameter

    string

    A string indicating which URI query parameter caused the error.

    pointer

    string

    A JSON pointer to the value in the request document that caused the error.

    status

    string

    Status code of the response.

    title

    string

    Short human-readable summary of the error.

    {
      "errors": [
        {
          "detail": "Missing required attribute in body",
          "meta": {},
          "source": {
            "header": "Authorization",
            "parameter": "limit",
            "pointer": "/data/attributes/title"
          },
          "status": "400",
          "title": "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
    # 
    
    # Path parameters
    export downtime_id="00000000-0000-0000-0000-000000000001"
    # Curl command
    curl -X PUT "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/synthetics/downtimes/${downtime_id}" \ -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 { "data": { "attributes": { "isEnabled": true, "name": "Weekly maintenance", "testIds": [ "abc-def-123" ], "timeSlots": [ { "duration": 3600, "start": { "day": 15, "hour": 10, "minute": 30, "month": 1, "year": 2024 }, "timezone": "Europe/Paris" } ] }, "type": "downtime" } } EOF
    """
    Update a Synthetics downtime returns "OK" response
    """
    
    from datadog_api_client import ApiClient, Configuration
    from datadog_api_client.v2.api.synthetics_api import SyntheticsApi
    from datadog_api_client.v2.model.synthetics_downtime_data_attributes_request import (
        SyntheticsDowntimeDataAttributesRequest,
    )
    from datadog_api_client.v2.model.synthetics_downtime_data_request import SyntheticsDowntimeDataRequest
    from datadog_api_client.v2.model.synthetics_downtime_request import SyntheticsDowntimeRequest
    from datadog_api_client.v2.model.synthetics_downtime_resource_type import SyntheticsDowntimeResourceType
    from datadog_api_client.v2.model.synthetics_downtime_time_slot_date import SyntheticsDowntimeTimeSlotDate
    from datadog_api_client.v2.model.synthetics_downtime_time_slot_request import SyntheticsDowntimeTimeSlotRequest
    
    body = SyntheticsDowntimeRequest(
        data=SyntheticsDowntimeDataRequest(
            attributes=SyntheticsDowntimeDataAttributesRequest(
                is_enabled=True,
                name="Weekly maintenance",
                test_ids=[
                    "abc-def-123",
                ],
                time_slots=[
                    SyntheticsDowntimeTimeSlotRequest(
                        duration=3600,
                        start=SyntheticsDowntimeTimeSlotDate(
                            day=15,
                            hour=10,
                            minute=30,
                            month=1,
                            year=2024,
                        ),
                        timezone="Europe/Paris",
                    ),
                ],
            ),
            type=SyntheticsDowntimeResourceType.DOWNTIME,
        ),
    )
    
    configuration = Configuration()
    with ApiClient(configuration) as api_client:
        api_instance = SyntheticsApi(api_client)
        response = api_instance.update_synthetics_downtime(downtime_id="00000000-0000-0000-0000-000000000001", body=body)
    
        print(response)
    

    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="<API-KEY>" DD_APP_KEY="<APP-KEY>" python3 "example.py"
    # Update a Synthetics downtime returns "OK" response
    
    require "datadog_api_client"
    api_instance = DatadogAPIClient::V2::SyntheticsAPI.new
    
    body = DatadogAPIClient::V2::SyntheticsDowntimeRequest.new({
      data: DatadogAPIClient::V2::SyntheticsDowntimeDataRequest.new({
        attributes: DatadogAPIClient::V2::SyntheticsDowntimeDataAttributesRequest.new({
          is_enabled: true,
          name: "Weekly maintenance",
          test_ids: [
            "abc-def-123",
          ],
          time_slots: [
            DatadogAPIClient::V2::SyntheticsDowntimeTimeSlotRequest.new({
              duration: 3600,
              start: DatadogAPIClient::V2::SyntheticsDowntimeTimeSlotDate.new({
                day: 15,
                hour: 10,
                minute: 30,
                month: 1,
                year: 2024,
              }),
              timezone: "Europe/Paris",
            }),
          ],
        }),
        type: DatadogAPIClient::V2::SyntheticsDowntimeResourceType::DOWNTIME,
      }),
    })
    p api_instance.update_synthetics_downtime("00000000-0000-0000-0000-000000000001", body)
    

    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="<API-KEY>" DD_APP_KEY="<APP-KEY>" rb "example.rb"
    // Update a Synthetics downtime 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.SyntheticsDowntimeRequest{
    		Data: datadogV2.SyntheticsDowntimeDataRequest{
    			Attributes: datadogV2.SyntheticsDowntimeDataAttributesRequest{
    				IsEnabled: true,
    				Name:      "Weekly maintenance",
    				TestIds: []string{
    					"abc-def-123",
    				},
    				TimeSlots: []datadogV2.SyntheticsDowntimeTimeSlotRequest{
    					{
    						Duration: 3600,
    						Start: datadogV2.SyntheticsDowntimeTimeSlotDate{
    							Day:    15,
    							Hour:   10,
    							Minute: 30,
    							Month:  1,
    							Year:   2024,
    						},
    						Timezone: "Europe/Paris",
    					},
    				},
    			},
    			Type: datadogV2.SYNTHETICSDOWNTIMERESOURCETYPE_DOWNTIME,
    		},
    	}
    	ctx := datadog.NewDefaultContext(context.Background())
    	configuration := datadog.NewConfiguration()
    	apiClient := datadog.NewAPIClient(configuration)
    	api := datadogV2.NewSyntheticsApi(apiClient)
    	resp, r, err := api.UpdateSyntheticsDowntime(ctx, "00000000-0000-0000-0000-000000000001", body)
    
    	if err != nil {
    		fmt.Fprintf(os.Stderr, "Error when calling `SyntheticsApi.UpdateSyntheticsDowntime`: %v\n", err)
    		fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
    	}
    
    	responseContent, _ := json.MarshalIndent(resp, "", "  ")
    	fmt.Fprintf(os.Stdout, "Response from `SyntheticsApi.UpdateSyntheticsDowntime`:\n%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="<API-KEY>" DD_APP_KEY="<APP-KEY>" go run "main.go"
    // Update a Synthetics downtime returns "OK" response
    
    import com.datadog.api.client.ApiClient;
    import com.datadog.api.client.ApiException;
    import com.datadog.api.client.v2.api.SyntheticsApi;
    import com.datadog.api.client.v2.model.SyntheticsDowntimeDataAttributesRequest;
    import com.datadog.api.client.v2.model.SyntheticsDowntimeDataRequest;
    import com.datadog.api.client.v2.model.SyntheticsDowntimeRequest;
    import com.datadog.api.client.v2.model.SyntheticsDowntimeResourceType;
    import com.datadog.api.client.v2.model.SyntheticsDowntimeResponse;
    import com.datadog.api.client.v2.model.SyntheticsDowntimeTimeSlotDate;
    import com.datadog.api.client.v2.model.SyntheticsDowntimeTimeSlotRequest;
    import java.util.Collections;
    
    public class Example {
      public static void main(String[] args) {
        ApiClient defaultClient = ApiClient.getDefaultApiClient();
        SyntheticsApi apiInstance = new SyntheticsApi(defaultClient);
    
        SyntheticsDowntimeRequest body =
            new SyntheticsDowntimeRequest()
                .data(
                    new SyntheticsDowntimeDataRequest()
                        .attributes(
                            new SyntheticsDowntimeDataAttributesRequest()
                                .isEnabled(true)
                                .name("Weekly maintenance")
                                .testIds(Collections.singletonList("abc-def-123"))
                                .timeSlots(
                                    Collections.singletonList(
                                        new SyntheticsDowntimeTimeSlotRequest()
                                            .duration(3600L)
                                            .start(
                                                new SyntheticsDowntimeTimeSlotDate()
                                                    .day(15L)
                                                    .hour(10L)
                                                    .minute(30L)
                                                    .month(1L)
                                                    .year(2024L))
                                            .timezone("Europe/Paris"))))
                        .type(SyntheticsDowntimeResourceType.DOWNTIME));
    
        try {
          SyntheticsDowntimeResponse result =
              apiInstance.updateSyntheticsDowntime("00000000-0000-0000-0000-000000000001", body);
          System.out.println(result);
        } catch (ApiException e) {
          System.err.println("Exception when calling SyntheticsApi#updateSyntheticsDowntime");
          System.err.println("Status code: " + e.getCode());
          System.err.println("Reason: " + e.getResponseBody());
          System.err.println("Response headers: " + e.getResponseHeaders());
          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="<API-KEY>" DD_APP_KEY="<APP-KEY>" java "Example.java"
    // Update a Synthetics downtime returns "OK" response
    use datadog_api_client::datadog;
    use datadog_api_client::datadogV2::api_synthetics::SyntheticsAPI;
    use datadog_api_client::datadogV2::model::SyntheticsDowntimeDataAttributesRequest;
    use datadog_api_client::datadogV2::model::SyntheticsDowntimeDataRequest;
    use datadog_api_client::datadogV2::model::SyntheticsDowntimeRequest;
    use datadog_api_client::datadogV2::model::SyntheticsDowntimeResourceType;
    use datadog_api_client::datadogV2::model::SyntheticsDowntimeTimeSlotDate;
    use datadog_api_client::datadogV2::model::SyntheticsDowntimeTimeSlotRequest;
    
    #[tokio::main]
    async fn main() {
        let body = SyntheticsDowntimeRequest::new(SyntheticsDowntimeDataRequest::new(
            SyntheticsDowntimeDataAttributesRequest::new(
                true,
                "Weekly maintenance".to_string(),
                vec!["abc-def-123".to_string()],
                vec![SyntheticsDowntimeTimeSlotRequest::new(
                    3600,
                    SyntheticsDowntimeTimeSlotDate::new(15, 10, 30, 1, 2024),
                    "Europe/Paris".to_string(),
                )],
            ),
            SyntheticsDowntimeResourceType::DOWNTIME,
        ));
        let configuration = datadog::Configuration::new();
        let api = SyntheticsAPI::with_config(configuration);
        let resp = api
            .update_synthetics_downtime("00000000-0000-0000-0000-000000000001".to_string(), body)
            .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="<API-KEY>" DD_APP_KEY="<APP-KEY>" cargo run
    /**
     * Update a Synthetics downtime returns "OK" response
     */
    
    import { client, v2 } from "@datadog/datadog-api-client";
    
    const configuration = client.createConfiguration();
    const apiInstance = new v2.SyntheticsApi(configuration);
    
    const params: v2.SyntheticsApiUpdateSyntheticsDowntimeRequest = {
      body: {
        data: {
          attributes: {
            isEnabled: true,
            name: "Weekly maintenance",
            testIds: ["abc-def-123"],
            timeSlots: [
              {
                duration: 3600,
                start: {
                  day: 15,
                  hour: 10,
                  minute: 30,
                  month: 1,
                  year: 2024,
                },
                timezone: "Europe/Paris",
              },
            ],
          },
          type: "downtime",
        },
      },
      downtimeId: "00000000-0000-0000-0000-000000000001",
    };
    
    apiInstance
      .updateSyntheticsDowntime(params)
      .then((data: v2.SyntheticsDowntimeResponse) => {
        console.log(
          "API called successfully. Returned data: " + JSON.stringify(data)
        );
      })
      .catch((error: any) => 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="<API-KEY>" DD_APP_KEY="<APP-KEY>" tsc "example.ts"