Endpoints

EndpointsCopied!

Endpoints in Eden are powerful integration interfaces that establish secure, managed connections to external systems and data sources. Built on gRPC (Google Remote Procedure Call), endpoints provide high-performance, bidirectional streaming capabilities with strong typing and efficient serialization.

Understanding EndpointsCopied!

An endpoint represents a configured connection to an external system such as:

  • Databases (SQL, NoSQL, time-series)

  • Message queues (Kafka, RabbitMQ, MQTT)

  • APIs (REST, SOAP, GraphQL)

  • File systems (local, cloud storage)

  • IoT devices and industrial systems

  • Enterprise applications (CRM, ERP, SCM)

Each endpoint encapsulates the connection details, authentication credentials, and protocol specifications needed to communicate with the external system. This abstraction simplifies integration by providing a uniform interface for diverse systems.

Endpoints in Eden go beyond simple connection strings by including:

  • Connection pooling and management

  • Automatic reconnection capabilities

  • Protocol translation and adaptation

  • Performance monitoring and metrics

  • Security credentials management

  • Rate limiting and throttling capabilities

Managing EndpointsCopied!

  • Create an Endpoint: POST /endpoints

    • Creates a new connection configuration to an external system

    • Requires specifying the endpoint type, connection parameters, and authentication details

    • Connection is validated during creation to ensure it functions correctly

    • Returns a unique identifier that represents this endpoint

  • Get Endpoint Details: GET /endpoints/{endpoint}

    • Retrieves the current configuration and status of an endpoint

    • Includes connection status, last connection time, and usage metrics

    • Sensitive information like passwords may be redacted

    • Useful for troubleshooting connection issues

  • Delete an Endpoint: DELETE /endpoints/{endpoint}

    • Permanently removes an endpoint configuration

    • Closes any active connections to the external system

    • Removes all associated credentials and configuration data

    • Does not affect the external system itself, only Eden's connection to it

    • Any workflows or templates referencing this endpoint will fail and need updating

Using Endpoints for Data ExchangeCopied!

Eden's endpoints provide a uniform interface for data exchange regardless of the underlying system, simplifying integration across diverse technologies.

  • Read Data: POST /endpoints/{endpoint}/read

    • Retrieves data from the external system via the endpoint

    • Uses gRPC for efficient, typed data exchange

    • Supports both query-based retrieval and subscription-based streaming

    • Can transform data during retrieval to normalize formats

    • Applies access controls to limit data visibility

  • Write Data: POST /endpoints/{endpoint}/write

    • Sends data to the external system via the endpoint

    • Supports transactions for ACID-compliant systems

    • Handles batch operations for improved performance

    • Validates data against schema before transmission

    • Provides detailed feedback on write operations

API ReferenceCopied!

Create Endpoint

  • URL: /endpoints

  • Method: POST

  • Headers Required: Authorization with JWT token

  • Request Body: Endpoint schema input

  • Success Response: 200 OK with endpoint details

Get Endpoint

  • URL: /endpoints/{endpoint}

  • Method: GET

  • Headers Required: Authorization with JWT token

  • URL Parameters:

    • endpoint: The ID of the endpoint

  • Success Response: 200 OK with endpoint details

Delete Endpoint

  • URL: /endpoints/{endpoint}

  • Method: DELETE

  • Headers Required: Authorization with JWT token

  • URL Parameters:

    • endpoint: The ID of the endpoint

  • Success Response: 200 OK with confirmation message

Read from Endpoint

  • URL: /endpoints/{endpoint}/read

  • Method: POST

  • Headers Required: Authorization with JWT token

  • URL Parameters:

    • endpoint: The ID of the endpoint

  • Request Body: Endpoint API request

  • Success Response: 200 OK with read response

Write to Endpoint

  • URL: /endpoints/{endpoint}/write

  • Method: POST

  • Headers Required: Authorization with JWT token

  • URL Parameters:

    • endpoint: The ID of the endpoint

  • Request Body: Endpoint API request

  • Success Response: 200 OK with write response

Endpoint Types and CapabilitiesCopied!

Eden supports a wide range of endpoint types, each with specialized capabilities:

  1. Database Endpoints

    • Support for SQL, NoSQL, and time-series databases

    • Query execution with parameter binding

    • Transaction management

    • Schema introspection

    • Data migration capabilities

  2. Messaging Endpoints

    • Publish/subscribe operations

    • Queue management

    • Message filtering and routing

    • Guaranteed delivery options

    • Dead-letter queue handling

  3. API Endpoints

    • REST, SOAP, and GraphQL support

    • Authentication handling

    • Request/response mapping

    • Rate limiting

    • Circuit breaking for resilience

  4. File System Endpoints

    • File reading and writing

    • Directory operations

    • Stream processing for large files

    • Event-based file monitoring

    • Compression and encryption options

  5. IoT and Device Endpoints

    • Protocol adaptation (MQTT, CoAP, OPC-UA)

    • Device discovery

    • Telemetry collection

    • Command sending

    • Edge processing capabilities

Common Configuration PatternsCopied!

Database Connection with Connection Pooling

{
  "name": "ProductionPostgreSQL",
  "type": "postgresql",
  "connection": {
    "host": "db.example.com",
    "port": 5432,
    "database": "production"
  },
  "authentication": {
    "type": "username_password",
    "username": "${ENV_DB_USER}",
    "password": "${ENV_DB_PASSWORD}"
  },
  "settings": {
    "poolSize": 20,
    "idleTimeout": 60,
    "maxLifetime": 1800,
    "ssl": true,
    "sslMode": "verify-full",
    "sslCert": "${ENV_SSL_CERT_PATH}"
  },
  "advanced": {
    "statementTimeout": 30,
    "queryLogging": true,
    "preparedStatements": true
  }
}

REST API with OAuth Authentication

{
  "name": "CrmApiEndpoint",
  "type": "rest",
  "connection": {
    "baseUrl": "https://api.crm.example.com/v2",
    "defaultHeaders": {
      "Accept": "application/json",
      "User-Agent": "Eden Integration/1.0"
    }
  },
  "authentication": {
    "type": "oauth2",
    "tokenUrl": "https://auth.crm.example.com/oauth/token",
    "clientId": "${ENV_CRM_CLIENT_ID}",
    "clientSecret": "${ENV_CRM_CLIENT_SECRET}",
    "scopes": ["read:contacts", "write:contacts"]
  },
  "settings": {
    "timeout": 30,
    "retries": 3,
    "retryDelay": 1000,
    "rateLimiting": {
      "enabled": true,
      "requestsPerMinute": 100
    }
  },
  "advanced": {
    "circuitBreaker": {
      "enabled": true,
      "failureThreshold": 5,
      "resetTimeout": 30
    },
    "caching": {
      "enabled": true,
      "ttl": 300,
      "cacheableOperations": ["GET"]
    }
  }
}

Message Queue for Event Processing

{
  "name": "OrderEventsQueue",
  "type": "kafka",
  "connection": {
    "bootstrapServers": ["kafka-1.example.com:9092", "kafka-2.example.com:9092"],
    "consumerGroup": "order-processing"
  },
  "authentication": {
    "type": "sasl_scram",
    "username": "${ENV_KAFKA_USER}",
    "password": "${ENV_KAFKA_PASSWORD}"
  },
  "settings": {
    "topics": {
      "consume": ["orders.new", "orders.updated", "orders.cancelled"],
      "produce": ["orders.processed", "orders.failed"]
    },
    "consumerSettings": {
      "autoOffsetReset": "earliest",
      "enableAutoCommit": false,
      "maxPollRecords": 100
    },
    "producerSettings": {
      "acks": "all",
      "compressionType": "snappy",
      "batchSize": 16384
    }
  },
  "advanced": {
    "schemaRegistry": {
      "url": "https://schema-registry.example.com",
      "auth": {
        "username": "${ENV_SCHEMA_REG_USER}",
        "password": "${ENV_SCHEMA_REG_PASSWORD}"
      }
    }
  }
}

Best Practices for Endpoint ManagementCopied!

  1. Security First

    • Use environment-specific credentials

    • Implement the principle of least privilege for service accounts

    • Regularly rotate credentials

    • Audit endpoint access regularly

  2. Performance Optimization

    • Configure appropriate connection pool sizes

    • Set reasonable timeouts

    • Use batch operations when possible

    • Implement caching for frequently accessed data

  3. Resilience Engineering

    • Configure retry policies

    • Implement circuit breakers for unstable systems

    • Set up alerting for endpoint failures

    • Create fallback mechanisms for critical operations

  4. Monitoring and Maintenance

    • Track endpoint performance metrics

    • Set up alerting for anomalies

    • Regularly test endpoint connectivity

    • Document endpoint dependencies and owners