Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions .generator/schemas/v1/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6182,6 +6182,76 @@ components:
type: string
x-enum-varnames:
- ARITHMETIC_PROCESSOR
LogsArrayMapProcessor:
description: |-
The array-map processor transforms each element of a source array by running
sub-processors against it and writing results to a target array.
Sub-processors reference the current element via `$sourceElem` (read) and
`$targetElem` (write). Parent log attributes are read via plain paths as usual.
Supported sub-processor types: `attribute-remapper`, `string-builder-processor`,
`arithmetic-processor`, `category-processor`.
`is_enabled` on sub-processors is ignored; sub-processor execution is gated
entirely by the parent array-map's `is_enabled` flag.
properties:
is_enabled:
default: false
description: Whether or not the processor is enabled.
type: boolean
name:
description: Name of the processor.
type: string
preserve_source:
default: true
description: |-
When `false` and `source != target`, the source attribute is removed after
processing. Cannot be `false` when `source == target`.
type: boolean
processors:
description: |-
Sub-processors applied to each element. Allowed types: `attribute-remapper`,
`string-builder-processor`, `arithmetic-processor`, `category-processor`.
items:
$ref: "#/components/schemas/LogsArrayMapSubProcessor"
type: array
source:
description: |-
Attribute path of the source array. Elements are read-only via `$sourceElem`
inside sub-processors.
example: detail.resource.s3BucketDetails
type: string
target:
description: |-
Attribute path of the output array. Sub-processors write to `$targetElem`
(or `$targetElem.<field>`) to build each output element.
example: ocsf.resources
type: string
type:
$ref: "#/components/schemas/LogsArrayMapProcessorType"
required:
- source
- target
- processors
- type
type: object
LogsArrayMapProcessorType:
default: array-map
description: Type of logs array-map processor.
enum:
- array-map
example: array-map
type: string
x-enum-varnames:
- ARRAY_MAP
LogsArrayMapSubProcessor:
description: |-
A sub-processor used inside an array-map processor.
Allowed types: `attribute-remapper`, `string-builder-processor`,
`arithmetic-processor`, `category-processor`.
oneOf:
- $ref: "#/components/schemas/LogsAttributeRemapper"
- $ref: "#/components/schemas/LogsStringBuilderProcessor"
- $ref: "#/components/schemas/LogsArithmeticProcessor"
- $ref: "#/components/schemas/LogsCategoryProcessor"
LogsArrayProcessor:
description: |-
A processor for extracting, aggregating, or transforming values from JSON arrays within your logs.
Expand Down Expand Up @@ -7237,6 +7307,7 @@ components:
- $ref: "#/components/schemas/LogsDecoderProcessor"
- $ref: "#/components/schemas/LogsSchemaProcessor"
- $ref: "#/components/schemas/LogsExcludeAttributeProcessor"
- $ref: "#/components/schemas/LogsArrayMapProcessor"
LogsQueryCompute:
description: Define computation for a log query.
properties:
Expand Down
54 changes: 54 additions & 0 deletions examples/v1/logs-pipelines/CreateLogsPipeline_104735144.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
// Create a pipeline with Array Map Processor with preserve_source false returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.LogsPipelinesApi;
import com.datadog.api.client.v1.model.LogsArrayMapProcessor;
import com.datadog.api.client.v1.model.LogsArrayMapProcessorType;
import com.datadog.api.client.v1.model.LogsArrayMapSubProcessor;
import com.datadog.api.client.v1.model.LogsAttributeRemapper;
import com.datadog.api.client.v1.model.LogsAttributeRemapperType;
import com.datadog.api.client.v1.model.LogsFilter;
import com.datadog.api.client.v1.model.LogsPipeline;
import com.datadog.api.client.v1.model.LogsProcessor;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
LogsPipelinesApi apiInstance = new LogsPipelinesApi(defaultClient);

LogsPipeline body =
new LogsPipeline()
.filter(new LogsFilter().query("source:python"))
.name("testPipelineArrayMapNoPreserve")
.processors(
Collections.singletonList(
new LogsProcessor(
new LogsArrayMapProcessor()
.type(LogsArrayMapProcessorType.ARRAY_MAP)
.isEnabled(true)
.name("map and remove source")
.source("items")
.target("out")
.preserveSource(false)
.processors(
Collections.singletonList(
new LogsArrayMapSubProcessor(
new LogsAttributeRemapper()
.type(LogsAttributeRemapperType.ATTRIBUTE_REMAPPER)
.sources(Collections.singletonList("$sourceElem.id"))
.target("$targetElem.uid")))))));

try {
LogsPipeline result = apiInstance.createLogsPipeline(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling LogsPipelinesApi#createLogsPipeline");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
64 changes: 64 additions & 0 deletions examples/v1/logs-pipelines/CreateLogsPipeline_1185292896.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
// Create a pipeline with Array Map Processor using category sub-processor returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.LogsPipelinesApi;
import com.datadog.api.client.v1.model.LogsArrayMapProcessor;
import com.datadog.api.client.v1.model.LogsArrayMapProcessorType;
import com.datadog.api.client.v1.model.LogsArrayMapSubProcessor;
import com.datadog.api.client.v1.model.LogsCategoryProcessor;
import com.datadog.api.client.v1.model.LogsCategoryProcessorCategory;
import com.datadog.api.client.v1.model.LogsCategoryProcessorType;
import com.datadog.api.client.v1.model.LogsFilter;
import com.datadog.api.client.v1.model.LogsPipeline;
import com.datadog.api.client.v1.model.LogsProcessor;
import java.util.Arrays;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
LogsPipelinesApi apiInstance = new LogsPipelinesApi(defaultClient);

LogsPipeline body =
new LogsPipeline()
.filter(new LogsFilter().query("source:python"))
.name("testPipelineArrayMapCategory")
.processors(
Collections.singletonList(
new LogsProcessor(
new LogsArrayMapProcessor()
.type(LogsArrayMapProcessorType.ARRAY_MAP)
.isEnabled(true)
.name("categorize items")
.source("items")
.target("out")
.processors(
Collections.singletonList(
new LogsArrayMapSubProcessor(
new LogsCategoryProcessor()
.type(LogsCategoryProcessorType.CATEGORY_PROCESSOR)
.target("$targetElem.level")
.categories(
Arrays.asList(
new LogsCategoryProcessorCategory()
.filter(
new LogsFilter()
.query("@$sourceElem.status:error"))
.name("error"),
new LogsCategoryProcessorCategory()
.filter(new LogsFilter().query("*"))
.name("info")))))))));

try {
LogsPipeline result = apiInstance.createLogsPipeline(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling LogsPipelinesApi#createLogsPipeline");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
53 changes: 53 additions & 0 deletions examples/v1/logs-pipelines/CreateLogsPipeline_2402034476.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// Create a pipeline with Array Map Processor using arithmetic sub-processor returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.LogsPipelinesApi;
import com.datadog.api.client.v1.model.LogsArithmeticProcessor;
import com.datadog.api.client.v1.model.LogsArithmeticProcessorType;
import com.datadog.api.client.v1.model.LogsArrayMapProcessor;
import com.datadog.api.client.v1.model.LogsArrayMapProcessorType;
import com.datadog.api.client.v1.model.LogsArrayMapSubProcessor;
import com.datadog.api.client.v1.model.LogsFilter;
import com.datadog.api.client.v1.model.LogsPipeline;
import com.datadog.api.client.v1.model.LogsProcessor;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
LogsPipelinesApi apiInstance = new LogsPipelinesApi(defaultClient);

LogsPipeline body =
new LogsPipeline()
.filter(new LogsFilter().query("source:python"))
.name("testPipelineArrayMapArithmetic")
.processors(
Collections.singletonList(
new LogsProcessor(
new LogsArrayMapProcessor()
.type(LogsArrayMapProcessorType.ARRAY_MAP)
.isEnabled(true)
.name("double counts")
.source("items")
.target("out")
.processors(
Collections.singletonList(
new LogsArrayMapSubProcessor(
new LogsArithmeticProcessor()
.type(LogsArithmeticProcessorType.ARITHMETIC_PROCESSOR)
.expression("$sourceElem.count * 2")
.target("$targetElem.doubled")))))));

try {
LogsPipeline result = apiInstance.createLogsPipeline(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling LogsPipelinesApi#createLogsPipeline");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
65 changes: 65 additions & 0 deletions examples/v1/logs-pipelines/CreateLogsPipeline_3996915493.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Create a pipeline with Array Map Processor returns "OK" response

import com.datadog.api.client.ApiClient;
import com.datadog.api.client.ApiException;
import com.datadog.api.client.v1.api.LogsPipelinesApi;
import com.datadog.api.client.v1.model.LogsArrayMapProcessor;
import com.datadog.api.client.v1.model.LogsArrayMapProcessorType;
import com.datadog.api.client.v1.model.LogsArrayMapSubProcessor;
import com.datadog.api.client.v1.model.LogsAttributeRemapper;
import com.datadog.api.client.v1.model.LogsAttributeRemapperType;
import com.datadog.api.client.v1.model.LogsFilter;
import com.datadog.api.client.v1.model.LogsPipeline;
import com.datadog.api.client.v1.model.LogsProcessor;
import com.datadog.api.client.v1.model.LogsStringBuilderProcessor;
import com.datadog.api.client.v1.model.LogsStringBuilderProcessorType;
import java.util.Arrays;
import java.util.Collections;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = ApiClient.getDefaultApiClient();
LogsPipelinesApi apiInstance = new LogsPipelinesApi(defaultClient);

LogsPipeline body =
new LogsPipeline()
.filter(new LogsFilter().query("source:python"))
.name("testPipelineArrayMap")
.processors(
Collections.singletonList(
new LogsProcessor(
new LogsArrayMapProcessor()
.type(LogsArrayMapProcessorType.ARRAY_MAP)
.isEnabled(true)
.name("map items")
.source("items")
.target("out")
.preserveSource(true)
.processors(
Arrays.asList(
new LogsArrayMapSubProcessor(
new LogsAttributeRemapper()
.type(LogsAttributeRemapperType.ATTRIBUTE_REMAPPER)
.sources(Collections.singletonList("$sourceElem.id"))
.target("$targetElem.uid")
.preserveSource(true)),
new LogsArrayMapSubProcessor(
new LogsStringBuilderProcessor()
.type(
LogsStringBuilderProcessorType
.STRING_BUILDER_PROCESSOR)
.template("item-%{$sourceElem.id}")
.target("$targetElem.label")))))));

try {
LogsPipeline result = apiInstance.createLogsPipeline(body);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling LogsPipelinesApi#createLogsPipeline");
System.err.println("Status code: " + e.getCode());
System.err.println("Reason: " + e.getResponseBody());
System.err.println("Response headers: " + e.getResponseHeaders());
e.printStackTrace();
}
}
}
Loading
Loading