Custom Integration Properties Reference

The Custom integration accepts observations for built-in Euno resource types and custom resource types registered for your account. Only a closed subset of Euno built-in properties may be set in each observation.

If an observation includes a property that is not listed below, the observation is skipped and counted in the run report as invalid.

For observation structure and upload flows, see Custom Integration and Handling High Volume of Observations.

Observation shape

Each observation is a JSON object with:

Field
Required
Description

uri

Yes

Unique identifier for the resource. See URI structure.

properties

Yes

Object containing type, name, and any optional supported properties below.

Example

{
  "uri": "custom.analytics.customer_summary",
  "properties": {
    "type": "table",
    "name": "customer_summary",
    "description": "Aggregated customer metrics",
    "database_technology": "snowflake",
    "tags": ["analytics", "production"],
    "meta": {
      "owner": "data-team"
    },
    "explicit_additional_dependencies": [
      "custom.analytics.raw_customers"
    ]
  }
}

Supported properties

Property
Required
Type
Description

type

Yes

string

Built-in Euno resource type such as table or column, or a custom type registered for your account such as campaign_view or cube_measure.

name

Yes

string

Display name of the resource.

description

No

string

Human-readable description of the resource.

raw_code

No

string

Raw SQL or other source code associated with the resource.

qualified_code

No

string

Code for the resource, fully qualified based on known column schemas and upstream tables.

tags

No

array of strings

Tags applied to the resource.

meta

No

object

Arbitrary key-value metadata (JSON object).

database_technology

No

string

Warehouse or database technology where the resource lives (for example snowflake, bigquery, redshift).

table_dependencies

No

array of strings

Upstream resource URIs for resource-level lineage on any type except table and column. Each entry must be a valid URI string. See Lineage properties.

explicit_additional_dependencies

No

array of strings

Upstream URIs for type: "table" and type: "column" only. On tables, merged into resource-level lineage; on columns, merged into field-level lineage. Do not use on other types. See Lineage properties.

upstream_fields

No

array of strings

Upstream field URIs for field-level lineage on field-like resources other than column (for example dbt_metric, dbt_dimension, snowflake_metric, snowflake_dimension, looker_measure, looker_dimension, omni_measure, omni_dimension). Each entry must be a valid URI string. Do not use on type: "column"; use explicit_additional_dependencies instead. See Lineage properties.

parent_container

No

string

URI of the parent container of the resource. Creates a has parent / has child relationship in the graph. The value must be a valid URI string.

parent_container_name

No

string

Display name of the parent container. Normally derived automatically from the parent's name once the parent is observed; setting it directly on the child is only useful when the parent observation lags or is omitted.

container_chain

No

array of objects

Ancestry of the resource from immediate parent outward. Each element is a {uri, name, native_type, normalized_type} object.

icon_url

No

string

URL to an icon image for the resource. See Custom type icons below.

Required properties on every observation

Every observation must include both type and name in its properties object. Observations missing either property are skipped and reported in the run report.

Observations with allowed properties but invalid values (for example a malformed icon_url, or tags provided as a string instead of an array) are also skipped and counted as invalid.

Custom resource types must be registered before observations use them. Built-in types such as table and column do not need registration. If an observation uses an unregistered custom type, Euno skips that observation and records the unknown type in the run report. Register custom types with POST /accounts/YOUR_ACCOUNT_ID/resource_types before sending observations.

Lineage properties

Custom integration supports three lineage input properties. Which one to use depends on the resource type and whether the lineage is resource-level or field-level:

Resource type

Lineage kind

Property to set

Relationship created in Euno

table

Resource-level

explicit_additional_dependencies

has upstream

column

Field-level

explicit_additional_dependencies

has upstream_fields

Any other type (for example campaign_view, acme_transform_script)

Resource-level

table_dependencies

has upstream

Any field-like type other than column (for example dbt_metric, dbt_dimension, snowflake_metric, snowflake_dimension, looker_measure, looker_dimension, omni_measure, omni_dimension)

Field-level

upstream_fields

has upstream_fields

Rules

  • explicit_additional_dependencies β€” use only on table and column. On tables, do not use table_dependencies; it will not persist as lineage.

  • table_dependencies β€” use on every other type for resource-level lineage. Do not use explicit_additional_dependencies on other types; it is stored but does not create lineage edges.

  • upstream_fields β€” use for field-level lineage on field-like types other than column. For type: "column", use explicit_additional_dependencies instead β€” Euno recomputes upstream_fields for column-typed resources from explicit_additional_dependencies (and inferred code-based column dependencies), so a value set directly on a column would be overwritten.

For relationship semantics in Euno, see Relationships.

explicit_additional_dependencies

Use only when type is table or column:

table_dependencies

Use when type is anything other than table or column and you want resource-level lineage:

upstream_fields

Use on field-like types other than column to declare field-level lineage directly:

Parent/child relationships

Use parent_container to attach a resource to its parent in the graph. The parent itself must also be observed (in the same run or a previous one) so the edge can resolve. container_chain optionally captures the ancestry from the immediate parent outward, as a list of {uri, name, native_type, normalized_type} objects.

Example β€” a dbt_metric child observation, the semantic_model parent observation, and the ancestry:

Notes:

  • parent_container_name is normally derived automatically from the parent's name once the parent is observed; supply it directly on the child only when the parent observation lags or is omitted.

  • Every entry in container_chain must include all four keys (uri, name, native_type, normalized_type); the uri must be a valid URI. Malformed entries cause the whole observation to be skipped and reported in the run report.

Custom type icons

Use icon_url to supply a custom icon for resources whose type is not a built-in Euno resource type (for example acme_transform_script).

Requirements:

  • The URL must use http:// or https:// and be at most 2048 characters.

  • For the icon to render in the Euno UI, the URL path should end with a common image extension such as .svg, .png, .jpg, .gif, or .webp.

  • Host the image at a URL your Euno users can reach (public HTTPS is typical).

  • table, database, and database_schema resources use the warehouse icon from database_technology instead of icon_url.

Set icon_url on each resource that should display the icon (typically every resource of the same custom type uses the same URL).

Last updated