For the complete documentation index, see llms.txt. This page is also available as Markdown.

Connector Runner

The connector runner was retired on October 10, 2026. What was removed, what remains, and how to move integrations off it.

The connector runner was the background service that polled supported EHR, FHIR-store, and warehouse sources, delivered eligible world-model events to supported destinations, ran the gap scanner, and dispatched due outbound tasks. It had no public API of its own. Its Platform API surface changed as follows.

Removed

  • POST /v1/{workspace_id}/data-sources/{data_source_id}/sync

  • POST /v1/{workspace_id}/settings/gap-scanner/preview and POST /v1/{workspace_id}/settings/gap-scanner/scan

  • GET /v1/{workspace_id}/health/sync

  • health_status, last_sync_*, and is_stale on data-source responses

  • The connector status fields on pipeline status, and last_poll and last_sync_* on the pipeline source list and overview

  • last_poll_at, last_change_at, and sync_healthy on FHIR status

  • The pipeline section of the workspace health snapshot

  • Platform SDK 0.111.0 removes dataSources.triggerSync(), settings.gapScanner.preview(), and settings.gapScanner.scan(); 0.112.0 removes settings.gapScanner.get() and update()

On October 9, 2026, the Developer Console removed its Outreach and EHR Sync pages and the Data Sources connector catalog and detail pages. Customer workspaces have no connector catalog or connector detail page.

What Remains

  • Data-source records. Data Sources create, read, update, delete, status, and sync history remain. A saved data source is stored, but nothing polls it.

  • Gap-scanner settings. GET and PUT /v1/{workspace_id}/settings/gap-scanner still read and save settings, but no scanner acts on them. Platform SDK 0.112.0 has no methods for them.

  • Pipeline reads over stored data. The pipeline endpoints below report stored events, history, throughput, outbound logs, and entity-resolution counts. They no longer report live connector state.

Moving Off the Connector Runner

  • Place outreach calls through the Calls API. A trigger action can still write an outbound_task, but nothing dispatches it.

  • Send source records to the world model through FHIR, Bulk Import, or Customer Data Intake.

  • Read from or write to an external system during a conversation through an integration, and verify the result at the destination.

Pipeline Observability

Read-only pipeline endpoints remain under /v1/{workspace_id}/pipeline/. All operations require viewer+ access and are workspace-scoped.

Pipeline Status

Pipeline status

get

Pipeline dashboard: Lakebase entity count + Delta read-model event counts.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
total_eventsinteger · nullableOptional

Read-model event count for the last 7 days. Null means the read model is empty or unavailable; zero means the read model is ready and has no events.

event_read_model_statusstring · enumOptionalDefault: emptyPossible values:
event_read_model_synced_atstring · date-time · nullableOptional
total_entitiesintegerOptionalDefault: 0
get/v1/{workspace_id}/pipeline/status
GET /v1/{workspace_id}/pipeline/status HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "total_events": 1,
  "event_read_model_status": "empty",
  "event_read_model_synced_at": "2026-01-01T00:00:00.000Z",
  "total_entities": 0
}

List Sources

List pipeline sources

get

Data sources with persisted health status.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Query parameters
searchstring · nullableOptional

Search by name, ID, type, or health status

source_typestring · nullableOptional

Filter by source type

health_statusstring · nullableOptional

Filter by health status

is_activeboolean · nullableOptional

Filter by active state

Responses
200

Successful Response

application/json
idstring · uuidRequired
namestringRequired
display_namestring · nullableOptional
source_typestring · enumRequiredPossible values:
is_activebooleanRequired
health_statusstring · enumRequiredPossible values:
event_countintegerOptionalDefault: 0
get/v1/{workspace_id}/pipeline/sources
GET /v1/{workspace_id}/pipeline/sources HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
  {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "name": "text",
    "display_name": "text",
    "source_type": "ehr",
    "is_active": true,
    "health_status": "unknown",
    "event_count": 0
  }
]

Source Overview

Source overview

get

Consolidated source detail: metadata, health, recent failures, last poll, outbound summary.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
source_idstring · uuidRequired
Responses
200

Successful Response

application/json
idstring · uuidRequired
namestringRequired
display_namestring · nullableOptional
source_typestring · enumRequiredPossible values:
is_activebooleanRequired
health_statusstring · enumRequiredPossible values:
created_atstring · nullableOptional
event_countintegerOptionalDefault: 0
entity_countintegerOptionalDefault: 0
get/v1/{workspace_id}/pipeline/sources/{source_id}/overview
GET /v1/{workspace_id}/pipeline/sources/{source_id}/overview HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": "123e4567-e89b-12d3-a456-426614174000",
  "name": "text",
  "display_name": "text",
  "source_type": "ehr",
  "is_active": true,
  "health_status": "unknown",
  "created_at": "text",
  "event_count": 0,
  "entity_count": 0,
  "recent_failures": [
    {
      "event_id": "123e4567-e89b-12d3-a456-426614174000",
      "event_type": "text",
      "fhir_resource_type": "text",
      "sync_error": "text",
      "ingested_at": "text"
    }
  ],
  "outbound": {
    "total": 0,
    "synced": 0,
    "failed": 0,
    "pending": 0,
    "last_synced_at": "text"
  }
}

Source History

Source sync history

get

Event counts bucketed by time window for a specific source.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
source_idstring · uuidRequired
Query parameters
date_fromstring · date-time · nullableOptional
date_tostring · date-time · nullableOptional
intervalstring · enumOptionalDefault: 1hPossible values:
hoursinteger · min: 1 · max: 720 · nullableOptional
Responses
200

Successful Response

application/json
bucketstringRequired
source_systemstring · nullableOptional
event_countintegerRequired
get/v1/{workspace_id}/pipeline/sources/{source_id}/history
GET /v1/{workspace_id}/pipeline/sources/{source_id}/history HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
  {
    "bucket": "text",
    "source_system": "text",
    "event_count": 1
  }
]

Source Events

Source events

get

Paginated events for a specific data source.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
source_idstring · uuidRequired
Query parameters
sort_bystring[]OptionalDefault: []
limitinteger · max: 200OptionalDefault: 50
continuation_tokenanyOptional
event_typestring · nullableOptional

Filter by event type

entity_typestring · nullableOptional

Filter by entity type

date_fromstring · date-time · nullableOptional

Filter events ingested on or after this time

date_tostring · date-time · nullableOptional

Filter events ingested on or before this time

Responses
200

Successful Response

application/json
has_morebooleanRequired
continuation_tokenanyOptional
get/v1/{workspace_id}/pipeline/sources/{source_id}/events
GET /v1/{workspace_id}/pipeline/sources/{source_id}/events HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "event_type": "text",
      "entity_type": "text",
      "entity_id": "123e4567-e89b-12d3-a456-426614174000",
      "source": "text",
      "source_system": "text",
      "confidence": 1,
      "ingested_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "has_more": true,
  "continuation_token": null
}

Outbound Summary

Outbound sync summary

get

Per-sink outbound sync aggregation: synced/failed/pending counts.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
data_source_idstring · uuidRequired
data_source_namestringRequired
totalintegerRequired
syncedintegerRequired
failedintegerRequired
pendingintegerRequired
last_synced_atstring · nullableOptional
get/v1/{workspace_id}/pipeline/outbound
GET /v1/{workspace_id}/pipeline/outbound HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
  {
    "data_source_id": "123e4567-e89b-12d3-a456-426614174000",
    "data_source_name": "text",
    "total": 1,
    "synced": 1,
    "failed": 1,
    "pending": 1,
    "last_synced_at": "text"
  }
]

Outbound Log

Outbound sync log

get

Paginated outbound sync log for a specific sink.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
data_source_idstring · uuidRequired
Query parameters
limitinteger · max: 200OptionalDefault: 50
continuation_tokenanyOptional
statusstring · enum · nullableOptionalPossible values:
Responses
200

Successful Response

application/json
has_morebooleanRequired
continuation_tokenanyOptional
get/v1/{workspace_id}/pipeline/outbound/{data_source_id}/log
GET /v1/{workspace_id}/pipeline/outbound/{data_source_id}/log HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "event_id": "123e4567-e89b-12d3-a456-426614174000",
      "synced_at": "2026-01-01T00:00:00.000Z",
      "sync_error": "text",
      "attempt_count": 1,
      "created_at": "2026-01-01T00:00:00.000Z"
    }
  ],
  "has_more": true,
  "continuation_token": null
}

Entity Resolution Metrics

Entity resolution metrics

get

Historical same_as merge-edge counts (written by the pre-SDP resolver; merge detection now lives in the Databricks pipeline — new edges are not produced) and entity resolution loop status.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
total_same_as_edgesintegerRequired
recent_merges_24hintegerRequired
get/v1/{workspace_id}/pipeline/entity-resolution
GET /v1/{workspace_id}/pipeline/entity-resolution HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "total_same_as_edges": 1,
  "recent_merges_24h": 1
}

Legacy Review Counters

The retired event-review pipeline has no producer. Its compatibility counters remain zero and do not represent external write proposals.

Review pipeline metrics

get

Review queue depth, approval rate, and average review time.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Responses
200

Successful Response

application/json
queue_depthintegerRequired
approved_7dintegerRequired
rejected_7dintegerRequired
avg_review_time_hoursnumber · nullableOptional
total_itemsintegerOptionalDefault: 0
get/v1/{workspace_id}/pipeline/review
GET /v1/{workspace_id}/pipeline/review HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "queue_depth": 1,
  "pending_by_priority": {
    "ANY_ADDITIONAL_PROPERTY": 1
  },
  "approved_7d": 1,
  "rejected_7d": 1,
  "avg_review_time_hours": 1,
  "total_items": 0
}

Throughput

Event throughput

get

Event throughput time series across all sources.

Authorizations
AuthorizationstringRequired

API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.

Path parameters
workspace_idstring · uuidRequired
Query parameters
date_fromstring · date-time · nullableOptional
date_tostring · date-time · nullableOptional
intervalstring · enumOptionalDefault: 1dPossible values:
hoursinteger · min: 1 · max: 720 · nullableOptional
bucket_minutesinteger · min: 1 · max: 1440 · nullableOptional
Responses
200

Successful Response

application/json
bucketstringRequired
source_systemstring · nullableOptional
event_countintegerRequired
get/v1/{workspace_id}/pipeline/throughput
GET /v1/{workspace_id}/pipeline/throughput HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
[
  {
    "bucket": "text",
    "source_system": "text",
    "event_count": 1
  }
]

Last updated

Was this helpful?