# exportProductsStep - Medusa Core Workflows Reference

This documentation provides a reference to the `exportProductsStep`. It belongs to the `@medusajs/medusa/core-flows` package.

```ts title="src/workflows/my-workflow.ts"
import { createWorkflow } from "@medusajs/framework/workflows-sdk"
import { exportProductsStep } from "@medusajs/medusa/core-flows"

const myWorkflow = createWorkflow(
  "my-workflow",
  () => {
    const data = exportProductsStep({
      "select": [
        "{value}"
      ]
    })
  }
)
```

## Input

- ExportProductsDTO: (\[ExportProductsDTO]\(../../../../../types/WorkflowTypes/ProductWorkflow/interfaces/types.WorkflowTypes.ProductWorkflow.ExportProductsDTO/page.mdx))

  - select: (\`string\`\[]) The fields to select. These fields will be passed to
    \[Query]\(https://docs.medusajs.com/learn/fundamentals/module-links/query), so you can
    pass product properties or any relation names, including custom links.

  - filter: (\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx)) The filters to select which products to export.

    - $and: ((\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx) \\| \[BaseFilterable]\(../../../../../product/interfaces/product.BaseFilterable/page.mdx)\&#60;\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx)\&#62;)\[]) An array of filters to apply on the entity, where each item in the array is joined with an "and" condition.

      - $and: ((\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx) \\| \[BaseFilterable]\(../../../../../product/interfaces/product.BaseFilterable/page.mdx)\&#60;\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx)\&#62;)\[]) An array of filters to apply on the entity, where each item in the array is joined with an "and" condition.

      - $or: ((\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx) \\| \[BaseFilterable]\(../../../../../product/interfaces/product.BaseFilterable/page.mdx)\&#60;\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx)\&#62;)\[]) An array of filters to apply on the entity, where each item in the array is joined with an "or" condition.

      - q: (\`string\`) Search through the products' attributes, such as titles and descriptions, using this search term.

      - status: (\[ProductStatus]\(../../../../../product/types/product.ProductStatus/page.mdx) \\| \[ProductStatus]\(../../../../../product/types/product.ProductStatus/page.mdx)\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;ProductStatus | ProductStatus\[]\&#62;) The status to filter products by

      - title: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The titles to filter products by.

      - handle: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The handles to filter products by.

      - sku: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The skus to filter products by.

      - id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The IDs to filter products by.

      - external\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The external IDs to filter products by.

      - is\_giftcard: (\`boolean\`) Filters only or excluding gift card products

      - tags: (\`object\`) Filters on a product's tags.

      - variants: (\`object\`) Filters on a product's variant properties.

      - type\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) Filter a product by the ID of the associated type

      - categories: (\`object\`) Filter a product by the IDs of their associated categories.

      - collection\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) Filters a product by its associated collections.

      - created\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters a product based on when it was created

      - updated\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters a product based on when it was updated

      - deleted\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters soft-deleted products based on the date they were deleted at.

    - $or: ((\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx) \\| \[BaseFilterable]\(../../../../../product/interfaces/product.BaseFilterable/page.mdx)\&#60;\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx)\&#62;)\[]) An array of filters to apply on the entity, where each item in the array is joined with an "or" condition.

      - $and: ((\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx) \\| \[BaseFilterable]\(../../../../../product/interfaces/product.BaseFilterable/page.mdx)\&#60;\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx)\&#62;)\[]) An array of filters to apply on the entity, where each item in the array is joined with an "and" condition.

      - $or: ((\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx) \\| \[BaseFilterable]\(../../../../../product/interfaces/product.BaseFilterable/page.mdx)\&#60;\[FilterableProductProps]\(../../../../../product/interfaces/product.FilterableProductProps/page.mdx)\&#62;)\[]) An array of filters to apply on the entity, where each item in the array is joined with an "or" condition.

      - q: (\`string\`) Search through the products' attributes, such as titles and descriptions, using this search term.

      - status: (\[ProductStatus]\(../../../../../product/types/product.ProductStatus/page.mdx) \\| \[ProductStatus]\(../../../../../product/types/product.ProductStatus/page.mdx)\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;ProductStatus | ProductStatus\[]\&#62;) The status to filter products by

      - title: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The titles to filter products by.

      - handle: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The handles to filter products by.

      - sku: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The skus to filter products by.

      - id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The IDs to filter products by.

      - external\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The external IDs to filter products by.

      - is\_giftcard: (\`boolean\`) Filters only or excluding gift card products

      - tags: (\`object\`) Filters on a product's tags.

      - variants: (\`object\`) Filters on a product's variant properties.

      - type\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) Filter a product by the ID of the associated type

      - categories: (\`object\`) Filter a product by the IDs of their associated categories.

      - collection\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) Filters a product by its associated collections.

      - created\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters a product based on when it was created

      - updated\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters a product based on when it was updated

      - deleted\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters soft-deleted products based on the date they were deleted at.

    - q: (\`string\`) Search through the products' attributes, such as titles and descriptions, using this search term.

    - status: (\[ProductStatus]\(../../../../../product/types/product.ProductStatus/page.mdx) \\| \[ProductStatus]\(../../../../../product/types/product.ProductStatus/page.mdx)\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;ProductStatus | ProductStatus\[]\&#62;) The status to filter products by

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - title: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The titles to filter products by.

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - handle: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The handles to filter products by.

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - sku: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The skus to filter products by.

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The IDs to filter products by.

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - external\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) The external IDs to filter products by.

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - is\_giftcard: (\`boolean\`) Filters only or excluding gift card products

    - tags: (\`object\`) Filters on a product's tags.

      - id: (\`string\`\[]) Filter a product by the IDs of their associated tags.

    - variants: (\`object\`) Filters on a product's variant properties.

      - options: (\`object\`)

    - type\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) Filter a product by the ID of the associated type

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - categories: (\`object\`) Filter a product by the IDs of their associated categories.

      - id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;)

    - collection\_id: (\`string\` \\| \`string\`\[] \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string \\| string\[]\&#62;) Filters a product by its associated collections.

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - created\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters a product based on when it was created

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - updated\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters a product based on when it was updated

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

    - deleted\_at: (\`string\` \\| \[OperatorMap]\(../../../../../product/types/product.OperatorMap/page.mdx)\&#60;string\&#62;) Filters soft-deleted products based on the date they were deleted at.

      - $and: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $or: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;\[])

      - $eq: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62; \\| \[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $ne: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $in: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $nin: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;\[])

      - $not: (\[Query]\(../../../../../product/types/product.Query/page.mdx)\&#60;T\&#62;) API wrapper around the remoteQuery

      - $gt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $gte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lt: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $lte: (\[ExpandScalar]\(../../../../../product/types/product.ExpandScalar/page.mdx)\&#60;T\&#62;)

      - $like: (\`string\`)

      - $re: (\`string\`)

      - $ilike: (\`string\`)

      - $fulltext: (\`string\`)

      - $overlap: (\`string\`\[])

      - $contains: (\`string\`\[])

      - $contained: (\`string\`\[])

      - $exists: (\`boolean\`)

  - batch\_size: (\`string\` \\| \`number\`) The batch size to use for querying products.

## Output

- WorkflowDataProperties: (\[WorkflowDataProperties]\(../../../../../workflows/types/workflows.WorkflowDataProperties/page.mdx)\&#60;object\&#62;)

  - id: (\`string\`)

  - filename: (\`string\`)


---

The best way to deploy Medusa is through Medusa Cloud where you get autoscaling production infrastructure fine tuned for Medusa. Create an account by signing up at cloud.medusajs.com/signup.
