Custom

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 integration key and endpoint URL for receiving custom observations

  2. Accepts Observation Objects The integration accepts both single observations and arrays of observations via HTTP POST

  3. Validates and Processes

    • Validates observation structure using Pydantic models

    • Stores observations directly in your data model

    • Tracks processing statistics and validation errors

Setting up Euno's Custom Integration

Step 1: Configure New Custom Source in Euno

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

  1. Name: Enter a descriptive name for your Custom source (e.g., "Manual Data Upload")

  2. Configuration Details:

    • Custom integration requires no configuration as it's a push-based integration

    • No schedule configuration is needed since observations are pushed as needed

Step 3: Resource Cleanup Options

Configure automatic resource cleanup options to manage outdated resources:

  • Time-Based Cleanup (default): Remove resources not detected for X days (default: 7 days)

  • Immediate Cleanup: Remove resources not detected in the most recent run

  • No Cleanup: Keep all resources indefinitely

Step 4: Save Configuration

Click the Save button, and Euno will generate an integration key. Copy and save this key securely as it will not be displayed again.

Step 5: Get the Upload Endpoint

  1. Click "Reset Trigger Key" to get the endpoint URL

  2. Copy the provided endpoint URL where you'll send custom observations

  3. Use the integration key from Step 4 as the Bearer token in your Authorization header

Sending Custom Observations

Example: Table with Tags and Metadata

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

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

cURL Command Examples

Single Observation Upload

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_INTEGRATION_KEY_HERE" \
  -d '{
    "uri": "custom.sales.monthly_revenue",
    "properties": {
      "type": "table",
      "name": "monthly_revenue",
      "description": "Monthly revenue aggregations by product line",
      "database_technology": "snowflake",
      "tags": ["revenue", "monthly", "sales"],
      "meta": {
        "department": "sales",
        "update_frequency": "monthly"
      }
    }
  }' \
  https://api.app.euno.ai/accounts/YOUR_ACCOUNT_ID/integrations/YOUR_INTEGRATION_ID/run

Multiple Observations Upload

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_INTEGRATION_KEY_HERE" \
  -d '[
    {
      "uri": "custom.marketing.campaigns",
      "properties": {
        "type": "table",
        "name": "campaigns",
        "tags": ["marketing", "campaigns"]
      }
    },
    {
      "uri": "custom.marketing.campaign_analytics",
      "properties": {
        "type": "view",
        "name": "campaign_analytics", 
        "description": "Derived analytics from campaign performance",
        "tags": ["marketing", "analytics", "derived"]
      }
    }
  ]' \
  https://api.app.euno.ai/accounts/YOUR_ACCOUNT_ID/integrations/YOUR_INTEGRATION_ID/run

Generating a new trigger key: If you need to create a new integration key, go to the Sources page and click on the three-dot menu next to your Custom source. Select "Reset Trigger Key" to generate a new key and endpoint URL.

Last updated