# CollabAuthorityConfig (/docs/collab/reference/collab-server/interfaces/CollabAuthorityConfig)



# Interface: CollabAuthorityConfig\<Transaction> [#interface-collabauthorityconfigtransaction]

Defined in:
[packages/collab-server/src/index.ts:32](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L32)

The config for creating a CollabAuthority. Parameters that perform database operations should use
the provided transaction or if a transaction is not provided, start a transaction and perform all
database operations inside it.

## Type Parameters [#type-parameters]

### Transaction [#transaction]

`Transaction`

## Properties [#properties]

### broadcastManager [#broadcastmanager]

```ts
broadcastManager: {
  broadcastCommit: (docId: string, commit: CommitJSON) => Promise<void>;
  createCommitListener: (docId: string, version: number) => Promise<CommitListener>;
}
```

Defined in:
[packages/collab-server/src/index.ts:89](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L89)

The broadcast manager that will be used to listen for and send document updates.

Currently the only built-in option is the
[RedisBroadcastManager](/docs/collab/reference/collab-server/classes/RedisBroadcastManager).

#### broadcastCommit [#broadcastcommit]

```ts
broadcastCommit: (docId: string, commit: CommitJSON) => Promise<void>;
```

##### Parameters [#parameters]

###### docId [#docid]

`string`

###### commit [#commit]

`CommitJSON`

##### Returns [#returns]

`Promise`\<`void`>

#### createCommitListener [#createcommitlistener]

```ts
createCommitListener: (docId: string, version: number) => Promise<CommitListener>;
```

##### Parameters [#parameters-1]

###### docId [#docid-1]

`string`

###### version [#version]

`number`

##### Returns [#returns-1]

`Promise`\<[`CommitListener`](/docs/collab/reference/collab-server/interfaces/CommitListener)>

***

### getCommit [#getcommit]

```ts
getCommit: (tr: Transaction | null, docId: string, commitRef: string) => Promise<CommitJSON | null>;
```

Defined in:
[packages/collab-server/src/index.ts:53](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L53)

Given a docId and commitRef, retrieves the associated commit's steps and version from your database
and returns a joined CommitJSON object.

#### Parameters [#parameters-2]

##### tr [#tr]

`Transaction` | `null`

##### docId [#docid-2]

`string`

##### commitRef [#commitref]

`string`

#### Returns [#returns-2]

`Promise`\<`CommitJSON` | `null`>

***

### getCommits [#getcommits]

```ts
getCommits: (tr: Transaction | null, docId: string, version: number) => Promise<CommitJSON[]>;
```

Defined in:
[packages/collab-server/src/index.ts:61](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L61)

For the provided docId, retrieves all commits from the database with a version number strictly
greater than the provided `version`.

#### Parameters [#parameters-3]

##### tr [#tr-1]

`Transaction` | `null`

##### docId [#docid-3]

`string`

##### version [#version-1]

`number`

#### Returns [#returns-3]

`Promise`\<`CommitJSON`\[]>

***

### getDoc [#getdoc]

```ts
getDoc: (tr: Transaction | null, docId: string) =>
  Promise<{
    docJSON: NodeJSON;
    lastUpdatedTimestamp: number;
    version: number;
  }>;
```

Defined in:
[packages/collab-server/src/index.ts:41](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L41)

Retrieves a document from your database by docId.

#### Parameters [#parameters-4]

##### tr [#tr-2]

`Transaction` | `null`

##### docId [#docid-4]

`string`

#### Returns [#returns-4]

`Promise`\<\{ `docJSON`: `NodeJSON`; `lastUpdatedTimestamp`: `number`; `version`: `number`; }>

***

### runWithTransaction [#runwithtransaction]

```ts
runWithTransaction: <Result>(callback: (tr: Transaction) => Promise<Result>) => Promise<Result>;
```

Defined in:
[packages/collab-server/src/index.ts:37](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L37)

This function should start a transaction on your database, execute the provided callback with it,
and commit the transaction.

#### Type Parameters [#type-parameters-1]

##### Result [#result]

`Result`

#### Parameters [#parameters-5]

##### callback [#callback]

(`tr`: `Transaction`) => `Promise`\<`Result`>

#### Returns [#returns-5]

`Promise`\<`Result`>

***

### saveCommit [#savecommit]

```ts
saveCommit: (
  tr: Transaction | null,
  docId: string,
  ref: string,
  version: number,
  steps: {
    [key: string]: unknown;
  }[],
) => Promise<void>;
```

Defined in:
[packages/collab-server/src/index.ts:75](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L75)

Saves a commit along with its version and ref to your database.

#### Parameters [#parameters-6]

##### tr [#tr-3]

`Transaction` | `null`

##### docId [#docid-5]

`string`

##### ref [#ref]

`string`

##### version [#version-2]

`number`

##### steps [#steps]

\{ \[`key`: `string`]: `unknown`; }\[]

#### Returns [#returns-6]

`Promise`\<`void`>

***

### saveDoc [#savedoc]

```ts
saveDoc: (
  tr: Transaction | null,
  docId: string,
  docJSON: NodeJSON,
  version: number,
  lastUpdatedTimestamp: number,
) => Promise<void>;
```

Defined in:
[packages/collab-server/src/index.ts:65](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L65)

Saves a document along with its docId, version, and lastUpdatedTimestamp to your database.

#### Parameters [#parameters-7]

##### tr [#tr-4]

`Transaction` | `null`

##### docId [#docid-6]

`string`

##### docJSON [#docjson]

`NodeJSON`

##### version [#version-3]

`number`

##### lastUpdatedTimestamp [#lastupdatedtimestamp]

`number`

#### Returns [#returns-7]

`Promise`\<`void`>

***

### schema [#schema]

```ts
schema: Schema;
```

Defined in:
[packages/collab-server/src/index.ts:33](https://github.com/handlewithcarecollective/pitter-patter/blob/81896664a0707dea093e9edc81dae89a35a20ad2/packages/collab-server/src/index.ts#L33)
