Edge Delta Add Source API
The Add Source API from Edge Delta — 1 operation(s) for add source.
The Add Source API from Edge Delta — 1 operation(s) for add source.
swagger: '2.0'
info:
description: 'Edge Delta API provides endpoints to manage your configs/integrations/rehydrations and more. Generate an API token to get started: https://app.edgedelta.com/admin/organization#api-tokens'
title: Edge Delta Access Add Source API
contact:
name: API Support
email: support@edgedelta.com
version: '1.0'
host: api.edgedelta.com
basePath: ''
schemes:
- https
tags:
- name: Add Source
paths:
/v1/orgs/{org_id}/pipelines/{conf_id}/add_source:
post:
description: 'Adds the given source node configuration to the pipeline and connect it to Edgedelta Destination. Saves the updated pipeline configuration without deploying changes.
Example request body for file_input node:
{
"node": {
"name": "my_file_input",
"type": "file_input",
"path": "path/to/my_logs/logs.txt",
"separate_source": true,
"description": "A user-defined description of the Node. Users may add any additional comments describing the function of their node.\nThis is useful to put some notes into the config file since YAML comment lines (\"#\") are not persisted due to automated marshal/unmarshal of YAML. It should be human readable and not too long."
}
}
Example request body for kubernetes_input node:
{
"node": {
"name": "my_k8s_input",
"type": "kubernetes_input",
"include": [
"k8s.pod.name=^apache.*$,k8s.namespace.name=.*web*"
],
"exclude": [
"k8s.namespace.name=^kube-nginx$",
"k8s.pod.name=.*nginx*,k8s.container.name=testing"
],
"auto_detect_line_pattern": true,
"boost_stacktrace_detection": true,
"enable_persisting_cursor": true,
"description": "A user-defined description of the Node. Users may add any additional comments describing the function of their node.\nThis is useful to put some notes into the config file since YAML comment lines (\"#\") are not persisted due to automated marshal/unmarshal of YAML. It should be human readable and not too long."
}
}
Example request body for demo_input node:
{
"node": {
"name": "my_demo_input",
"type": "demo_input",
"events_per_sec": 1,
"log_type": "apache_common",
"description": "A user-defined description of the Node. Users may add any additional comments describing the function of their node.\nThis is useful to put some notes into the config file since YAML comment lines (\"#\") are not persisted due to automated marshal/unmarshal of YAML. It should be human readable and not too long."
}
}'
consumes:
- application/json
produces:
- application/json
tags:
- Add Source
parameters:
- type: string
description: Org ID
name: org_id
in: path
required: true
- type: string
description: Conf ID
name: conf_id
in: path
required: true
- description: Source node configuration to add
name: request
in: body
required: true
schema:
$ref: '#/definitions/pipeline.AddSourceRequest'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/configv3.Config'
definitions:
configv3.Authorization:
type: object
properties:
client_credentials:
$ref: '#/definitions/configv3.AuthorizationClientCredentials'
strategy:
type: string
configv3.MetricConfig:
type: object
properties:
aggregation:
description: Aggregation is required for "sum" and can be cumulative or delta
type: string
column_oids:
type: array
items:
$ref: '#/definitions/configv3.OID'
description:
description: Description is optional and describes what this metric represents
type: string
metric_type:
description: Type is required and can be either "gauge" or "sum".
type: string
monotonic:
description: Monotonic is required for "sum" and can be true or false
type: boolean
name:
description: 'Name is the name of the metric as it will be reported in the OpenTelemetry Collector.
It is required and must be unique across all metrics.'
type: string
scalar_oids:
description: 'Either ScalarOIDs or ColumnOIDs is required.
ScalarOIDs is used if one or more scalar OID values is used for this metric.
ColumnOIDs is used if one or more column OID indexed set of values is used for this metric.'
type: array
items:
$ref: '#/definitions/configv3.OID'
unit:
description: Unit is required
type: string
value_type:
description: ValueType is required and can be either int or double
type: string
configv3.ResourceFields:
type: object
properties:
namespace_labels:
description: NamespaceLabels is for K8s
type: array
items:
type: string
node_labels:
description: NodeLabels is for K8s
type: array
items:
type: string
pod_annotations:
description: PodAnnotations is for K8s
type: array
items:
type: string
pod_labels:
description: PodLabels is for K8s
type: array
items:
type: string
configv3.ResilienceConfig:
type: object
properties:
circuit_breaker:
description: Circuit breaker configuration
allOf:
- $ref: '#/definitions/configv3.CircuitBreakerConfig'
configv3.CustomLabels:
type: object
properties:
keep_overridden_path:
type: boolean
name:
type: string
path:
type: string
configv3.Link:
type: object
properties:
from:
type: string
path:
type: string
to:
type: string
configv3.Key:
type: object
properties:
value:
type: string
configv3.OID:
type: object
properties:
attributes:
type: array
items:
$ref: '#/definitions/configv3.Attribute'
oid:
type: string
resource_attributes:
type: array
items:
type: string
configv3.ExtractMetricSum:
type: object
properties:
aggregation_temporality:
type: string
is_monotonic:
type: boolean
value:
type: string
pipeline.AddSourceRequest:
type: object
required:
- node
properties:
node:
description: Configuration of the source node to be added
allOf:
- $ref: '#/definitions/pipeline.Node'
configv3.LiveTailSettings:
type: object
properties:
enabled:
type: boolean
item_max_body_size:
$ref: '#/definitions/datasize.Size'
item_truncation_size:
$ref: '#/definitions/datasize.Size'
lower_threshold_size:
description: 'Deprecated: These fields are retained for backward compatibility with existing configs.
They are parsed but ignored at runtime. Use ItemTruncationSize and ItemMaxBodySize instead.'
allOf:
- $ref: '#/definitions/datasize.Size'
max_items:
type: integer
polling_interval:
type: string
retention:
type: string
upper_threshold_size:
$ref: '#/definitions/datasize.Size'
configv3.FieldMapping:
type: object
properties:
enabled:
description: Enabled controls whether this field mapping is active.
type: boolean
keep_in_item:
description: KeepInItem controls whether to keep the field in item data after extraction.
type: boolean
path:
description: 'Path is the OTTL expression to extract value from OTEL item.
Example: ''attributes["ed.gcl.name"]'', ''resource["host.name"]'', "severity_text"'
type: string
configv3.FieldMappings:
type: object
properties:
field_name:
type: string
override_if_exists:
type: boolean
value:
type: string
value_hint:
type: string
configv3.InputDiscovery:
type: object
properties:
file_path:
description: 'FilePath is used for globbing files for. For K8s, we will use this glob path
instead of well-known ones to handle non-stdout cases'
type: string
parsing_pattern:
description: 'ParsingPattern is used for extracting information out of literal file paths.
For K8s, it will be used for extracting pod UID (required) and container name (optional).'
type: string
configv3.LookupField:
type: object
properties:
append_mode:
type: boolean
default_value:
type: string
event_field:
type: string
lookup_field:
type: string
configv3.Node:
type: object
required:
- command
- run_interval
properties:
access_key:
description: '#nosec G117 -- AWS access key in config'
type: string
account_key:
type: string
account_name:
description: Azure Blob specific
type: string
active_gate_domain:
type: string
active_gate_port:
type: integer
active_request_limit:
type: integer
add_attributes:
type: boolean
add_ingestion_time:
type: boolean
address:
type: array
items:
type: string
aggregate_metric_rules:
type: array
items:
$ref: '#/definitions/configv3.AggregateMetricRule'
alert_as_log:
description: Alert as log is used to send alerts as log instead of events by default for some destinations
type: boolean
allow_skip_pri_header:
type: boolean
anomaly_coefficient:
type: number
anomaly_confidence_period:
type: string
anomaly_tolerance:
type: number
api_key:
description: '#nosec G117 -- API key in config'
type: string
api_version:
type: string
async:
type: boolean
attributes_from_header:
type: array
items:
type: string
auth_password:
description: 'AuthPassword is the authentication password used for this SNMP connection.
Only valid for version "v3" and if "no_auth_no_priv" is not selected for SecurityLevel'
type: string
auth_type:
description: 'AuthType is the type of authentication protocol to use for this SNMP connection.
Only valid for version “v3” and if “no_auth_no_priv” is not selected for SecurityLevel
Valid options: “md5”, “sha”, “sha224”, “sha256”, “sha384”, “sha512”
Default: "md5"'
type: string
authentication:
description: Since both inputs and outputs have these in common, this field is shared here
allOf:
- $ref: '#/definitions/configv3.AuthenticationConf'
authorization:
description: Authorization is used by HTTP pull and HTTP output node
allOf:
- $ref: '#/definitions/configv3.Authorization'
auto_create_container:
type: boolean
auto_detect_line_pattern:
description: For the next 3 bool, should these functionalities stay at the input level?
type: boolean
aws_key_id:
description: AWS related fields
type: string
aws_sec_key:
type: string
batch_bytes:
type: integer
batch_size:
description: Kafka + Port output specific
type: integer
batch_timeout:
type: string
body_mapping:
description: 'BodyMapping controls what gets sent as the payload body to destination.
When enabled, only the mapped OTTL path is sent as body.
When disabled, entire OTEL item is sent as body.'
allOf:
- $ref: '#/definitions/configv3.BodyMapping'
boost_stacktrace_detection:
type: boolean
brokers:
type: array
items:
type: string
bucket:
description: Archive specific (S3 + GCS)
type: string
bucket_expression:
type: string
buffer_length:
type: integer
buffer_max_bytesize:
description: DEPRECATED
allOf:
- $ref: '#/definitions/datasize.Size'
buffer_path:
description: 'Persistent retry buffer related fields
DEPRECATED'
type: string
buffer_size:
description: DEPRECATED
allOf:
- $ref: '#/definitions/datasize.Size'
buffer_ttl:
description: DEPRECATED
type: string
cache:
$ref: '#/definitions/configv3.SamplingCaches'
capture_group_masks:
description: 'the mapping for capture groups such as "pw: ******" or "pw: ''''" if removal without replacement desired. If ''Mask'' is defined, this feature will be suppressed by it.'
type: array
items:
$ref: '#/definitions/configv3.CaptureGroupMask'
capture_request_headers:
type: boolean
channel:
type: string
channel_size:
type: integer
checkpoint_directory:
type: string
clickhouse_table:
type: string
client_id:
type: string
client_secret:
description: '#nosec G117 -- client secret in config'
type: string
cloud_id:
description: 'Elasticsearch specific
cloudID or address url for endpoint'
type: string
collection_interval:
description: 'CollectionInterval sets how frequently the scraper
should be called and used as the context timeout
to ensure that scrapers don''t exceed the interval.'
type: string
command:
type: string
commit_interval:
type: string
community:
description: 'Community is the SNMP community string to use.
Only valid for versions "v1" and "v2c"
Default: public'
type: string
compression:
type: string
condition:
description: Used by both OTTL filter and threshold
type: string
config:
type: string
connection_string:
type: string
connector_metadata:
description: ConnectorMetadata is used by HTTP input node to denote cloud based HTTP connectors
allOf:
- $ref: '#/definitions/configv3.ConnectorMetadata'
consecutive:
type: integer
consumer_group:
type: string
container:
type: string
count_field_path:
type: string
create_missing_group_and_stream:
type: boolean
credentials_path:
description: CredentialsPath is a path to a file containing credentials. In the case of GCL output, it is a service account credentials JSON file
type: string
current_boot_only:
type: boolean
custom_api_version_response:
type: string
custom_pattern:
type: string
custom_resources:
description: CustomResources configures custom CRDs to watch for events
type: array
items:
$ref: '#/definitions/configv3.K8sCustomResourceConfig'
custom_tags:
description: CustomTags are here for backwards compatibility reasons
type: array
items:
$ref: '#/definitions/configv3.CustomTag'
customer_id:
description: Following fields are for Google SecOps (Chronicle) output node
type: string
data_collection_endpoint:
type: string
data_collection_rule_id:
type: string
data_type:
description: DEPRECATED
type: string
database:
description: ClickHouse configuration
type: string
dataset:
description: BigQuery configuration
type: string
dd_datatype:
type: string
dd_host:
type: string
dd_hostname:
type: string
dd_level:
type: string
dd_message:
type: string
dd_service:
type: string
dd_source:
type: string
dd_source_name:
type: string
dd_tags:
type: string
decision_interval:
description: For tail sampling
type: string
delimiter:
description: 'Following fields apply to split with delimiter filter type
Delimiter is the specified delimiting character used to split a single log to multiple logs'
type: string
demo_template:
type: string
description:
type: string
dimension_groups:
type: array
items:
$ref: '#/definitions/configv3.DimGroup'
dimensions_as_attributes:
description: 'DEPRECATED: It is always assumed as true, changing the value will result in no-op. Left for backwards compatibility reasons'
type: boolean
disable_classic_metrics:
type: boolean
disable_clustering_by_severity_level:
type: boolean
disable_compaction:
type: boolean
disable_compression:
type: boolean
disable_intermediate_self_telemetry:
type: boolean
disable_metadata_ingestion:
type: boolean
disable_ssl:
type: boolean
disabled:
description: For disabling source/destination (input/output) nodes
type: boolean
discovery:
description: Discovery allows users to deviate from internal discovery logics via defining custom rules
allOf:
- $ref: '#/definitions/configv3.InputDiscovery'
docker_mode:
description: DockerMode expects file to be in Docker json log format and automatically extracts "log" fields.
type: boolean
drain_tree_depth:
type: integer
drain_tree_max_child:
type: integer
drop_limit:
description: 'DropLimit is the size threshold above which individual items are dropped entirely.
Items larger than this limit are discarded. nil means no dropping.
When both limits are set, DropLimit must be >= TruncateLimit.'
allOf:
- $ref: '#/definitions/datasize.Size'
emit_intermediate:
description: EmitIntermediate controls whether to emit intermediate step results
type: boolean
emit_transform:
description: 'EmitTransform contains OTTL statements to transform the final emitted log.
Statements can access: body, attributes, steps["name"].body, variables["key"], webhook_payload["key"]'
type: string
enable_agent_stats_metrics:
type: boolean
enable_gc_metrics:
type: boolean
enable_granular_metrics:
type: boolean
enable_health_check:
type: boolean
enable_health_metrics:
type: boolean
enable_indexer_discovery:
description: Splunk Load Balanced weighted destinations mode
type: boolean
enable_octet_counting:
type: boolean
enable_passthrough_resolution:
type: boolean
enable_persisting_cursor:
type: boolean
enabled_stats:
type: array
items:
type: string
encoder:
$ref: '#/definitions/types.DataFormat'
encoding:
type: string
endpoint:
type: string
endpoint_expression:
description: OTTL expression fields for dynamic values
type: string
endpoint_resolution_type:
description: OTLP Destination related
allOf:
- $ref: '#/definitions/configv3.EndpointResolution'
endpoint_type:
description: Dynatrace related
type: string
endpoints:
type: array
items:
type: string
engine_id:
description: EngineID is the unique identifier for the SNMP engine, used for Trap listener
type: string
environment_id:
type: string
environment_type:
type: string
error_mode:
description: 'ErrorMode controls error reporting behavior for parse processors.
Valid values: "silent" (default) - errors are silently ignored, "strict" - errors are logged and reported as metrics.
Applies to: parse_json_attributes, extract_json_field, grok, json_unroll, ottl_transform, route, route_ottl processors.'
type: string
event_endpoint:
type: string
event_host:
type: string
event_interval:
type: string
events_per_sec:
type: string
exclude:
type: array
items:
type: string
exclude_capture_names:
type: boolean
exclude_units:
type: array
items:
type: string
excluded_field_paths:
type: array
items:
type: string
excluded_paths:
type: array
items:
type: string
expression_type:
description: Currently only used by Route node, but it distinguishes CEL and OTTL for expression type
type: string
external_id:
type: string
extra_args:
type: array
items:
type: string
extract_metric_rules:
type: array
items:
$ref: '#/definitions/configv3.ExtractMetricRule'
failure_pattern:
description: 'Since both filters and ratio has common field, this field is shared here
FailurePattern is the regex pattern which is used to determine whether the trace events should be considered failure'
type: string
fallback_value:
description: 'Following fields apply to log level detector
FallbackValue is the default value set if log level is not found in the log using given pattern'
type: string
features:
description: DEPRECATED
type: string
fetch_interval:
type: string
field_mappings:
type: array
items:
$ref: '#/definitions/configv3.FieldMappings'
field_path:
description: 'Following fields apply to extract-json-field filter type.
FieldPath specifies the json path (dot separated) to the field whose value will be extracted and rest of the json content will be discarded.'
type: string
field_paths:
description: For probabilistic sampling
type: array
items:
type: string
file_name_filter:
type: string
filter:
type: string
filter_mode:
type: string
fingerprint_size:
$ref: '#/definitions/datasize.Size'
flush_byte_length:
type: integer
flush_interval:
type: string
global_timeout:
description: GlobalTimeout is the maximum total time for the entire workflow execution
type: string
group_by:
type: array
items:
type: string
group_id:
type: string
group_name_expression:
type: string
header_expressions:
type: array
items:
$ref: '#/definitions/configv3.HeaderExpression'
headers:
description: Headers are used by both HTTP input and output node
type: array
items:
$ref: '#/definitions/configv3.Header'
hec_authentication:
$ref: '#/definitions/configv3.SplunkHECAuthentication'
histogram_limit:
type: integer
hmac_access_key:
description: GCS specific
type: string
hmac_secret:
type: string
host:
description: Host used for port pushers
type: string
hostname:
type: string
hosts:
description: Apache Kudu configuration
type: array
items:
type: string
idle_timeout:
type: string
ignore_case:
type: boolean
immediate_poll_threshold:
type: integer
include:
type: array
items:
type: string
include_units:
type: array
items:
type: string
included_paths:
type: array
items:
type: string
index:
description: Index field is co-used by Elastic and Splunk configuration
type: string
index_expression:
type: string
initial_delay:
description: 'InitialDelay sets the initial start delay for the scraper,
any non positive value is assumed to be immediately.'
type: string
interval:
type: string
journal_directory:
type: string
journal_namespace:
type: string
journalctl_path:
type: string
json_field_path:
description: JSONFieldPath is the path within the JSON that holds the list that needs to be json unrolled
type: string
k:
type: integer
k8s_namespace:
type: string
k8s_service_name:
type: string
keep_log_if_failed:
description: 'Following fields apply to log transformer JavaScript and enrichment using JavaScript
Starting from agent v0.1.51, filters that were using "required" field will use "keep_log_if_failed" instead. Default value of this field is false
Reason for change is that script-based filters and alike should fail fast and discard log so the issue could be caught earlier'
type: boolean
keep_overridden_bucket:
type: boolean
keep_overridden_group:
type: boolean
keep_overridden_index:
type: boolean
keep_overridden_log_name:
type: boolean
keep_overridden_namespace:
type: boolean
keep_overridden_resource_labels:
type: boolean
keep_overridden_resource_type:
type: boolean
keep_overridden_stream:
type: boolean
keep_overridden_token:
type: boolean
key:
type: string
key_field_paths:
type: array
items:
type: string
key_fields:
type: array
items:
$ref: '#/definitions/configv3.LookupField'
key_path:
type: string
kudu_batch_config:
$ref: '#/definitions/configv3.KuduBatchConfig'
kudu_connection:
$ref: '#/definitions/configv3.KuduConnectionConfig'
kudu_security:
$ref: '#/definitions/configv3.KuduSecurityConfig'
labels:
description: 'Following fields are for any output node that support custom labeling
Currently used by Prometheus metrics exporter, Loki and GCL output node'
type: array
items:
$ref: '#/definitions/configv3.CustomLabels'
limit:
type: integer
line_pattern:
type: string
links:
type: array
items:
$ref: '#/definitions/configv3.Link'
listen:
type: string
load_reporting:
description: LoadReporting opts the OTLP ingest server into publishing per-server load metrics for resource-aware load balancing
allOf:
- $ref: '#/definitions/configv3.LoadReporting'
location:
type: string
location_path:
type: string
log_endpoint:
description: datadog and new relic related endpoints
type: string
log_host:
description: 'for some integrations it makes sense to just ask for target host name and
agent can form the full endpoint with given api key etc.'
type: string
log_name:
description: Following fields are for GCL output node
type: string
log_parsing_mode:
description: LogParsingMode is used for pre-parsing inputs with certain encodings
type: string
log_type:
$ref: '#/definitions/flog.Format'
lower_limit:
type: integer
mask:
description: Mask is the replacement string such as "******" or "" if removal without replacement desired.
type: string
mask_captured:
description: "TODO: (VPB-440) Remove MaskCaptured field\n\n\t\tDeprecated @ 07-06-23 Use CaptureGroupMasks instead\n\n\t\tMaskCaptured is the mapping for capture groups such as \"pw: ******\" or \"pw: ''\" if removal without replacement desired. If 'Mask' is defined, this feature will be suppressed by it."
type: object
additionalProperties:
type: string
match_mode:
type: string
match_option:
type: string
max_batch_size:
$ref: '#/definitions/datasize.Size'
max_byte_limit:
$ref: '#/definitions/datasize.Size'
max_connection_age:
description: MaxConnectionAge caps the lifetime of a long-lived grpc connection
type: string
max_connection_age_grace:
description: MaxConnectionAgeGrace is the grace window after MaxConnectionAge before the grpc server forcibly closes the connection.
type: string
max_connections:
type: integer
max_connections_per_ip:
type: integer
max_log_size:
$ref: '#/definitions/datasize.Size'
max_message_size:
$ref: '#/definitions/datasize.Size'
max_octets:
type: integer
memory_buffer:
description: MemoryBuffer configures the in-memory buffer queue settings.
allOf:
- $ref: '#/definitions/configv3.MemoryBuffer'
metadata:
type: string
metadata_mapping:
description: 'NEW: Generic mapping sections for destination nodes
MetadataMapping defines how to extract destination-specific metadata fields from OTEL items.
Each field can be enabled/disabled, mapped to an OTTL path, and configured to keep/delete from item.
Supported destinations: GCL (future: Splunk, CloudWatch, Datadog, etc.)'
allOf:
- $ref: '#/definitions/configv3.MetadataMapping'
method:
type: string
metric_endpoint:
type: string
metric_host:
type: string
metric_name:
type: string
metrics:
description: 'Metrics defines what SNMP metrics will be collected for this receiver and is composed of metric
names along with their metric configurations'
type: array
items:
$ref: '#/definitions/configv3.MetricConfig'
mode:
type: string
mounted_path:
description: LocalStorage specific
type: string
multiline:
$ref: '#/definitions/configv3.SyslogMultiline'
multiline_flush_interval:
description: 'MultilineFlushInterval, when set on a kubernetes_input, docker_input, or
file_input node, overrides the pipeline-level multiline_flush_interval for
that source. Useful when one input has a slower producer than the rest.'
type: string
name:
type: string
namespace_expression:
description: Following fields are for AWS Cloudwatch output node
type: string
negate:
description: Negate reverts the result of filter. Can be applied to regex, attribute and combination filter
type: boolean
new_field_name:
description: 'NewFieldName is currrently used for JSON unroll only. It is the name that the exploded array element will receive in each new event.
Leave empty to expand the array element with its original name.'
type: string
node_reference:
description: NodeReference refers to an org-level destination. When this is set the destination details should be pulled from org-settings API.
type: string
nodes:
description: Compound node specific fields
type: array
items:
$ref: '#/definitions/configv3.Node'
non_transparent_framing_trailer:
type: string
num_of_clusters:
type: integer
number_to_allow:
type: integer
observation_path:
type: string
only_report_nonzeros:
type: boolean
otel_tls:
$ref: '#/definitions/configv3.OtelTLS'
other_peer_name_exclude_pattern:
type: array
items:
type: string
out_fields:
type: array
items:
$ref: '#/definitions/configv3.LookupField'
pagination:
$ref: '#/definitions/configv3.HTTPPaginationConfig'
parallel_worker_count:
type: integer
parameter_expressions:
type: array
items:
$ref: '#/definitions/configv3.ParameterExp
# --- truncated at 32 KB (116 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/edge-delta/refs/heads/main/openapi/edge-delta-add-source-api-openapi.yml