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.

PeopleWorkspaceConnector is a direction-discriminated junction table that records per-row provenance between a People record and a WorkspaceConnector instance. Each row answers the question β€œwhich connector sourced or consumed this person, and in which direction?” β€” input for connectors that delivered the record into Well, output for connectors that received it from Well. Tenant isolation is inherited transitively through the People.workspace and WorkspaceConnector.workspace relationships; there is no direct workspace_pk column on the junction itself. The table was introduced in Migration20260505200000 as part of a five-entity junction pattern (W19 PR-A1), following the document_workspace_connectors precedent.
NamingValue
ObjectPeopleWorkspaceConnector
Resource type (JSON:API type)people_workspace_connector
Collection / records rootβ€” (not a records root)
REST base/v1/people-workspace-connectors
Entity classPeopleWorkspaceConnector
Internal object. Not currently exposed on the public REST API. The operations below describe the intended contract.

API operations

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

Data model

Attributes

FieldTypeRequiredConstraintsAllowed valuesDescription
directionπŸ”’ system β€” DirectionEnum (native PG enum direction_enum)βœ… YesNOT NULL; CHECK via PG enum type β€” stored values are the enum VALUE stringsinput | outputClassifies the connector’s role for this person: input means the connector delivered (sourced) the record into Well; output means the connector consumed (distributed) the record from Well.
created_atπŸ”’ system β€” timestamptzβœ… YesNOT NULL; default now(); set once on INSERT via MikroORM onCreate hookβ€”Timestamp of row insertion. Set automatically by the ORM on create; never updated thereafter.
updated_atπŸ”’ system β€” timestamptzβšͺ NoNullable; set on INSERT and on every UPDATE via MikroORM onCreate / onUpdate hooksβ€”Timestamp of the most recent mutation. Maintained automatically by the ORM.
deleted_atπŸ”’ system β€” timestamptzβšͺ NoNullable; NULL = active row; non-NULL = soft-deletedβ€”Soft-delete timestamp. When set, the row is treated as logically deleted and filtered from normal queries.

Relationships

NameTypeRequiredDescription
peopleto-one (ManyToOne)βœ… YesThe People record this junction row links. FK column people_pk references core_api.peoples.pk ON UPDATE CASCADE. Tenant isolation is inherited via People.workspace.
workspaceConnectorto-one (ManyToOne)βœ… YesThe WorkspaceConnector instance that sourced or consumed this person. FK column workspace_connector_pk references core_api.workspace_connectors.pk ON UPDATE CASCADE.

System-computed

  • pk β€” auto-increment serial primary key, internal only; never exposed on the public API
  • created_at β€” set to new Date() on INSERT via MikroORM onCreate: () => new Date() hook; PG column default is now()
  • updated_at β€” set on INSERT and updated on every subsequent mutation via MikroORM onCreate / onUpdate hooks
  • deleted_at β€” soft-delete sentinel; injected as NULL on INSERT; set by the connector sync orchestrator when a provenance link is invalidated or the connector is disconnected
  • Tenant isolation is not a stored column on this table β€” it is derived transitively through people.workspace_pk and workspace_connector.workspace_pk; Hasura RLS uses relationship traversal rather than a direct workspace_pk filter
  • No UNIQUE constraint on (people_pk, workspace_connector_pk, direction) β€” duplicate rows are an accepted design gap per the W19 migration rationale; deduplication is deferred to a future iteration
  • Two composite B-tree indexes: idx_people_workspace_connectors_record_created on (people_pk, created_at) for record-led traversals; idx_people_workspace_connectors_wc_created_at on (workspace_connector_pk, created_at) for sync-status range queries

Example

{
  "data": {
    "type": "people_workspace_connector",
    "id": "a3f92c11-8d14-4e2b-b305-7c1e0f3a9d82",
    "attributes": {
      "direction": "input",
      "created_at": "2026-05-10T14:32:00.000Z",
      "updated_at": "2026-05-10T14:32:00.000Z",
      "deleted_at": null
    },
    "relationships": {
      "people": {
        "data": { "type": "people", "id": "d1e4b7f0-3c2a-4891-a5f6-0b9e8c7d6e5f" }
      },
      "workspace_connector": {
        "data": { "type": "workspace_connector", "id": "9b8c7a6d-5e4f-3210-b1a0-c9d8e7f6a5b4" }
      }
    }
  }
}
Source: /Users/maximechampoux/platform/apps/api/src/database/entities/PeopleWorkspaceConnector.ts Β· domain: ingestion Β· tier: Infrastructure