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

# List products

> Required scope: `partner.products.read`.



## OpenAPI

````yaml /api-reference/openapi.json get /products
openapi: 3.1.0
info:
  title: Digital Florists Partner API
  version: v1
  description: >-
    Orders, customers and products (reads plus customer creation) and outbound
    webhooks. Bearer authentication; per-shop base URL.
servers:
  - url: https://{shop_domain}/api/partner/v1
    description: Shop
    variables:
      shop_domain:
        default: your-shop.example
security:
  - bearerAuth: []
paths:
  /products:
    get:
      tags:
        - Products
      summary: List products
      description: 'Required scope: `partner.products.read`.'
      operationId: partner.v1.products.index
      parameters:
        - name: filter[product_code]
          in: query
          schema:
            type: string
        - name: filter[updated_since]
          in: query
          schema:
            type: string
            format: date-time
        - name: per_page
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
          description: Page size. Values above the maximum are clamped.
        - name: cursor
          in: query
          schema:
            type: string
      responses:
        '200':
          description: A page of products.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductList'
              examples:
                success:
                  summary: Example response
                  value:
                    data:
                      - id: 2048
                        product_code: HTB-001
                        name: Seasonal Hand-tied Bouquet
                        currency: GBP
                        variants:
                          - id: 4096
                            sku: HTB-001
                            name: Standard
                            price: 49
                            currency: GBP
                        created_at: '2026-06-01T09:00:00+01:00'
                        updated_at: '2026-06-20T14:00:00+01:00'
                    links:
                      next: >-
                        https://your-shop.example/api/partner/v1/products?cursor=eyJleGFtcGxlIjp0cnVlfQ
                      prev: null
                    meta:
                      per_page: 25
                      has_more: true
        '401':
          $ref: '#/components/responses/AuthenticationException'
          description: >-
            Authentication failed, or the token is missing, invalid, expired, or
            revoked.
        '403':
          $ref: '#/components/responses/ForbiddenError'
          description: >-
            The token lacks the required scope, or API access is not enabled for
            this shop.
        '422':
          $ref: '#/components/responses/ValidationException'
          description: The request failed validation.
        '429':
          $ref: '#/components/responses/RateLimitError'
          description: >-
            Rate limit exceeded. Retry after the period given in the Retry-After
            header.
        '500':
          $ref: '#/components/responses/ServerError'
          description: An unexpected server error occurred.
        '503':
          $ref: '#/components/responses/ServiceUnavailableError'
          description: The partner API is temporarily disabled. Retry later.
      security:
        - bearerAuth: []
components:
  schemas:
    ProductList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Product'
        links:
          type: object
          properties:
            next:
              type:
                - string
                - 'null'
            prev:
              type:
                - string
                - 'null'
          required:
            - next
            - prev
        meta:
          type: object
          properties:
            per_page:
              type: integer
              minimum: 1
              maximum: 100
            has_more:
              type: boolean
          required:
            - per_page
            - has_more
      required:
        - data
        - links
        - meta
      title: ProductList
      example:
        data:
          - id: 2048
            product_code: HTB-001
            name: Seasonal Hand-tied Bouquet
            currency: GBP
            variants:
              - id: 4096
                sku: HTB-001
                name: Standard
                price: 49
                currency: GBP
            created_at: '2026-06-01T09:00:00+01:00'
            updated_at: '2026-06-20T14:00:00+01:00'
        links:
          next: >-
            https://your-shop.example/api/partner/v1/orders?cursor=eyJleGFtcGxlIjp0cnVlfQ
          prev: null
        meta:
          per_page: 25
          has_more: true
    Product:
      type: object
      properties:
        id:
          type: integer
        product_code:
          type:
            - string
            - 'null'
          example: HTB-001
        name:
          type:
            - string
            - 'null'
          example: Seasonal Hand-tied Bouquet
        currency:
          type: string
          example: GBP
        variants:
          type: array
          items:
            $ref: '#/components/schemas/ProductVariant'
        created_at:
          type:
            - string
            - 'null'
          format: date-time
          example: '2026-06-01T09:00:00+01:00'
        updated_at:
          type:
            - string
            - 'null'
          format: date-time
          example: '2026-06-20T14:00:00+01:00'
      required:
        - id
        - product_code
        - name
        - currency
        - variants
        - created_at
        - updated_at
      title: Product
      example:
        id: 2048
        product_code: HTB-001
        name: Seasonal Hand-tied Bouquet
        currency: GBP
        variants:
          - id: 4096
            sku: HTB-001
            name: Standard
            price: 49
            currency: GBP
        created_at: '2026-06-01T09:00:00+01:00'
        updated_at: '2026-06-20T14:00:00+01:00'
    ProductVariant:
      type: object
      properties:
        id:
          type: integer
          example: 4096
        sku:
          type:
            - string
            - 'null'
          example: HTB-001
        name:
          type: string
          example: Standard
        price:
          type: number
          format: float
          description: Gross, in the shop currency.
          example: 49
        currency:
          type: string
          example: GBP
      required:
        - id
        - sku
        - name
        - price
        - currency
      title: ProductVariant
      example:
        id: 4096
        sku: HTB-001
        name: Standard
        price: 49
        currency: GBP
  responses:
    AuthenticationException:
      description: Unauthenticated
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                description: Stable machine-readable error code.
              message:
                type: string
                description: Human-readable error overview.
            required:
              - error
              - message
    ForbiddenError:
      description: >-
        The token lacks the required scope, or API access is not enabled for
        this shop.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                description: Stable machine-readable error code.
              message:
                type: string
                description: Human-readable error overview.
            required:
              - error
              - message
    ValidationException:
      description: The request failed validation.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                description: Stable machine-readable error code.
              message:
                type: string
                description: Human-readable validation overview.
              errors:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
                description: Validation messages keyed by request field.
            required:
              - error
              - message
              - errors
    RateLimitError:
      description: >-
        Rate limit exceeded. Retry after the period given in the Retry-After
        header.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                description: Stable machine-readable error code.
              message:
                type: string
                description: Human-readable error overview.
              retry_after:
                type:
                  - integer
                  - 'null'
                description: Seconds to wait before retrying.
            required:
              - error
              - message
              - retry_after
    ServerError:
      description: An unexpected server error occurred.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                description: Stable machine-readable error code.
              message:
                type: string
                description: Human-readable error overview.
            required:
              - error
              - message
    ServiceUnavailableError:
      description: The partner API is temporarily disabled. Retry later.
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
                description: Stable machine-readable error code.
              message:
                type: string
                description: Human-readable error overview.
            required:
              - error
              - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````