---
title: "Product"
url: "https://developer-qual.migros.ch/apis/public-products-1/versions/a135b3bb-5060-472d-a16b-a7fe8dff86c1/schemas/Product"
---

> Full API specification: https://developer-qual.migros.ch/apis/public-products-1/versions/a135b3bb-5060-472d-a16b-a7fe8dff86c1.md

# Product

Represents a product in the API.

## OpenAPI definition

```yaml
openapi: 3.0.1
info:
  title: Public Products
  version: 1.3.0-beta.1
servers:
  - description: URL of upstream
    url: https://api-qual.migros.ch
components:
  schemas:
    Brand:
      description: Represents the Brand information.
      properties:
        description:
          description: The long description of the brand (can contain HTML).
          type: string
        id:
          type: string
        image:
          description: (Rokka stack URL template)
          type: string
        links:
          additionalProperties:
            $ref: "#/components/schemas/Link"
          description: Collection of links indexed by string identifier.
          type: object
        name:
          type: string
        parent_brand:
          $ref: "#/components/schemas/PartialBrand"
        slug:
          description: Unique user-friendly ID.
          type: string
        sub_brand:
          $ref: "#/components/schemas/PartialBrand"
      required:
        - id
        - name
        - slug
      type: object
    Category:
      description: Represents the category basic information.
      properties:
        abstract:
          description: A short, plain text description, e.g. suitable for the page meta
            element.
          type: string
        code:
          description: ID of the category.
          type: string
        headline:
          description: The caption to the description.
          type: string
        image:
          description: Image of the category.
          type: string
        keywords:
          description: Keywords, e.g. suitable for the page meta element.
          items:
            type: string
          type: array
        level:
          type: integer
        name:
          type: string
        parent_code:
          description: Parent category ID.
          type: string
        slug:
          description: Unique user-friendly ID.
          type: string
        title:
          description: The title, e.g. suitable for the page title element.
          type: string
        visible:
          type: boolean
      required:
        - code
        - name
        - slug
      type: object
    EnergyEfficiency:
      description: Represents information about energy efficiency in the API.
      properties:
        arrow:
          description: (Rokka stack URL template)
          type: string
        arrow_alternative:
          description: (Rokka stack URL template)
          type: string
        category_code:
          description: Energy efficiency label which contains details about the energy
            efficiency of the product.
          type: string
        class:
          $ref: "#/components/schemas/EnergyEfficiencyClass"
        image:
          description: (Rokka stack URL template)
          type: string
      required:
        - class
      type: object
    Link:
      properties:
        canonical:
          description: Canonical link to the product on the third-party website.
          type: string
        url:
          description: URL to a third-party desktop page of the product.
          type: string
      type: object
    ProductPrice:
      description: Price. It is complicated.
      properties:
        base:
          $ref: "#/components/schemas/PriceQuantityUnit"
        currency:
          type: string
        discount:
          $ref: "#/components/schemas/Discount"
        discount_hint:
          type: string
        estimated_piece_original_price:
          description: The estimated original price of a piece, without discount.
          format: float
          type: number
        estimated_piece_price:
          description: >-
            The estimated price of a piece.


            Some products that are usually sold by weight (fruit, vegetables,
            meat). This value is the estimated price based on the average weight
            of one piece.
          format: float
          type: number
        estimated_piece_weight:
          description: |-
            The estimated weight of a piece (in grams).

            The average weight that the estimated piece price is calculated on.
          format: float
          type: number
        item:
          $ref: "#/components/schemas/PriceQuantityUnit"
        no_price_hint:
          description: The price hint if no price is set.
          type: string
        source:
          type: string
        valid_from:
          format: date-time
          type: string
        valid_to:
          format: date-time
          type: string
      required:
        - valid_from
        - valid_to
      type: object
    ItemRatings:
      description: Represents the ratings of an item, e.g. product.
      properties:
        average_all:
          format: float
          type: number
        count_all:
          description: Average rating.
          type: integer
      required:
        - count_all
        - average_all
      type: object
    PartialBrand:
      description: Represents the sub brand and parent brand information.
      properties:
        code:
          type: string
        name:
          type: string
      type: object
    EnergyEfficiencyClass:
      properties:
        text:
          description: The hexadecimal color code of the energy efficiency class to create
            your own arrows.
          type: string
      required:
        - text
      type: object
    PriceQuantityUnit:
      description: Represents the current price and quantity (within a region).
      properties:
        display_quantity:
          description: The quantity and unit to display in the frontend.
          type: string
        original_price:
          description: The original price if price is the discounted value.
          format: float
          type: number
        price:
          description: The price.
          format: float
          type: number
        quantity:
          description: The quantity the price is based on.
          format: float
          type: number
        unit:
          description: The price unit.
          type: string
        varying_quantity:
          description: Whether the quantity is flexible or fixed.
          type: boolean
      type: object
    Discount:
      description: Represents the Discount information.
      properties:
        additional_description:
          description: Description text for a discount, e.g. "Zucht aus Dänemark"
          type: string
        additional_text:
          description: Additional information about the discount.
          example: in Selbstbedienung und Bedienung
          type: string
        advertisement_type_id:
          description: >-
            ID of how to advertise this discount.


            An example usage is to distinguish if the price or the percentage
            should be promoted more.
          type: string
        badge:
          $ref: "#/components/schemas/Badge"
        boss_number:
          description: The BoSS number.
          type: string
        campaign_ids:
          description: List of campaign ID's this discount is in. These campaign ID's are
            delivered by the M-Promo system, used for promotions.
          items:
            type: string
          type: array
        channel:
          type: string
        collective_discount:
          description: Collective discount (Sammelaktion).
          type: boolean
        conditions:
          $ref: "#/components/schemas/DiscountConditions"
        cooperative:
          description: Cooperative which created this discount. "Erfassergruppe"
          type: string
        cumulus_points:
          $ref: "#/components/schemas/DiscountCumulusPoints"
        description:
          description: May contain HTML tags.
          type: string
        disclaimer:
          type: string
        discount_amount:
          type: string
        discount_events:
          description: List of events this discount is in. These events are created in the
            M-Promo system, used for promotions.
          items:
            $ref: "#/components/schemas/DiscountEvent"
          type: array
        discount_hint:
          description: May contain HTML tags.
          type: string
        discount_regions:
          description: List of regions in which the discount is valid in.
          items:
            type: string
          type: array
        discount_role_id:
          description: Discount role id.
          type: string
        discount_role_label:
          description: Discount role label.
          type: string
        discount_type:
          description: 'Discount type: "neuheit" or "aktion".'
          enum:
            - neuheit
            - aktion
          type: string
        discount_type_id:
          description: Discount type id.
          type: string
        discount_type_label:
          description: Label for discount type id.
          type: string
        end_date:
          format: date-time
          type: string
        example_text:
          description: Information text about an example product of a discount for
            multiple products.
          example: Wildfang aus dem Nordostatlantik
          type: string
        example_unit:
          description: >-
            Information about the unit of the package of an example product of a
            discount for multiple products.


            The 'unit' (see field above) is used for discounts for one specific
            product. The 'exampleUnit' is used for discounts for multiple
            products. Only one of the two fields contains a value.
          example: 16 Stück 216 g
          type: string
        high_performer:
          description: High performing discount.
          type: boolean
        id:
          description: Pex discounts do not have an id, so this field has to be optional.
          type: string
        image:
          description: Image (Rokka stack URL template).
          type: string
        image_transparent:
          description: Image with transparent background (Rokka stack URL template).
          type: string
        instead_of:
          type: string
        location_planning_type:
          description: Location planning type. "Planungsart" on M-Promo. Usually either
            "national" or "regional" or "lokal".
          example: regional
          type: string
        logo:
          description: (Rokka stack URL template).
          type: string
        newsletter_image:
          type: string
        organisation:
          description: smvm, fm...
          type: string
        original_price:
          description: The original price.
          format: float
          type: number
        package_description:
          description: Information about the package.
          example: Im Duo-Pack
          type: string
        price:
          description: The discounted price.
          format: float
          type: number
        profit:
          type: integer
        publication_date:
          description: Publication date of the discount.
          format: date-time
          type: string
        reduction:
          $ref: "#/components/schemas/DiscountReduction"
        reduction_type_id:
          description: |-
            The reduction type id of the discount.


             - 01: Relativer Rabatt
             - 02: Absoluter Rabatt
             - 03: X für Y
             - 04: Absolute CUMULUS Punkte
             - 05: X-Fach Punkte
             - 06: Rabattpreis = CHF
             - 07: HIT
             - 08 Preisabschlag
          type: string
        reference_product_id:
          description: ID of the reference product of this discount.
          type: string
        region:
          description: The region (Migros Genossenschaft).
          type: string
        secondary_image:
          description: (Rokka stack URL template).
          type: string
        secondary_logo:
          description: (Rokka stack URL template).
          type: string
        source:
          type: string
        special_advertisement:
          description: Whether or not it's a "Zusatzauslobung".
          type: boolean
        start_date:
          format: date-time
          type: string
        tags:
          description: Tags for flagging certain discounts.
          items:
            type: string
          type: array
        unit:
          description: Information about the unit of the sold package.
          example: Mödeli, 4 x 250 g
          type: string
        visibility:
          description: Whether the discount visibility is overridden, can be 'blacklist'
            or 'whitelist'.
          type: string
      required:
        - id
      type: object
    Badge:
      allOf:
        - $ref: "#/components/schemas/BadgeSignet"
        - properties:
            description:
              type: string
            signet:
              $ref: "#/components/schemas/BadgeSignet"
          type: object
      description: A badge image and its properties.
      type: object
    DiscountConditions:
      properties:
        minimum_pieces:
          $ref: "#/components/schemas/DiscountConditionsMinimumPieces"
        minimum_purchase_price:
          example: 10
          format: float
          type: number
      type: object
    DiscountCumulusPoints:
      properties:
        relative:
          type: boolean
        value:
          example: 20
          type: integer
      required:
        - value
        - relative
      type: object
    DiscountEvent:
      description: >-
        Represents a discount event on a discount. These events are created in
        the M-Promo system, used for promotions.


        The product_ids are only available on stand alone discount events, if
        there are any specified.


        The discount_id and campaign_id are only set on stand alone discount
        events. When it is nested inside a discount, refer to the containing
        object to find the id and campaign ids.
      properties:
        advertising_material_id:
          description: The id of the advertising material. "Werbemittel".
          type: string
        advertising_material_type_id:
          description: The id of the advertising material type. "Werbemittelart".
          type: string
        campaign_ids:
          description: Campaigns of the discount that contains this event.
          items:
            type: string
          type: array
        discount_id:
          description: The id of the discount this event is part of.
          type: string
        end_date:
          description: When the event ends.
          format: date-time
          type: string
        event_id:
          description: The id of the event.
          type: string
        product_ids:
          description: List of product ids this event applies to.
          items:
            type: string
          type: array
        publication_date:
          description: >-
            When the event was published online.


            The API does not output events when the publication date is in the
            future.
          format: date-time
          type: string
        start_date:
          description: When the event starts.
          format: date-time
          type: string
      required:
        - event_id
        - advertising_material_type_id
        - advertising_material_id
        - start_date
        - end_date
        - publication_date
      type: object
    DiscountReduction:
      properties:
        amount:
          example: 32.5
          format: float
          type: number
        relative:
          type: boolean
        suffix:
          example: günstiger
          type: string
        unit:
          example: "%"
          type: string
      required:
        - amount
        - relative
      type: object
    BadgeSignet:
      description: A badge signet and its properties.
      properties:
        hex_color:
          description: The hexadecimal color code for this badge.
          type: string
        stack:
          description: Image URL with a placeholder for a Rokka {stack}.
          type: string
        vector:
          description: Vector image.
          type: string
      type: object
    DiscountConditionsMinimumPieces:
      properties:
        prefix:
          example: ab
          type: string
        value:
          example: 2
          type: integer
      required:
        - value
        - prefix
      type: object
    Product:
      description: Represents a product in the API.
      properties:
        boss_number:
          description: Product 'boss number'. It is represented as string because the
            number can have leading zeros.
          type: string
        brand:
          $ref: "#/components/schemas/Brand"
        categories:
          description: Hierarchy/breadcrumb of main category. The first element is the
            leaf category and the last one the root.
          items:
            $ref: "#/components/schemas/Category"
          type: array
        energy_efficiency:
          $ref: "#/components/schemas/EnergyEfficiency"
        id:
          type: string
        image:
          description: Main product image (Rokka stack URL template).
          type: string
        image_transparent:
          description: Main product image, transparent (Rokka stack URL template).
          type: string
        links:
          additionalProperties:
            $ref: "#/components/schemas/Link"
          type: object
        name:
          type: string
        price:
          $ref: "#/components/schemas/ProductPrice"
        ratings:
          $ref: "#/components/schemas/ItemRatings"
        slug:
          description: Unique user-friendly ID.
          type: string
      required:
        - id
        - name
        - boss_number
        - slug
```
