# PDPServer

Defined in: [packages/synapse-sdk/src/pdp/server.ts:167](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L167)

## Constructors

### Constructor

```ts
new PDPServer(authHelper, serviceURL): PDPServer;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:176](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L176)

Create a new PDPServer instance

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `authHelper` | \| [`PDPAuthHelper`](/reference/filoz/synapse-sdk/pdp/classes/pdpauthhelper/) \| `null` | PDPAuthHelper instance for signing operations |
| `serviceURL` | `string` | The PDP service URL (e.g., https://pdp.provider.com) |

#### Returns

`PDPServer`

## Methods

### addPieces()

```ts
addPieces(
   dataSetId, 
   clientDataSetId, 
   pieceDataArray, 
metadata?): Promise<AddPiecesResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:343](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L343)

Add pieces to an existing data set

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `dataSetId` | `number` | The ID of the data set to add pieces to |
| `clientDataSetId` | `bigint` | The client's dataset ID used when creating the data set |
| `pieceDataArray` | `string`[] \| `PieceLink`[] | Array of piece data containing PieceCID CIDs and raw sizes |
| `metadata?` | [`MetadataEntry`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataentry/)[][] | Optional metadata for each piece (array of arrays, one per piece) |

#### 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

#### Example

```typescript
const pieceData = ['bafkzcibcd...']
const metadata = [[{ key: 'snapshotDate', value: '20250711' }]]
await pdpTool.addPieces(dataSetId, clientDataSetId, pieceData, metadata)
```

***

### createAndAddPieces()

```ts
createAndAddPieces(
   clientDataSetId, 
   payee, 
   payer, 
   recordKeeper, 
   pieceDataArray, 
metadata): Promise<CreateDataSetResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:235](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L235)

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` | `string` | Address that will receive payments (service provider) |
| `payer` | `string` | Address that will pay for the storage (client) |
| `recordKeeper` | `string` | Address of the Warm Storage contract |
| `pieceDataArray` | `string`[] \| `PieceLink`[] | Array of piece data containing PieceCID CIDs and raw sizes |
| `metadata` | \{ `dataset?`: [`MetadataEntry`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataentry/)[]; `pieces?`: [`MetadataEntry`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataentry/)[][]; \} | Optional metadata for dataset and each of the pieces. |
| `metadata.dataset?` | [`MetadataEntry`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataentry/)[] | - |
| `metadata.pieces?` | [`MetadataEntry`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataentry/)[][] | - |

#### 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()

```ts
createDataSet(
   clientDataSetId, 
   payee, 
   payer, 
   metadata, 
recordKeeper): Promise<CreateDataSetResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:194](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L194)

Create a new data set on the PDP server

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `clientDataSetId` | `bigint` | Unique ID for the client's dataset |
| `payee` | `string` | Address that will receive payments (service provider) |
| `payer` | `string` | Address that will pay for the storage (client) |
| `metadata` | [`MetadataEntry`](/reference/filoz/synapse-sdk/synapse/type-aliases/metadataentry/)[] | Metadata entries for the data set (key-value pairs) |
| `recordKeeper` | `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

***

### deletePiece()

```ts
deletePiece(
   dataSetId, 
   clientDataSetId, 
pieceID): Promise<string>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:594](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L594)

Delete a piece from a data set

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `dataSetId` | `number` | The ID of dataset to delete |
| `clientDataSetId` | `bigint` | Client dataset ID of the dataset to delete |
| `pieceID` | `number` | The ID of the piece to delete |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`string`\>

Promise for transaction hash of the delete operation

***

### downloadPiece()

```ts
downloadPiece(pieceCid): Promise<Uint8Array<ArrayBufferLike>>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:546](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L546)

Download a piece from a service provider

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` | The PieceCID CID of the piece |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>\>

The downloaded data

***

### findPiece()

```ts
findPiece(pieceCid): Promise<FindPieceResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:443](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L443)

Find a piece by PieceCID and size

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` | The PieceCID CID (as string or PieceCID object) |

#### Returns

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

Piece information if found

***

### getAuthHelper()

```ts
getAuthHelper(): PDPAuthHelper;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:685](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L685)

#### Returns

[`PDPAuthHelper`](/reference/filoz/synapse-sdk/pdp/classes/pdpauthhelper/)

***

### getDataSet()

```ts
getDataSet(dataSetId): Promise<DataSetData>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:566](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L566)

Get data set details from the PDP server

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `dataSetId` | `number` | 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

***

### getDataSetCreationStatus()

```ts
getDataSetCreationStatus(txHash): Promise<DataSetCreationStatusResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:388](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L388)

Check the status of a data set creation

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `txHash` | `string` | Transaction hash from createDataSet |

#### Returns

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

Promise that resolves with the creation status

***

### getPieceAdditionStatus()

```ts
getPieceAdditionStatus(dataSetId, txHash): Promise<PieceAdditionStatusResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:417](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L417)

Check the status of a piece addition transaction

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `dataSetId` | `number` | The data set ID |
| `txHash` | `string` | Transaction hash from addPieces |

#### Returns

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

Promise that resolves with the addition status

***

### getPieceStatus()

```ts
getPieceStatus(pieceCid): Promise<PieceStatusResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:467](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L467)

Get indexing and IPNI status for a piece

TODO: not used anywhere, remove?

#### Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `pieceCid` | `string` \| `PieceLink` | The PieceCID CID (as string or PieceCID object) |

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`PieceStatusResponse`\>

Piece status information including indexing and IPNI advertisement status

#### Throws

Error if piece not found or doesn't belong to service (404)

***

### getServiceURL()

```ts
getServiceURL(): string;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:681](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L681)

Get the service URL for this PDPServer instance

#### Returns

`string`

The service URL

***

### ping()

```ts
ping(): Promise<void>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:664](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L664)

Ping the service provider to check connectivity

#### Returns

[`Promise`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)\<`void`\>

Promise that resolves if provider is reachable (200 response)

#### Throws

Error if provider is not reachable or returns non-200 status

***

### uploadPiece()

```ts
uploadPiece(data, options?): Promise<UploadPieceResponse>;
```

Defined in: [packages/synapse-sdk/src/pdp/server.ts:505](https://github.com/FilOzone/synapse-sdk/blob/1d6c4b9fe34534bf1087dfe41491b72be0b46858/packages/synapse-sdk/src/pdp/server.ts#L505)

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`\<[`Uint8Array`](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array)\<`ArrayBufferLike`\>\> | The data to upload (Uint8Array, AsyncIterable, or ReadableStream) |
| `options?` | `UploadPieceOptions` | Optional upload options |

#### Returns

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