> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bijection.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Interface: Sources<DataModel>

> Reference for the Sources interface in bijection/sources.

[sources](https://docs.bijection.com/api/modules/sources).Sources

## Type parameters

| Name | Type |
| :- | :- |
| `DataModel` | extends [`GenericDataModel`](https://docs.bijection.com/api/modules/server#genericdatamodel) = [`GenericDataModel`](https://docs.bijection.com/api/modules/server#genericdatamodel) |

## Properties

### changes

• `Readonly` **changes**: [`SourceChanges`](https://docs.bijection.com/api/interfaces/sources.SourceChanges)\<`DataModel`>

## Methods

### recordState

▸ **recordState**\<`TableName`>(`record`, `options?`): `Promise`\<[`SourceRecordState`](https://docs.bijection.com/api/modules/sources#sourcerecordstate)\<[`DocumentByName`](https://docs.bijection.com/api/modules/server#documentbyname)\<`DataModel`, `TableName`>> | `null`>

Read a source-owned operational record and value-free evidence under
its current ordinary record access. No historical payload is implied.

#### Type parameters

| Name | Type |
| :- | :- |
| `TableName` | extends [`SourceTableName`](https://docs.bijection.com/api/modules/sources#sourcetablename)\<`DataModel`> |

#### Parameters

| Name | Type |
| :- | :- |
| `record` | [`GenericId`](https://docs.bijection.com/api/modules/values#genericid)\<`TableName`> |
| `options?` | `Object` |
| `options.table?` | `TableName` |

#### Returns

`Promise`\<[`SourceRecordState`](https://docs.bijection.com/api/modules/sources#sourcerecordstate)\<[`DocumentByName`](https://docs.bijection.com/api/modules/server#documentbyname)\<`DataModel`, `TableName`>> | `null`>

***

### commandTarget

▸ **commandTarget**\<`Target`>(`record`, `options?`): `Promise`\<[`CommandTargetRef`](https://docs.bijection.com/api/modules/runtime#commandtargetref)\<`Target`> | `null`>

Freeze an acquired command target under current record access. A
freshness deadline invalidates this query and fences mutation acceptance.

#### Type parameters

| Name | Type |
| :- | :- |
| `Target` | extends [`GenericId`](https://docs.bijection.com/api/modules/values#genericid)\<[`TableNamesInDataModel`](https://docs.bijection.com/api/modules/server#tablenamesindatamodel)\<`DataModel`>> \| \{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid) ; `key`: `string`  } |

#### Parameters

| Name | Type | Description |
| :- | :- | :- |
| `record` | `Target` | - |
| `options?` | `Object` | - |
| `options.maximumAgeMs?` | `number` | - |
| `options.version?` | `"record"` \| `"content"` | Select the host-acquired content token; default is the full record's conditional version. Only admitted file-content commands consume it. |

#### Returns

`Promise`\<[`CommandTargetRef`](https://docs.bijection.com/api/modules/runtime#commandtargetref)\<`Target`> | `null`>

***

### install

▸ **install**\<`Target`>(`table`, `options`): `Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid)  }>

Install a verified resource and bind immutable application references
in this mutation. The resource is the selection its source's
`resourceValidator` accepted.

#### Type parameters

| Name | Type |
| :- | :- |
| `Target` | extends [`SourceTableName`](https://docs.bijection.com/api/modules/sources#sourcetablename)\<`DataModel`> \| [`ResourceTable`](https://docs.bijection.com/api/modules/sources#resourcetable)\<`any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `table` | `Target` |
| `options` | \{ `startPaused?`: `true` ; `resource`: [`ResourceSelection`](https://docs.bijection.com/api/modules/connectors#resourceselection)\<`Target` extends [`ResourceTable`](https://docs.bijection.com/api/modules/sources#resourcetable)\<`any`, `any`, infer Contract> ? `Contract` : [`SourceContract`](https://docs.bijection.com/api/modules/sources#sourcecontract)\<`DataModel`, `Extract`\<`Target`, [`TableNamesInDataModel`](https://docs.bijection.com/api/modules/server#tablenamesindatamodel)\<`DataModel`>>>>  } & [`InstallationScope`](https://docs.bijection.com/api/modules/sources#installationscope)\<`Target` extends [`ResourceTable`](https://docs.bijection.com/api/modules/sources#resourcetable)\<`any`, infer Scope, `any`> ? `Scope` : [`SourceScope`](https://docs.bijection.com/api/modules/sources#sourcescope)\<[`NamedTableInfo`](https://docs.bijection.com/api/modules/server#namedtableinfo)\<`DataModel`, `Extract`\<`Target`, [`TableNamesInDataModel`](https://docs.bijection.com/api/modules/server#tablenamesindatamodel)\<`DataModel`>>>>> |

#### Returns

`Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid)  }>

***

### replace

▸ **replace**\<`TableName`>(`source`, `options`): `Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid)  }>

Prepare a private replacement for the selected serving source;
publication selects it after its entire native group satisfies the table
evidence floors. The old source serves meanwhile.

#### Type parameters

| Name | Type |
| :- | :- |
| `TableName` | extends [`SourceTableName`](https://docs.bijection.com/api/modules/sources#sourcetablename)\<`DataModel`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | `Object` |
| `source.table` | `TableName` |
| `source.sourceId` | [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid) |
| `options` | `Object` |
| `options.resource` | [`ResourceSelection`](https://docs.bijection.com/api/modules/connectors#resourceselection)\<[`SourceContract`](https://docs.bijection.com/api/modules/sources#sourcecontract)\<`DataModel`, `TableName`>> |

#### Returns

`Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid)  }>

***

### pause

▸ **pause**\<`Resource`>(`source`): `Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid) ; `pauseId`: [`PauseId`](https://docs.bijection.com/api/modules/values#pauseid) ; `isChanged`: `boolean`  }>

Pause the acquisition owner while retaining its published evidence.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |

#### Returns

`Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid) ; `pauseId`: [`PauseId`](https://docs.bijection.com/api/modules/values#pauseid) ; `isChanged`: `boolean`  }>

***

### resume

▸ **resume**\<`Resource`>(`source`, `options`): `Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid) ; `isChanged`: `boolean`  }>

Release exactly the pause observed by this controller. A later pause refuses.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |
| `options` | `Object` |
| `options.pauseId` | [`PauseId`](https://docs.bijection.com/api/modules/values#pauseid) |

#### Returns

`Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid) ; `isChanged`: `boolean`  }>

***

### withdraw

▸ **withdraw**\<`Resource`>(`source`): `Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid)  }>

Withdraw this installed source through its publication and custody owners.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |

#### Returns

`Promise`\<\{ `sourceId`: [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid)  }>

***

### requestRefresh

▸ **requestRefresh**\<`Resource`>(`source`, `options?`): `Promise`\<[`SourceRefreshRequest`](https://docs.bijection.com/api/modules/browser#sourcerefreshrequest)>

Record refresh intent atomically with this mutation. Recovering a retained
request keeps its original source even after replacement. No provider I/O
happens here. Operations may request the same effect.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |
| `options?` | [`SourceRefreshOptions`](https://docs.bijection.com/api/modules/sources#sourcerefreshoptions) |

#### Returns

`Promise`\<[`SourceRefreshRequest`](https://docs.bijection.com/api/modules/browser#sourcerefreshrequest)>

***

### getRequest

▸ **getRequest**(`request`): `Promise`\<[`SourceRefreshObservation`](https://docs.bijection.com/api/modules/sources#sourcerefreshobservation) | `null`>

Observe this caller's retained source request under current source read
authority. A missing or expired request returns null and starts no work.

#### Parameters

| Name | Type |
| :- | :- |
| `request` | `Object` |
| `request.requestId` | [`RequestId`](https://docs.bijection.com/api/modules/values#requestid) |

#### Returns

`Promise`\<[`SourceRefreshObservation`](https://docs.bijection.com/api/modules/sources#sourcerefreshobservation) | `null`>

***

### resolve

▸ **resolve**\<`TableName`>(`source`): `Promise`\<[`SourceInstallation`](https://docs.bijection.com/api/modules/sources#sourceinstallation)\<[`NamedTableInfo`](https://docs.bijection.com/api/modules/server#namedtableinfo)\<`DataModel`, `TableName`>>>

Resolve the selected serving source against this component and table,
including empty sources, under the source's current read rule.

#### Type parameters

| Name | Type |
| :- | :- |
| `TableName` | extends [`SourceTableName`](https://docs.bijection.com/api/modules/sources#sourcetablename)\<`DataModel`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | \{ `table`: `TableName` ; `resource?`: `never`  } & [`TableSourceSelection`](https://docs.bijection.com/api/modules/sources#tablesourceselection)\<[`NamedTableInfo`](https://docs.bijection.com/api/modules/server#namedtableinfo)\<`DataModel`, `TableName`>> |

#### Returns

`Promise`\<[`SourceInstallation`](https://docs.bijection.com/api/modules/sources#sourceinstallation)\<[`NamedTableInfo`](https://docs.bijection.com/api/modules/server#namedtableinfo)\<`DataModel`, `TableName`>>>

***

### related

▸ **related**\<`TableName`>(`source`, `target`): `Promise`\<[`SourceInstallation`](https://docs.bijection.com/api/modules/sources#sourceinstallation)\<[`NamedTableInfo`](https://docs.bijection.com/api/modules/server#namedtableinfo)\<`DataModel`, `TableName`>>>

Resolve a sibling table from this exact resource installation under
both roles' current read policies. Equal provider IDs in other accounts
never join. The returned table retains the native source/epoch selection.

#### Type parameters

| Name | Type |
| :- | :- |
| `TableName` | extends [`SourceTableName`](https://docs.bijection.com/api/modules/sources#sourcetablename)\<`DataModel`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`> |
| `target` | `Object` |
| `target.table` | `TableName` |

#### Returns

`Promise`\<[`SourceInstallation`](https://docs.bijection.com/api/modules/sources#sourceinstallation)\<[`NamedTableInfo`](https://docs.bijection.com/api/modules/server#namedtableinfo)\<`DataModel`, `TableName`>>>

***

### terms

▸ **terms**\<`T`, `Resource`>(`source`, `fields`): `Promise`\<[`SourceTerms`](https://docs.bijection.com/api/modules/sources#sourceterms)\<`T`>>

Reads installation terms under source row authority. The native owner
requires the exact validator declared by this source.

#### Type parameters

| Name | Type |
| :- | :- |
| `T` | extends [`Fields`](https://docs.bijection.com/api/modules/sources#fields) |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |
| `fields` | `T` |

#### Returns

`Promise`\<[`SourceTerms`](https://docs.bijection.com/api/modules/sources#sourceterms)\<`T`>>

***

### barrier

▸ **barrier**(`sourceIds`, `barrier`, `options?`): `Promise`\<[`SourceBarrierBasis`](https://docs.bijection.com/api/modules/sources#sourcebarrierbasis)>

Resolve 1..8 source handles under each source's current read authority.
A required refusal also prevents the containing transaction from committing.

#### Parameters

| Name | Type |
| :- | :- |
| `sourceIds` | readonly [`SourceId`](https://docs.bijection.com/api/modules/values#sourceid)\[] |
| `barrier` | [`SourceBarrier`](https://docs.bijection.com/api/modules/sources#sourcebarrier) |
| `options?` | `Object` |
| `options.require?` | `boolean` |

#### Returns

`Promise`\<[`SourceBarrierBasis`](https://docs.bijection.com/api/modules/sources#sourcebarrierbasis)>

***

### recordWork

▸ **recordWork**\<`Resource`>(`source`, `key`): `Promise`\<[`SourceRecordWork`](https://docs.bijection.com/api/modules/sources#sourcerecordwork)>

Observe one native key's acquisition work under current source row
authority. It starts no work. Changes invalidate this query, including a
new obligation created after an idle result. Not available in read rules.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |
| `key` | `string` |

#### Returns

`Promise`\<[`SourceRecordWork`](https://docs.bijection.com/api/modules/sources#sourcerecordwork)>

***

### fileContract

▸ **fileContract**(`source`): `Promise`\<[`SourceFileContract`](https://docs.bijection.com/api/modules/sources#sourcefilecontract) | `null`>

Inspect the native copy or observed-history role under current source
read authority. Null means no admitted file contract; a label is no proof.

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`> |

#### Returns

`Promise`\<[`SourceFileContract`](https://docs.bijection.com/api/modules/sources#sourcefilecontract) | `null`>

***

### requireMembership

▸ **requireMembership**(`source`, `key`, `when`): `Promise`\<`void`>

Add a current observed record condition to retained source obligations.
Derived files/results recheck it at release. This grants no authority and
starts no provider I/O. A withdrawal, changed epoch or false condition
refuses the prerequisite. Not available inside a read rule.

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`> |
| `key` | `string` |
| `when` | `Object` |
| `when.field` | `string` |
| `when.equals` | `string` \| `boolean` \| `null` |

#### Returns

`Promise`\<`void`>

***

### fileContent

▸ **fileContent**(`source`, `key`): `Promise`\<[`SourceFileContent`](https://docs.bijection.com/api/modules/sources#sourcefilecontent)>

Inspect an acquired contents or exports role using its native metadata
relationship, exact byte identity and retained per-key obligation. Both
roles' current read policies apply. No provider I/O is started.

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`> |
| `key` | `string` |

#### Returns

`Promise`\<[`SourceFileContent`](https://docs.bijection.com/api/modules/sources#sourcefilecontent)>

***

### artifact

▸ **artifact**(`source`, `key`): `Promise`\<[`SourceArtifact`](https://docs.bijection.com/api/modules/sources#sourceartifact-2) | `null`>

Resolve the last host-imported `file` of a content collection under its
current read policy and the file's original protection. Null means no
acquired file at this query's basis. Lookup extends no retention and
starts no provider I/O.

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`> |
| `key` | `string` |

#### Returns

`Promise`\<[`SourceArtifact`](https://docs.bijection.com/api/modules/sources#sourceartifact-2) | `null`>

***

### status

▸ **status**\<`Resource`>(`source`, `options`): `Promise`\<[`SourceStatus`](https://docs.bijection.com/api/modules/sources#sourcestatus) & \{ `assessment`: [`SourceRequirementAssessment`](https://docs.bijection.com/api/modules/sources#sourcerequirementassessment)  }>

Read coverage and update work together under current row authority.
Changes to either invalidate a query that reads this status. Keep business
decisions on `evidence` when they do not need scheduler progress.
Not available inside a read rule.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |
| `options` | `Object` |
| `options.require` | [`SourceReadRequirement`](https://docs.bijection.com/api/modules/sources#sourcereadrequirement) |

#### Returns

`Promise`\<[`SourceStatus`](https://docs.bijection.com/api/modules/sources#sourcestatus) & \{ `assessment`: [`SourceRequirementAssessment`](https://docs.bijection.com/api/modules/sources#sourcerequirementassessment)  }>

▸ **status**\<`Resource`>(`source`): `Promise`\<`Omit`\<[`SourceStatus`](https://docs.bijection.com/api/modules/sources#sourcestatus), `"assessment"`>>

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |

#### Returns

`Promise`\<`Omit`\<[`SourceStatus`](https://docs.bijection.com/api/modules/sources#sourcestatus), `"assessment"`>>

***

### evidence

▸ **evidence**\<`Resource`>(`source`, `options?`): `Promise`\<[`SourceEvidence`](https://docs.bijection.com/api/modules/sources#sourceevidence)>

The selected source's evidence. A selection naming a table also
requires that the source publishes into it; this check includes empty
sources, whose binding cannot be inferred from returned rows. A mismatch
releases no coverage.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type | Description |
| :- | :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> | - |
| `options?` | `Object` | - |
| `options.record?` | [`GenericId`](https://docs.bijection.com/api/modules/values#genericid)\<`string`> | Require a complete provider observation of this source-owned row. Directory authorization uses this bound instead of collection age. |
| `options.require?` | [`SourceReadRequirement`](https://docs.bijection.com/api/modules/sources#sourcereadrequirement) & \{ `observedAfter?`: [`GenericId`](https://docs.bijection.com/api/modules/values#genericid)\<`string`>  } | A [SourceReadRequirement](https://docs.bijection.com/api/modules/sources#sourcereadrequirement) for this record, or for the whole selected source population when `record` is absent. A table that reads under one requirement declares it on its binding instead. |

#### Returns

`Promise`\<[`SourceEvidence`](https://docs.bijection.com/api/modules/sources#sourceevidence)>

***

### sync

▸ **sync**\<`Resource`>(`source`): `Promise`\<[`SourceSync`](https://docs.bijection.com/api/modules/sources#sourcesync) | `null`>

What acquisition of the source is doing now. It is read and tracked like
`evidence`, under the same authority, but it moves at every scheduled
occurrence, so read it only where it is shown: a decision that reads it
re-runs whenever the schedule moves. `null` when the source has no
schedule this caller may see, such as after its connection was re-pointed
at another account. Not available inside a read rule.

#### Type parameters

| Name | Type |
| :- | :- |
| `Resource` | extends [`ResourceReference`](https://docs.bijection.com/api/modules/runtime#resourcereference)\<`any`, `any`, `any`, `any`, `any`> |

#### Parameters

| Name | Type |
| :- | :- |
| `source` | [`SourceSelector`](https://docs.bijection.com/api/modules/sources#sourceselector)\<`DataModel`, `Resource`> |

#### Returns

`Promise`\<[`SourceSync`](https://docs.bijection.com/api/modules/sources#sourcesync) | `null`>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.