Custom Integration

Euno's Custom integration provides the simplest way to ingest data resources directly into your data model. This integration accepts raw observation objects, making it perfect for custom data sources, manual uploads, or integrating systems that don't have dedicated Euno integrations.

How It Works

The integration follows these steps:

  1. Provides a secure endpoint Euno generates a unique trigger secret and endpoint URL for receiving custom observations

  2. Accepts Observation Objects The integration accepts both single observations and arrays of observations via HTTP POST, using only the supported Custom integration properties

  3. Validates and Processes

    • Validates each observation against supported properties and value types

    • Stores observations directly in your data model

    • Tracks processing statistics and validation errors

Setting up Euno's Custom Integration

Step 1: Access the Sources Page

  1. Navigate to the Sources page in the Euno application

  2. Click on the Add New Source button

  3. Select Custom from the available integrations

Step 2: General Configuration

Configuration
Description

Name*

Descriptive name for your Custom source (for example, "Manual Data Upload")

* Required field.

Custom integration requires no additional configuration fields. It is a push-based integration with no schedule β€” observations are sent whenever your pipeline or script runs.

Step 3: Resource Cleanup Options

Configure automatic resource cleanup options to manage outdated resources:

  • Immediate Cleanup (default): Remove resources not detected in the most recent successful source integration run

  • No Cleanup: Keep all resources indefinitely, even if they are no longer detected in a run

Time-based cleanup is not available for Custom sources.

Step 4: Save Configuration

Click Save. Euno opens a modal with:

  • Your trigger secret β€” copy and store it securely; it is shown only once

  • The run endpoint URL β€” for inline JSON observations

  • The prepare-upload endpoint URL β€” for bulk file uploads (see Handling High Volume of Observations)

  • A link to custom resource type registration guidance

Use the trigger secret as a Bearer token in the Authorization header for the Custom integration run and prepare-upload calls.

Step 5: API Endpoints

Custom integration exposes two endpoints. Replace YOUR_ACCOUNT_ID and YOUR_INTEGRATION_ID with the values from your Euno account.

Endpoint
Use for

POST .../integrations/YOUR_INTEGRATION_ID/run

Inline JSON β€” single observations or small batches

POST .../integrations/YOUR_INTEGRATION_ID/prepare-upload

Bulk file upload β€” request a signed URL for a .json, .jsonl, or .ndjson file

Both endpoints require Authorization: Bearer YOUR_TRIGGER_SECRET.

The /run and prepare-upload URLs are shown in the post-save modal and in Reset Trigger Key. You can also construct them from your account ID and integration ID as in the examples below.

Rotating your trigger secret: Open your Custom source on the Sources page and click Reset Trigger Key to generate a new secret. This invalidates the previous secret immediately.

Register Custom Resource Types

Every observation must include properties.type. Built-in Euno types such as table and column work without registration.

Before sending a new custom type such as campaign_view or cube_measure, register it for the account:

This endpoint uses normal Euno API authentication and requires permission to manage account settings. Do not use the custom integration trigger key here; the trigger key is only for /run and /prepare-upload.

The type name must use lowercase ASCII letters, numbers, and underscores, and must start with a letter. Type registration does not currently support rename, delete, or type-level icon configuration.

If a run contains an unregistered custom type, Euno skips only those observations. Other valid observations in the same run continue, and the run report lists the unknown type so you can register it and retry. If every observation in a run is skipped this way, the run fails with the rejected types listed in the report.

Sending Custom Observations

See Custom Integration Properties Reference for the full list of supported properties and observation format constraints.

Example: Table with Tags and Metadata

Here's a complete example of a custom observation for a table with tags:

cURL Command Examples

Single Observation Upload

Multiple Observations Upload

What Euno Ingests

Custom integration accepts observations for built-in Euno resource types and custom resource types registered for your account. Each observation must include type and name. See the properties reference for supported metadata and lineage fields.

Handling High Volume of Observations

The inline /run examples above are ideal for small payloads. When you need to upload many observations in a single run β€” especially from a pipeline or a large export β€” use Euno's prepare-upload flow to upload a .json, .jsonl, or .ndjson file directly to cloud storage.

This avoids HTTP request size limits and is the recommended approach for production bulk ingestion.

β†’ Handling High Volume of Observations

Example: Homegrown ELT Pipeline

For a step-by-step example of documenting a Python job that reads from one Snowflake table and writes to another β€” including which observations to emit and how to wire lineage β€” see:

β†’ Example: Homegrown ELT Pipeline

Last updated