> 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).

# 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?**: `null` | `string`

  Return the elements in the list that come after the specified cursor.
* **before?**: `null` | `string`

  Return the elements in the list that come before the specified cursor
* **first?**: `null` | `number`

  Return the first n elements from the list
* **id?**: `null` | `string`

  Only list products that match the passed in ID
* **last?**: `null` | `number`

  Return the last n elements from the list.
* **shopifyVariantId?**: `null` | `string`

  Only list products that match the passed in Shopify variant ID
* **sku?**: `null` | `string`

  Only list products that match the passed in SKU
* **updatedSince?**: `null` | `string`

  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
