1. Home
  2. Docs
  3. Event Recovery for Insights
  4. Configuration
  5. Configuration Examples

Configuration Examples

Minimal example

The most basic configuration that will run for the particular failure type: adapter-failure, in a particular version, and mark all others as failed because of missing configuration mappings would look like this:

{ "schema": "iglu:com.snowplowanalytics.snowplow/recoveries/jsonschema/4-0-0", "data": { "iglu:com.snowplowanalytics.snowplow.badrows/adapter_failures/jsonschema/1-0-0": [ { "name": "pass-through-flow", "conditions": [], "steps": [] } ] } }

In above scenario we would be resubmitting all the received adapter_failures without any modifications.

Multiple flows example

The next example shows a way of setting up multiple configuration flows for specific failure types. Configurations will be matched top to bottom and the first from the top will be chosen.

{ "schema": "iglu:com.snowplowanalytics.snowplow/recoveries/jsonschema/4-0-0", "data": { "iglu:com.snowplowanalytics.snowplow.badrows/enrichment_failures/jsonschema/1-0-0": [ { "name": "main-flow", "conditions": [ { "op": "Test", "path": "$.payload.raw.vendor", "value": { "regex": "com.snowplow\\.*" } } ], "steps": [ { "op": "Replace", "path": "$.raw.refererUri", "match": "(?U)^.*$", "value": "https://console.snplow.com/" } ] }, { "name": "pass-through", "conditions": [], "steps": [] } ] } }

In above scenario we would only process the 1-0-0 version of enrichment_failures. We would be modifying those for which vendor in raw payload starts with com.snowplow. For those rows that match that field value, we replace the full refererUri contents with https://console.snplow.com/. All other enrichment_failures will be resubmitted as they were originally (pass-through scenario).

Putting it all together

Below is an advanced example making use of most of the features and performing multiple operations on a very specific subset of failed events.

{ "schema": "iglu:com.snowplowanalytics.snowplow/recoveries/jsonschema/4-0-0", "data": { "iglu:com.snowplowanalytics.snowplow.badrows/enrichment_failures/jsonschema/1-0-0": [ { "name": "main-flow", "conditions": [ { "op": "Test", "path": "$.processor.artifact", "value": { "value": "beam-enrich" } }, { "op": "Test", "path": "$.payload.raw.vendor", "value": { "regex": "com.snowplow\\.*" } }, { "op": "Test", "path": "$.processor.artifact", "value": { "size": { "eq": 11 } } }, { "op": "Test", "path": "$.processor.artifact", "value": { "size": { "gt": 3 } } }, { "op": "Test", "path": "$.processor.artifact", "value": { "size": { "lt": 30 } } } ], "steps": [ { "op": "Replace", "path": "$.raw.refererUri", "match": "(?U)^.*$", "value": "https://console.snplow.com/" }, { "op": "Remove", "path": "$.raw.parameters.aid", "match": "(?U)^.*$" }, { "op": "Replace", "path": "$.raw.headers", "match": "X-Forwarded-Proto:.*", "value": "X-Forwarded-Proto: http" }, { "op": "Replace", "path": "$.raw.parameters.cx.data.[?(@.schema=~iglu:org.w3/PerformanceTiming/jsonschema/1-0-0)].data.loadEventEnd", "match": "(?U)^.*$", "value": "1" }, { "op": "Cast", "path": "$.raw.parameters.cx.data.[?(@.schema=~iglu:org.w3/PerformanceTiming/jsonschema/1-0-0)].data.domComplete", "from": "Numeric", "to": "Boolean" }, { "op": "Replace", "path": "$.raw.parameters.cx.data.[1].data.domComplete", "match": "false", "value": "true" }, { "op": "Cast", "path": "$.raw.parameters.cx.data.[?(@.data.navigationStart=~([0-9]+))].data.domComplete", "from": "Boolean", "to": "Numeric" } ] }, { "name": "impossible-flow", "conditions": [ { "op": "Test", "path": "$.processor.artifact", "value": { "value": "lorem-ipsum" } } ], "steps": [] } ] } }