POST https://api.ap1.datadoghq.com/api/v2/apm/config/retention-filters https://api.ap2.datadoghq.com/api/v2/apm/config/retention-filters https://api.datadoghq.eu/api/v2/apm/config/retention-filters https://api.ddog-gov.com/api/v2/apm/config/retention-filters https://api.us2.ddog-gov.com/api/v2/apm/config/retention-filters https://api.datadoghq.com/api/v2/apm/config/retention-filters https://api.us3.datadoghq.com/api/v2/apm/config/retention-filters https://api.us5.datadoghq.com/api/v2/apm/config/retention-filters
Overview
Create a retention filter to index spans in your organization.
Returns the retention filter definition when the request is successful.
Default filters with types spans-errors-sampling-processor and spans-appsec-sampling-processor cannot be created.
This endpoint requires the
apm_retention_filter_write permission.
Request Body Data (required) The definition of the new retention filter.
Expand All
The body of the retention filter to be created.
The object describing the configuration of the retention filter to create/update.
Enable/Disable the retention filter.
The spans filter. Spans matching this filter will be indexed and stored.
The type of retention filter. The value should always be spans-sampling-processor.
Allowed enum values: spans-sampling-processor
default: spans-sampling-processor
The name of the retention filter.
Sample rate to apply to spans going through this retention filter.
A value of 1.0 keeps all spans matching the query.
Sample rate to apply to traces containing spans going through this retention filter.
A value of 1.0 keeps all traces with spans matching the query.
The type of the resource.
Allowed enum values: apm_retention_filter
default: apm_retention_filter
{
"data" : {
"attributes" : {
"enabled" : true ,
"filter" : {
"query" : "@http.status_code:200 service:my-service"
},
"filter_type" : "spans-sampling-processor" ,
"name" : "my retention filter" ,
"rate" : 1.0
},
"type" : "apm_retention_filter"
}
} {
"data" : {
"attributes" : {
"enabled" : true ,
"filter" : {
"query" : "@http.status_code:200 service:my-service"
},
"filter_type" : "spans-sampling-processor" ,
"name" : "my retention filter" ,
"rate" : 1.0 ,
"trace_rate" : 1.0
},
"type" : "apm_retention_filter"
}
} Response OK
The retention filters definition.
Expand All
The definition of the retention filter.
The attributes of the retention filter.
The creation timestamp of the retention filter.
The creator of the retention filter.
Shows whether the filter can be edited.
The status of the retention filter (Enabled/Disabled).
The execution order of the retention filter.
The spans filter used to index spans.
The type of retention filter. The value should always be spans-sampling-processor.
Allowed enum values: spans-sampling-processor
default: spans-sampling-processor
The modification timestamp of the retention filter.
The modifier of the retention filter.
The name of the retention filter.
Sample rate to apply to spans going through this retention filter.
A value of 1.0 keeps all spans matching the query.
Sample rate to apply to traces containing spans going through this retention filter.
A value of 1.0 keeps all traces with spans matching the query.
The ID of the retention filter.
The type of the resource.
Allowed enum values: apm_retention_filter
default: apm_retention_filter
{
"data" : {
"attributes" : {
"created_at" : "integer" ,
"created_by" : "string" ,
"editable" : true ,
"enabled" : true ,
"execution_order" : "integer" ,
"filter" : {
"query" : "@http.status_code:200 service:my-service"
},
"filter_type" : "spans-sampling-processor" ,
"modified_at" : "integer" ,
"modified_by" : "string" ,
"name" : "my retention filter" ,
"rate" : 1 ,
"trace_rate" : 1
},
"id" : "7RBOb7dLSYWI01yc3pIH8w" ,
"type" : "apm_retention_filter"
}
} Bad Request
{
"errors" : [
"Bad Request"
]
} Not Authorized
{
"errors" : [
"Bad Request"
]
} Conflict
{
"errors" : [
"Bad Request"
]
} Too many requests
{
"errors" : [
"Bad Request"
]
} Code Example Copy
## 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/apm/config/retention-filters " \
-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": {
"enabled": true,
"filter": {
"query": "@http.status_code:200 service:my-service"
},
"filter_type": "spans-sampling-processor",
"name": "my retention filter",
"rate": 1,
"trace_rate": 1
},
"type": "apm_retention_filter"
}
}
EOF
Copy
## 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/apm/config/retention-filters " \
-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": {
"enabled": true,
"filter": {
"query": "@http.status_code:200 service:my-service"
},
"filter_type": "spans-sampling-processor",
"name": "my retention filter",
"rate": 1,
"trace_rate": 1
},
"type": "apm_retention_filter"
}
}
EOF
// Create a retention filter 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 . RetentionFilterCreateRequest {
Data : datadogV2 . RetentionFilterCreateData {
Attributes : datadogV2 . RetentionFilterCreateAttributes {
Enabled : true ,
Filter : datadogV2 . SpansFilterCreate {
Query : "@http.status_code:200 service:my-service" ,
},
FilterType : datadogV2 . RETENTIONFILTERTYPE_SPANS_SAMPLING_PROCESSOR ,
Name : "my retention filter" ,
Rate : 1.0 ,
},
Type : datadogV2 . APMRETENTIONFILTERTYPE_apm_retention_filter ,
},
}
ctx := datadog . NewDefaultContext ( context . Background ())
configuration := datadog . NewConfiguration ()
apiClient := datadog . NewAPIClient ( configuration )
api := datadogV2 . NewAPMRetentionFiltersApi ( apiClient )
resp , r , err := api . CreateApmRetentionFilter ( ctx , body )
if err != nil {
fmt . Fprintf ( os . Stderr , "Error when calling `APMRetentionFiltersApi.CreateApmRetentionFilter`: %v\n" , err )
fmt . Fprintf ( os . Stderr , "Full HTTP response: %v\n" , r )
}
responseContent , _ := json . MarshalIndent ( resp , "" , " " )
fmt . Fprintf ( os . Stdout , "Response from `APMRetentionFiltersApi.CreateApmRetentionFilter`:\n%s\n" , responseContent )
}
// Create a retention filter with trace rate 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 . RetentionFilterCreateRequest {
Data : datadogV2 . RetentionFilterCreateData {
Attributes : datadogV2 . RetentionFilterCreateAttributes {
Enabled : true ,
Filter : datadogV2 . SpansFilterCreate {
Query : "@http.status_code:200 service:my-service" ,
},
FilterType : datadogV2 . RETENTIONFILTERTYPE_SPANS_SAMPLING_PROCESSOR ,
Name : "my retention filter" ,
Rate : 1.0 ,
TraceRate : datadog . PtrFloat64 ( 1.0 ),
},
Type : datadogV2 . APMRETENTIONFILTERTYPE_apm_retention_filter ,
},
}
ctx := datadog . NewDefaultContext ( context . Background ())
configuration := datadog . NewConfiguration ()
apiClient := datadog . NewAPIClient ( configuration )
api := datadogV2 . NewAPMRetentionFiltersApi ( apiClient )
resp , r , err := api . CreateApmRetentionFilter ( ctx , body )
if err != nil {
fmt . Fprintf ( os . Stderr , "Error when calling `APMRetentionFiltersApi.CreateApmRetentionFilter`: %v\n" , err )
fmt . Fprintf ( os . Stderr , "Full HTTP response: %v\n" , r )
}
responseContent , _ := json . MarshalIndent ( resp , "" , " " )
fmt . Fprintf ( os . Stdout , "Response from `APMRetentionFiltersApi.CreateApmRetentionFilter`:\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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<API-KEY>" DD_APP_KEY = "<APP-KEY>" go run "main.go"
// Create a retention filter returns "OK" response
import com.datadog.api.client.ApiClient ;
import com.datadog.api.client.ApiException ;
import com.datadog.api.client.v2.api.ApmRetentionFiltersApi ;
import com.datadog.api.client.v2.model.ApmRetentionFilterType ;
import com.datadog.api.client.v2.model.RetentionFilterCreateAttributes ;
import com.datadog.api.client.v2.model.RetentionFilterCreateData ;
import com.datadog.api.client.v2.model.RetentionFilterCreateRequest ;
import com.datadog.api.client.v2.model.RetentionFilterCreateResponse ;
import com.datadog.api.client.v2.model.RetentionFilterType ;
import com.datadog.api.client.v2.model.SpansFilterCreate ;
public class Example {
public static void main ( String [] args ) {
ApiClient defaultClient = ApiClient . getDefaultApiClient ();
ApmRetentionFiltersApi apiInstance = new ApmRetentionFiltersApi ( defaultClient );
RetentionFilterCreateRequest body =
new RetentionFilterCreateRequest ()
. data (
new RetentionFilterCreateData ()
. attributes (
new RetentionFilterCreateAttributes ()
. enabled ( true )
. filter (
new SpansFilterCreate ()
. query ( "@http.status_code:200 service:my-service" ))
. filterType ( RetentionFilterType . SPANS_SAMPLING_PROCESSOR )
. name ( "my retention filter" )
. rate ( 1 . 0 ))
. type ( ApmRetentionFilterType . apm_retention_filter ));
try {
RetentionFilterCreateResponse result = apiInstance . createApmRetentionFilter ( body );
System . out . println ( result );
} catch ( ApiException e ) {
System . err . println ( "Exception when calling ApmRetentionFiltersApi#createApmRetentionFilter" );
System . err . println ( "Status code: " + e . getCode ());
System . err . println ( "Reason: " + e . getResponseBody ());
System . err . println ( "Response headers: " + e . getResponseHeaders ());
e . printStackTrace ();
}
}
}
// Create a retention filter with trace rate returns "OK" response
import com.datadog.api.client.ApiClient ;
import com.datadog.api.client.ApiException ;
import com.datadog.api.client.v2.api.ApmRetentionFiltersApi ;
import com.datadog.api.client.v2.model.ApmRetentionFilterType ;
import com.datadog.api.client.v2.model.RetentionFilterCreateAttributes ;
import com.datadog.api.client.v2.model.RetentionFilterCreateData ;
import com.datadog.api.client.v2.model.RetentionFilterCreateRequest ;
import com.datadog.api.client.v2.model.RetentionFilterCreateResponse ;
import com.datadog.api.client.v2.model.RetentionFilterType ;
import com.datadog.api.client.v2.model.SpansFilterCreate ;
public class Example {
public static void main ( String [] args ) {
ApiClient defaultClient = ApiClient . getDefaultApiClient ();
ApmRetentionFiltersApi apiInstance = new ApmRetentionFiltersApi ( defaultClient );
RetentionFilterCreateRequest body =
new RetentionFilterCreateRequest ()
. data (
new RetentionFilterCreateData ()
. attributes (
new RetentionFilterCreateAttributes ()
. enabled ( true )
. filter (
new SpansFilterCreate ()
. query ( "@http.status_code:200 service:my-service" ))
. filterType ( RetentionFilterType . SPANS_SAMPLING_PROCESSOR )
. name ( "my retention filter" )
. rate ( 1 . 0 )
. traceRate ( 1 . 0 ))
. type ( ApmRetentionFilterType . apm_retention_filter ));
try {
RetentionFilterCreateResponse result = apiInstance . createApmRetentionFilter ( body );
System . out . println ( result );
} catch ( ApiException e ) {
System . err . println ( "Exception when calling ApmRetentionFiltersApi#createApmRetentionFilter" );
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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<API-KEY>" DD_APP_KEY = "<APP-KEY>" java "Example.java"
"""
Create a retention filter returns "OK" response
"""
from datadog_api_client import ApiClient , Configuration
from datadog_api_client.v2.api.apm_retention_filters_api import APMRetentionFiltersApi
from datadog_api_client.v2.model.apm_retention_filter_type import ApmRetentionFilterType
from datadog_api_client.v2.model.retention_filter_create_attributes import RetentionFilterCreateAttributes
from datadog_api_client.v2.model.retention_filter_create_data import RetentionFilterCreateData
from datadog_api_client.v2.model.retention_filter_create_request import RetentionFilterCreateRequest
from datadog_api_client.v2.model.retention_filter_type import RetentionFilterType
from datadog_api_client.v2.model.spans_filter_create import SpansFilterCreate
body = RetentionFilterCreateRequest (
data = RetentionFilterCreateData (
attributes = RetentionFilterCreateAttributes (
enabled = True ,
filter = SpansFilterCreate (
query = "@http.status_code:200 service:my-service" ,
),
filter_type = RetentionFilterType . SPANS_SAMPLING_PROCESSOR ,
name = "my retention filter" ,
rate = 1.0 ,
),
type = ApmRetentionFilterType . apm_retention_filter ,
),
)
configuration = Configuration ()
with ApiClient ( configuration ) as api_client :
api_instance = APMRetentionFiltersApi ( api_client )
response = api_instance . create_apm_retention_filter ( body = body )
print ( response )
"""
Create a retention filter with trace rate returns "OK" response
"""
from datadog_api_client import ApiClient , Configuration
from datadog_api_client.v2.api.apm_retention_filters_api import APMRetentionFiltersApi
from datadog_api_client.v2.model.apm_retention_filter_type import ApmRetentionFilterType
from datadog_api_client.v2.model.retention_filter_create_attributes import RetentionFilterCreateAttributes
from datadog_api_client.v2.model.retention_filter_create_data import RetentionFilterCreateData
from datadog_api_client.v2.model.retention_filter_create_request import RetentionFilterCreateRequest
from datadog_api_client.v2.model.retention_filter_type import RetentionFilterType
from datadog_api_client.v2.model.spans_filter_create import SpansFilterCreate
body = RetentionFilterCreateRequest (
data = RetentionFilterCreateData (
attributes = RetentionFilterCreateAttributes (
enabled = True ,
filter = SpansFilterCreate (
query = "@http.status_code:200 service:my-service" ,
),
filter_type = RetentionFilterType . SPANS_SAMPLING_PROCESSOR ,
name = "my retention filter" ,
rate = 1.0 ,
trace_rate = 1.0 ,
),
type = ApmRetentionFilterType . apm_retention_filter ,
),
)
configuration = Configuration ()
with ApiClient ( configuration ) as api_client :
api_instance = APMRetentionFiltersApi ( api_client )
response = api_instance . create_apm_retention_filter ( 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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<API-KEY>" DD_APP_KEY = "<APP-KEY>" python3 "example.py"
# Create a retention filter returns "OK" response
require "datadog_api_client"
api_instance = DatadogAPIClient :: V2 :: APMRetentionFiltersAPI . new
body = DatadogAPIClient :: V2 :: RetentionFilterCreateRequest . new ({
data : DatadogAPIClient :: V2 :: RetentionFilterCreateData . new ({
attributes : DatadogAPIClient :: V2 :: RetentionFilterCreateAttributes . new ({
enabled : true ,
filter : DatadogAPIClient :: V2 :: SpansFilterCreate . new ({
query : "@http.status_code:200 service:my-service" ,
}),
filter_type : DatadogAPIClient :: V2 :: RetentionFilterType :: SPANS_SAMPLING_PROCESSOR ,
name : "my retention filter" ,
rate : 1 . 0 ,
}),
type : DatadogAPIClient :: V2 :: ApmRetentionFilterType :: APM_RETENTION_FILTER ,
}),
})
p api_instance . create_apm_retention_filter ( body )
# Create a retention filter with trace rate returns "OK" response
require "datadog_api_client"
api_instance = DatadogAPIClient :: V2 :: APMRetentionFiltersAPI . new
body = DatadogAPIClient :: V2 :: RetentionFilterCreateRequest . new ({
data : DatadogAPIClient :: V2 :: RetentionFilterCreateData . new ({
attributes : DatadogAPIClient :: V2 :: RetentionFilterCreateAttributes . new ({
enabled : true ,
filter : DatadogAPIClient :: V2 :: SpansFilterCreate . new ({
query : "@http.status_code:200 service:my-service" ,
}),
filter_type : DatadogAPIClient :: V2 :: RetentionFilterType :: SPANS_SAMPLING_PROCESSOR ,
name : "my retention filter" ,
rate : 1 . 0 ,
trace_rate : 1 . 0 ,
}),
type : DatadogAPIClient :: V2 :: ApmRetentionFilterType :: APM_RETENTION_FILTER ,
}),
})
p api_instance . create_apm_retention_filter ( body )
Instructions First install the library and its dependencies and then save the example to example.rb and run following commands:
DD_SITE = "datadoghq.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<API-KEY>" DD_APP_KEY = "<APP-KEY>" rb "example.rb"
// Create a retention filter returns "OK" response
use datadog_api_client ::datadog ;
use datadog_api_client ::datadogV2 ::api_apm_retention_filters ::APMRetentionFiltersAPI ;
use datadog_api_client ::datadogV2 ::model ::ApmRetentionFilterType ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterCreateAttributes ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterCreateData ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterCreateRequest ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterType ;
use datadog_api_client ::datadogV2 ::model ::SpansFilterCreate ;
#[tokio::main]
async fn main () {
let body = RetentionFilterCreateRequest ::new ( RetentionFilterCreateData ::new (
RetentionFilterCreateAttributes ::new (
true ,
SpansFilterCreate ::new ( "@http.status_code:200 service:my-service" . to_string ()),
RetentionFilterType ::SPANS_SAMPLING_PROCESSOR ,
"my retention filter" . to_string (),
1.0 ,
),
ApmRetentionFilterType ::apm_retention_filter ,
));
let configuration = datadog ::Configuration ::new ();
let api = APMRetentionFiltersAPI ::with_config ( configuration );
let resp = api . create_apm_retention_filter ( body ). await ;
if let Ok ( value ) = resp {
println! ( " {:#?} " , value );
} else {
println! ( " {:#?} " , resp . unwrap_err ());
}
}
// Create a retention filter with trace rate returns "OK" response
use datadog_api_client ::datadog ;
use datadog_api_client ::datadogV2 ::api_apm_retention_filters ::APMRetentionFiltersAPI ;
use datadog_api_client ::datadogV2 ::model ::ApmRetentionFilterType ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterCreateAttributes ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterCreateData ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterCreateRequest ;
use datadog_api_client ::datadogV2 ::model ::RetentionFilterType ;
use datadog_api_client ::datadogV2 ::model ::SpansFilterCreate ;
#[tokio::main]
async fn main () {
let body = RetentionFilterCreateRequest ::new ( RetentionFilterCreateData ::new (
RetentionFilterCreateAttributes ::new (
true ,
SpansFilterCreate ::new ( "@http.status_code:200 service:my-service" . to_string ()),
RetentionFilterType ::SPANS_SAMPLING_PROCESSOR ,
"my retention filter" . to_string (),
1.0 ,
)
. trace_rate ( 1.0 as f64 ),
ApmRetentionFilterType ::apm_retention_filter ,
));
let configuration = datadog ::Configuration ::new ();
let api = APMRetentionFiltersAPI ::with_config ( configuration );
let resp = api . create_apm_retention_filter ( 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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<API-KEY>" DD_APP_KEY = "<APP-KEY>" cargo run
/**
* Create a retention filter returns "OK" response
*/
import { client , v2 } from "@datadog/datadog-api-client" ;
const configuration = client . createConfiguration ();
const apiInstance = new v2 . APMRetentionFiltersApi ( configuration );
const params : v2.APMRetentionFiltersApiCreateApmRetentionFilterRequest = {
body : {
data : {
attributes : {
enabled : true ,
filter : {
query : "@http.status_code:200 service:my-service" ,
},
filterType : "spans-sampling-processor" ,
name : "my retention filter" ,
rate : 1.0 ,
},
type : "apm_retention_filter" ,
},
},
};
apiInstance
. createApmRetentionFilter ( params )
. then (( data : v2.RetentionFilterCreateResponse ) => {
console . log (
"API called successfully. Returned data: " + JSON . stringify ( data )
);
})
. catch (( error : any ) => console . error ( error ));
/**
* Create a retention filter with trace rate returns "OK" response
*/
import { client , v2 } from "@datadog/datadog-api-client" ;
const configuration = client . createConfiguration ();
const apiInstance = new v2 . APMRetentionFiltersApi ( configuration );
const params : v2.APMRetentionFiltersApiCreateApmRetentionFilterRequest = {
body : {
data : {
attributes : {
enabled : true ,
filter : {
query : "@http.status_code:200 service:my-service" ,
},
filterType : "spans-sampling-processor" ,
name : "my retention filter" ,
rate : 1.0 ,
traceRate : 1.0 ,
},
type : "apm_retention_filter" ,
},
},
};
apiInstance
. createApmRetentionFilter ( params )
. then (( data : v2.RetentionFilterCreateResponse ) => {
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.com us3.datadoghq.com us5.datadoghq.com datadoghq.eu ap1.datadoghq.com ap2.datadoghq.com ddog-gov.com us2.ddog-gov.com " DD_API_KEY = "<API-KEY>" DD_APP_KEY = "<APP-KEY>" tsc "example.ts"