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

# Update product (Admin only)



## OpenAPI

````yaml /openapi/product-service-inventory.json patch /v1/products/{id}
openapi: 3.0.0
info:
  title: Asiko Product Service — Inventory API
  description: >-
    Admin and Super Admin only endpoints: create/update/delete products,
    categories, brands
  version: '1.0'
  contact: {}
servers:
  - url: https://asikodevapi.candourit.io
    description: Production (via api-gateway)
  - url: http://localhost:3000
    description: Local development (via api-gateway)
security: []
tags:
  - name: inventory
    description: ''
paths:
  /v1/products/{id}:
    patch:
      tags:
        - inventory
      summary: Update product (Admin only)
      operationId: InventoryProductsController_update
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProductBody'
      responses:
        '200':
          description: ''
      security:
        - bearer: []
components:
  schemas:
    UpdateProductBody:
      type: object
      properties:
        name:
          type: string
          example: Premium Basmati Rice 5kg
        slug:
          type: string
          example: premium-basmati-rice-5kg
        description:
          type: string
          example: Updated description with more detail on sourcing and preparation.
        retailPrice:
          type: number
          example: 22.99
        tradePrice:
          type: object
          example: 18.99
          nullable: true
        currency:
          type: string
          example: NGN
        sku:
          type: string
          example: RICE-BAS-5KG
        stockLevel:
          type: number
          example: 120
        categoryId:
          type: string
          example: null
          nullable: true
          description: >-
            Must be the id of a category already created via POST /categories,
            or null/omitted.
        brandId:
          type: string
          example: null
          nullable: true
          description: >-
            Must be the id of a brand already created via POST /brands, or
            null/omitted.
        packSize:
          type: string
          example: 5kg
          enum:
            - 500g
            - 1kg
            - 2kg
            - 5kg
            - 10kg
            - 25kg and above
          nullable: true
        images:
          example:
            - https://cdn.asikofoods.com/products/basmati-rice-1.jpg
          type: array
          items:
            type: string
        tags:
          example:
            - rice
            - staple
            - bulk
          type: array
          items:
            type: string
        dietaryTags:
          type: array
          example:
            - GLUTEN_FREE
            - VEGAN
          items:
            type: string
            enum:
              - VEGAN
              - HALAL
              - GLUTEN_FREE
              - ORGANIC
        salePrice:
          type: object
          example: 19.99
          nullable: true
        saleStartsAt:
          type: object
          example: '2026-08-01T00:00:00.000Z'
          nullable: true
        saleEndsAt:
          type: object
          example: '2026-08-15T23:59:59.000Z'
          nullable: true
        isActive:
          type: boolean
          example: true
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````