# PDPServer

Defined in: [packages/synapse-sdk/src/pdp/server.ts:75](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/pdp/server.ts#L75)

## Constructors

### Constructor

> **new PDPServer**(`options`): `PDPServer`

Defined in: [packages/synapse-sdk/src/pdp/server.ts:92](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/pdp/server.ts#L92)

Create a new PDPServer instance

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | [`OptionsType`](/reference/filoz/synapse-sdk/pdp/namespaces/pdpserver/type-aliases/optionstype/) | [PDPServer.OptionsType](/reference/filoz/synapse-sdk/pdp/namespaces/pdpserver/type-aliases/optionstype/) |

#### Returns

`PDPServer`

## Methods

### addPieces()

> **addPieces**(`dataSetId`, `clientDataSetId`, `pieces`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`AddPiecesResponse`](/reference/filoz/synapse-sdk/pdp/interfaces/addpiecesresponse/)\>

Defined in: [packages/synapse-sdk/src/pdp/server.ts:164](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/pdp/server.ts#L164)

Add pieces to an existing data set

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `dataSetId` | `bigint` | The ID of the data set to add pieces to |
| `clientDataSetId` | `bigint` | The client's dataset ID used when creating the data set |
| `pieces` | [`PieceInputWithMetadata`](/reference/filoz/synapse-core/warm-storage/type-aliases/pieceinputwithmetadata/)[] | Array of piece data containing PieceCID CIDs and raw sizes |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`AddPiecesResponse`](/reference/filoz/synapse-sdk/pdp/interfaces/addpiecesresponse/)\>

Promise that resolves when the pieces are added (201 Created)

#### Throws

Error if any CID is invalid

***

### createAndAddPieces()

> **createAndAddPieces**(`clientDataSetId`, `payee`, `payer`, `recordKeeper`, `pieces`, `metadata`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`CreateDataSetResponse`](/reference/filoz/synapse-sdk/pdp/interfaces/createdatasetresponse/)\>

Defined in: [packages/synapse-sdk/src/pdp/server.ts:136](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/pdp/server.ts#L136)

Creates a data set and adds pieces to it in a combined operation.
Users can poll the status of the operation using the returned data set status URL.
After which the user can use the returned transaction hash and data set ID to check the status of the piece addition.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `clientDataSetId` | `bigint` | Unique ID for the client's dataset |
| `payee` | `` `0x${string}` `` | Address that will receive payments (service provider) |
| `payer` | `` `0x${string}` `` | Address that will pay for the storage (client) |
| `recordKeeper` | `` `0x${string}` `` | Address of the Warm Storage contract |
| `pieces` | [`PieceInputWithMetadata`](/reference/filoz/synapse-core/warm-storage/type-aliases/pieceinputwithmetadata/)[] | Array of pieces to add to the data set. [PieceInputWithMetadata](/reference/filoz/synapse-core/warm-storage/type-aliases/pieceinputwithmetadata/) |
| `metadata` | [`MetadataObject`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataobject/) | Optional metadata for dataset and each of the pieces. |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`CreateDataSetResponse`](/reference/filoz/synapse-sdk/pdp/interfaces/createdatasetresponse/)\>

Promise that resolves with transaction hash and status URL

***

### createDataSet()

> **createDataSet**(`clientDataSetId`, `payee`, `payer`, `metadata`, `recordKeeper`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`CreateDataSetResponse`](/reference/filoz/synapse-sdk/pdp/interfaces/createdatasetresponse/)\>

Defined in: [packages/synapse-sdk/src/pdp/server.ts:106](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/pdp/server.ts#L106)

Create a new data set on the PDP server

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `clientDataSetId` | `bigint` | Unique ID for the client's dataset |
| `payee` | `` `0x${string}` `` | Address that will receive payments (service provider) |
| `payer` | `` `0x${string}` `` | Address that will pay for the storage (client) |
| `metadata` | [`MetadataObject`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataobject/) | Metadata entries for the data set (key-value pairs) |
| `recordKeeper` | `` `0x${string}` `` | Address of the Warm Storage contract |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`CreateDataSetResponse`](/reference/filoz/synapse-sdk/pdp/interfaces/createdatasetresponse/)\>

Promise that resolves with transaction hash and status URL

***

### getDataSet()

> **getDataSet**(`dataSetId`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`DataSetData`](/reference/filoz/synapse-sdk/synapse/interfaces/datasetdata/)\>

Defined in: [packages/synapse-sdk/src/pdp/server.ts:234](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/pdp/server.ts#L234)

Get data set details from the PDP server

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `dataSetId` | `bigint` | The ID of the data set to fetch |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`DataSetData`](/reference/filoz/synapse-sdk/synapse/interfaces/datasetdata/)\>

Promise that resolves with data set data

***

### uploadPiece()

> **uploadPiece**(`data`, `options?`): [`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`UploadPieceResponse`](/reference/filoz/synapse-core/sp/type-aliases/uploadpieceresponse/)\>

Defined in: [packages/synapse-sdk/src/pdp/server.ts:193](https://github.com/FilOzone/synapse-sdk/blob/32f86959b0bf15557657ea412e31a0897440ca98/packages/synapse-sdk/src/pdp/server.ts#L193)

Upload a piece to the PDP server using the commp-last protocol.

Accepts data as Uint8Array, AsyncIterable<Uint8Array>, or ReadableStream<Uint8Array>.
For optimal performance with non-trivial sizes, prefer streaming types (AsyncIterable or ReadableStream)
to avoid memory pressure and blocking behavior. See SIZE_CONSTANTS.MAX_UPLOAD_SIZE
documentation for detailed guidance.

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `data` | [`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\> \| `AsyncIterable`\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>, `any`, `any`\> \| [`ReadableStream`](https://developer.mozilla.org/docs/Web/API/ReadableStream)\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>\> | The data to upload (Uint8Array, AsyncIterable, or ReadableStream) |
| `options?` | [`UploadPieceOptions`](/reference/filoz/synapse-sdk/pdp/interfaces/uploadpieceoptions/) | Optional upload options [UploadPieceOptions](/reference/filoz/synapse-sdk/pdp/interfaces/uploadpieceoptions/) |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`UploadPieceResponse`](/reference/filoz/synapse-core/sp/type-aliases/uploadpieceresponse/)\>