Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.wellapp.ai/llms.txt

Use this file to discover all available pages before exploring further.

TransactionWorkspaceConnector is a per-row provenance junction that records which WorkspaceConnector sourced or received a given Transaction — analogous to DocumentWorkspaceConnector. Each row carries a direction discriminator (input = ingestion source, output = egress destination) so that a single transaction can be linked to multiple connectors in each direction without ambiguity. Tenant isolation is inherited transitively through the Transaction’s workspace and the WorkspaceConnector’s workspace rather than a direct workspace_pk column. As the highest-volume of the five entity-connector junctions (projected ~436 k rows at 18 months), it ships non-partitioned with two covering indexes: record-led and connector-led for sync-status range queries.
NamingValue
ObjectTransactionWorkspaceConnector
Resource type (JSON:API type)transaction_workspace_connector
Collection / records root(not a records root)
REST base/v1/transaction-workspace-connectors
Entity classTransactionWorkspaceConnector
Internal object. Not currently exposed on the public REST API. The operations below describe the intended contract.

API operations

OperationMethod & pathStatus
ListGET /v1/transaction-workspace-connectors🟡 Planned
RetrieveGET /v1/transaction-workspace-connectors/{id}🟡 Planned
CreatePOST /v1/transaction-workspace-connectors🟡 Planned
UpdatePATCH /v1/transaction-workspace-connectors/{id}🟡 Planned
DeleteDELETE /v1/transaction-workspace-connectors/{id}🟡 Planned

Data model

Attributes

FieldTypeRequiredConstraintsAllowed valuesDescription
directionenum (direction_enum — stored as native Postgres enum)✅ YesNOT NULL; CHECK enforced by the native Postgres enum type”input” | “output”Indicates whether the associated WorkspaceConnector is the ingestion source (input) or an egress destination (output) for the Transaction. Stored as the native Postgres enum core_api.direction_enum; the column value equals the enum VALUE string.
created_at🔒 system — datetime✅ YesNOT NULL; default now(); timestamptzRow-creation timestamp set automatically on insert via MikroORM onCreate hook. Never writable by the user.
updated_at🔒 system — datetime⚪ Nonullable; timestamptzLast-modified timestamp maintained automatically by MikroORM onCreate + onUpdate hooks. Null until the row is first updated after creation.
deleted_at🔒 system — datetime⚪ Nonullable; timestamptzSoft-delete timestamp. Null means the row is active. Set by the application when the association is logically removed; never hard-deleted. All queries must filter deleted_at IS NULL.

Relationships

NameTypeRequiredDescription
transactionto-one (ManyToOne)✅ YesThe Transaction this provenance row belongs to. Foreign key transaction_pk references core_api.transactions.pk ON UPDATE CASCADE. Tenant scope is inherited through this relationship — there is no direct workspace_pk on the junction.
workspaceConnectorto-one (ManyToOne)✅ YesThe WorkspaceConnector instance (an activated connector in a specific workspace) that ingested or will receive this transaction. Foreign key workspace_connector_pk references core_api.workspace_connectors.pk ON UPDATE CASCADE.

System-computed

  • pk — serial integer primary key, internal only, never exposed on the public API
  • created_at — set to new Date() on insert via MikroORM onCreate hook; never user-writable
  • updated_at — set to new Date() on insert and on every update via MikroORM onCreate + onUpdate hooks; null until first update
  • deleted_at — null on creation; written by application code for soft-delete; never hard-deleted
  • No transaction_workspace_connector_id UUID field is present on this entity — it uses only the internal serial pk (junction tables in this codebase omit the public *_id UUID unless externally referenced)
  • Rows are written exclusively by the connector sync pipeline (input direction) or by egress sync writers (output direction, iteration 4+); no user-facing PATCH route exists
  • Migration20260507000000 backfilled historical input rows from legacy entity.source_workspace_connector_pk values using an idempotent INSERT…SELECT NOT EXISTS guard; idempotency is NOT enforced by a UNIQUE constraint — no UNIQUE on (transaction_pk, workspace_connector_pk, direction) was shipped by design (deduplication is iteration 3+ work)
  • Two covering B-tree indexes ship with the table: idx_transaction_workspace_connectors_record_created on (transaction_pk, created_at) for record-led traversals; idx_transaction_workspace_connectors_wc_created_at on (workspace_connector_pk, created_at) for sync-status range queries

Example

{
  "data": {
    "type": "transaction_workspace_connector",
    "id": "a3f92c01-4e5b-47dc-9a13-001b8e2d7f44",
    "attributes": {
      "direction": "input",
      "created_at": "2026-05-07T14:23:11.000Z",
      "updated_at": "2026-05-07T14:23:11.000Z",
      "deleted_at": null
    },
    "relationships": {
      "transaction": {
        "data": { "type": "transaction", "id": "f1d3c8a2-0011-4bcd-8f2e-ab91c42e7001" }
      },
      "workspace_connector": {
        "data": { "type": "workspace_connector", "id": "9b2a5d3e-ccf1-4a89-b027-0f3d1e7c8a55" }
      }
    }
  }
}
Source: apps/api/src/database/entities/TransactionWorkspaceConnector.ts · domain: ingestion · tier: Infrastructure