> For the complete documentation index, see [llms.txt](https://developer.firmhouse.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.firmhouse.com/sdks/firmhouse-sdk/reference/resources/products.md).

# Class: ProductsResource

You can use products to access all products in your project

## Methods

### fetchAll()

```ts
fetchAll(params?): Promise<PaginatedResponse<FirmhouseProduct>>;
```

Retrieve products

#### Parameters

**params?**

Parameters to filter products by

**after?**

`string` | `null`

Return the elements in the list that come after the specified cursor.

**before?**

`string` | `null`

Return the elements in the list that come before the specified cursor

**first?**

`number` | `null`

Return the first n elements from the list

**id?**

`string` | `null`

Only list products that match the passed in ID

**last?**

`number` | `null`

Return the last n elements from the list.

**shopifyVariantId?**

`string` | `null`

Only list products that match the passed in Shopify variant ID

**sku?**

`string` | `null`

Only list products that match the passed in SKU

**updatedSince?**

`string` | `null`

Filter products to those that where updated since the given datetime.

**Example**

```ts
2024-01-15T00:00:00+01:00
```

#### Returns

`Promise`<[`PaginatedResponse`](/sdks/firmhouse-sdk/reference/typealiases/paginated-response.md)<[`FirmhouseProduct`](/sdks/firmhouse-sdk/reference/interfaces/firmhouse-product.md)>>

List of products with pagination info

***

### fetchById()

```ts
fetchById(id): Promise<FirmhouseProduct>;
```

Retrieve a product by ID

#### Parameters

**id**

`string`

ID of the product

#### Returns

`Promise`<[`FirmhouseProduct`](/sdks/firmhouse-sdk/reference/interfaces/firmhouse-product.md)>

Product

#### Throws

* [NotFoundError](/sdks/firmhouse-sdk/reference/errors/not-found.md) - When the product is not found
