Data Sources → Files & Integrations

APIs & Webhooks

Generic REST/webhook integration path for any system not covered by a purpose-built connector.

High-Level Design

Any external system → Generic Connector Framework → .NET Core microservices on Azure.

Data Source
APIs & Webhooks
Any external system with a REST API or webhook capability
→
Ingestion
.NET Core Generic Connector Framework
Configurable REST client / webhook receiver
→
Processing
.NET Core Stream Worker
Mapping-driven normalization
→
Foundation
Data Lakehouse
Normalized into the shared schema
→
Intelligence
.NET Core Analytics API
Joined with all other sources
→
Activation
.NET Core Activation API
Available to every downstream destination

💼 Business Context

  • Not every integration justifies a purpose-built connector — a configurable, low-code path keeps time-to-onboard short for long-tail systems
  • Reduces engineering backlog for one-off or low-volume integrations
  • Owned by Data / Platform Engineering, used on behalf of whichever team needs the integration

🔌 Technical Overview

The Generic Connector Framework is a .NET Core microservice that exposes two integration modes: an outbound REST client, configured with a base URL, auth scheme, and a field-mapping definition (JSON) that maps the source API's response to the shared ingestion contract; and an inbound webhook receiver (an Azure Function) that accepts a configurable payload shape and the same field-mapping definition. Both modes ultimately call Cxos.Ingestion.Client, so a new source can be onboarded via configuration rather than a new codebase.

Supported Modes

Outbound REST polling Inbound webhook receiver OAuth 2.0 / API key / mTLS auth JSON field mapping

💾 Sample Connector Configuration

{
  "connector_id": "conn_partner_survey",
  "mode": "webhook",
  "auth": { "type": "hmac", "header": "X-Signature" },
  "field_mapping": {
    "event": "$.event_type",
    "user_id": "$.customer.external_id",
    "properties.score": "$.survey.nps_score"
  }
}

🔗 Integration Points

  • Generic Connector Framework — .NET Core microservice (REST client + webhook receiver modes)
  • Cxos.Ingestion.Client NuGet package — shared contract, called by every configured connector instance
  • Azure Key Vault — per-connector credential storage
  • Azure API Management — inbound webhook endpoint exposure and throttling

🧰 Services Consumed

  • Owning microservice — Cxos.Connectors.Generic (see the Full Application Service Map)
  • No dedicated database — stateless connector (see Platform Connectors above)

⚠️ Non-Functional Considerations

  • Scale: each connector instance is independently rate-limited and scaled, so one noisy integration can't starve another
  • Latency: webhook mode is near-real-time; polling mode latency is configurable per connector (typically 5-60 minutes)
  • Reliability: field-mapping validation runs at configuration time, not at runtime, to catch mapping errors before they cause data loss
  • Security/Privacy: every connector instance is scoped to its own Key Vault secret and least-privilege access; mapping configuration is reviewed before a new source goes live

🎯 Enterprise Example

A partner loyalty program has no dedicated CXOS connector but exposes a webhook on survey completion. Standing up the integration via the Generic Connector Framework's field-mapping configuration takes an afternoon instead of a multi-week engineering project, and NPS scores start flowing into the unified profile the same day.

← Back to Files & Integrations