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

# List products

> Returns a list of products.



## OpenAPI

````yaml openapi-customer.json GET /products
openapi: 3.1.0
info:
  version: 8.15.0
  title: '@fastify/swagger'
servers:
  - url: https://api.juo.io/customer/v1
security:
  - DelegatedToken: []
  - AccessToken: []
paths:
  /products:
    get:
      tags:
        - api.customer.v1
      description: Lists products
      operationId: getProducts
      parameters:
        - schema:
            type: string
          in: query
          name: query
          required: false
          description: >-
            The search query string. See [search query
            language](/docs/api-reference/customer/introduction#search-query-language)
            for information how to build the search query. Supported fields are
            listed
            [here](/docs/api-reference/customer/products/resource#search-query-fields).
        - schema:
            minimum: 1
            maximum: 100
            default: 20
            type: integer
          in: query
          name: limit
          required: false
          description: >-
            See
            [pagination](/docs/api-reference/customer/introduction#pagination)
            for more details on how to paginate the results.
        - schema:
            minLength: 1
            type: string
          in: query
          name: after
          required: false
          description: >-
            See
            [pagination](/docs/api-reference/customer/introduction#pagination)
            for more details on how to paginate the results.
        - schema:
            minLength: 1
            type: string
          in: query
          name: before
          required: false
          description: >-
            See
            [pagination](/docs/api-reference/customer/introduction#pagination)
            for more details on how to paginate the results.
        - schema:
            default: id:asc
            type: string
          in: query
          name: sort
          required: false
          description: >-
            See [sorting](/docs/api-reference/customer/introduction#sorting) for
            more details on how to sort the results.
        - $ref: '#/components/parameters/TenantHeader'
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  resource:
                    type: string
                    enum:
                      - list
                  hasNextPage:
                    type: boolean
                  hasPrevPage:
                    type: boolean
                  endCursor:
                    type:
                      - 'null'
                      - string
                  startCursor:
                    type:
                      - 'null'
                      - string
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
                required:
                  - resource
                  - hasNextPage
                  - hasPrevPage
                  - endCursor
                  - startCursor
                  - data
components:
  parameters:
    TenantHeader:
      name: X-Tenant-ID
      x-speakeasy-name-override: tenant
      x-speakeasy-globals-hidden: true
      in: header
      schema:
        type: string
      required: true
      description: >-
        Unique identifier of the tenant in the system (usually a store
        identifier)
  schemas:
    Product:
      type: object
      properties:
        id:
          minLength: 1
          type: string
        title:
          minLength: 1
          type: string
        image:
          oneOf:
            - type: 'null'
            - type: object
              properties:
                id:
                  minLength: 1
                  type: string
                url:
                  format: uri
                  type: string
                altText:
                  minLength: 1
                  type:
                    - 'null'
                    - string
              required:
                - id
                - url
                - altText
        variants:
          type: array
          items:
            $ref: '#/components/schemas/ProductVariant'
        collections:
          type: array
          items:
            type: object
            properties:
              handle:
                minLength: 1
                type: string
            required:
              - handle
      required:
        - id
        - title
        - image
        - variants
        - collections
      title: Product
    ProductVariant:
      type: object
      properties:
        id:
          minLength: 1
          type: string
        title:
          minLength: 1
          type: string
        image:
          oneOf:
            - type: 'null'
            - type: object
              properties:
                id:
                  minLength: 1
                  type: string
                url:
                  format: uri
                  type: string
                altText:
                  minLength: 1
                  type:
                    - 'null'
                    - string
              required:
                - id
                - url
                - altText
        price:
          type: number
        purchaseOptions:
          type: array
          items:
            type: object
            properties:
              name:
                minLength: 1
                type: string
              price:
                type: number
              interval:
                type: object
                properties:
                  intervalCount:
                    type: number
                  interval:
                    type: string
                    enum:
                      - DAY
                      - MONTH
                      - WEEK
                      - YEAR
                required:
                  - intervalCount
                  - interval
            required:
              - name
              - price
              - interval
      required:
        - id
        - title
        - image
        - price
        - purchaseOptions
      title: ProductVariant
  securitySchemes:
    DelegatedToken:
      type: apiKey
      name: X-Delegated-Token
      in: header
    AccessToken:
      type: http
      scheme: bearer

````