> ## Documentation Index
> Fetch the complete documentation index at: https://developer.clopos.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List products

> Retrieve all products with optional filtering and pagination



## OpenAPI

````yaml /api-reference/v2/openapi.json get /products
openapi: 3.1.0
info:
  title: Clopos Open API v2
  description: >-
    The **Clopos Open API v2** provides secure and unified access to the Clopos
    ecosystem, enabling seamless integration of POS, ordering, payments, and
    restaurant management services.
  contact:
    email: dev@clopos.com
  version: 2.0.0
  license:
    name: ''
servers:
  - url: https://integrations.clopos.com/open-api/v2
    description: '**Base Url**'
security:
  - xToken: []
tags:
  - name: Authentication
  - name: Venues
  - name: Users
  - name: Customers
  - name: Menu
  - name: Stations
  - name: Products
  - name: Price Lists
  - name: Sales
  - name: Orders
  - name: Receipts
paths:
  /products:
    get:
      tags:
        - Products
      summary: List products
      description: Retrieve all products with optional filtering and pagination
      parameters:
        - name: page
          in: query
          description: Page number for pagination (starts at 1)
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: limit
          in: query
          description: Maximum number of products to return (1-100)
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - name: filters
          in: query
          description: >-
            JSON-stringified filter array. Each filter is an array of [field,
            value] or [field, operator, value]. Example: [["type", "PRODUCT"]]
          schema:
            type: string
            example: '[["type","PRODUCT"]]'
        - name: selects
          in: query
          description: >-
            Comma-separated list of fields to include in the response. The
            fields id, name, and type are always included.
          schema:
            type: string
            example: id,name,type,price,image
      responses:
        '200':
          description: Products retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsResponse'
        '400':
          description: Invalid parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ProductsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Product'
        pagination:
          $ref: '#/components/schemas/Pagination'
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
        message:
          type: string
        details:
          type: object
    Product:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - GOODS
            - DISH
            - TIMER
            - PREPARATION
            - INGREDIENT
            - MODIFICATION
        name:
          type: string
        full_name:
          type: string
        status:
          type: integer
        price:
          type: number
        cost_price:
          type: number
        has_modifications:
          type: boolean
        modifications:
          type: array
          items:
            $ref: '#/components/schemas/Modification'
        modificator_groups:
          type: array
          items:
            $ref: '#/components/schemas/ModificatorGroup'
        recipe:
          type: array
          items:
            $ref: '#/components/schemas/RecipeItem'
        packages:
          type: array
          items:
            $ref: '#/components/schemas/Package'
        setting:
          $ref: '#/components/schemas/TimerSetting'
          nullable: true
        taxes:
          type: array
          items:
            $ref: '#/components/schemas/Tax'
        tags:
          type: array
          items:
            type: object
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    Pagination:
      type: object
      properties:
        page:
          type: integer
        per_page:
          type: integer
        total:
          type: integer
        total_pages:
          type: integer
    Modification:
      type: object
      properties:
        id:
          type: integer
        parent_id:
          type: integer
        type:
          type: string
          enum:
            - MODIFICATION
        name:
          type: string
        price:
          type: number
        cost_price:
          type: number
        barcode:
          type: string
          nullable: true
        full_name:
          type: string
        status:
          type: integer
    ModificatorGroup:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        type:
          type: integer
        min_select:
          type: integer
        max_select:
          type: integer
        modificators:
          type: array
          items:
            $ref: '#/components/schemas/Modificator'
    RecipeItem:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - PREPARATION
            - INGREDIENT
            - DISH
        name:
          type: string
        cost_price:
          type: number
        pivot:
          type: object
          properties:
            gross:
              type: string
    Package:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        equal:
          type: integer
    TimerSetting:
      type: object
      properties:
        interval:
          type: integer
        prices:
          type: array
          items:
            type: object
            properties:
              price:
                type: number
              from:
                type: integer
    Tax:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        rate:
          type: number
    Modificator:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        price:
          type: number
        cost_price:
          type: number
        max_count:
          type: integer
        status:
          type: boolean
        ingredient:
          $ref: '#/components/schemas/Product'
          nullable: true
  securitySchemes:
    xToken:
      type: apiKey
      in: header
      name: x-token
      description: JWT access token obtained from /v2/auth endpoint

````