---
url: "https://developer.migros.ch/apis/prices-discounts-1/versions/f2d88540-a3d1-4e7d-9eb7-5d3dac51c93d"
---

OpenAPI specification document.

```json
{"components":{"parameters":{"discountId":{"description":"The ID of the discount.","in":"path","name":"discountId","required":true,"schema":{"example":"2034284","type":"string"}},"discount_advertisement_type":{"description":"The `advertisement_type` parameter allows to select discount via their advertisementTypeId.\n  * 1:  % klein\n  * 2:  % gross\n  * 3:  Abs. Rabatt\n  * 4:  Vitamin Franken\n  * 5:  HIT\n  * 6:  1+1\n  * 7:  2+1\n  * 8:  Vitamintasche\n  * 9:  Aktuell\n  * 10: Tiefpreis","explode":true,"in":"query","name":"advertisement_type","schema":{"items":{"enum":["1","2","3","4","5","6","7","8","9","10"],"example":"3","type":"string"},"type":"array"}},"discount_boss_bb":{"description":"The `boss_bb` allows to select discounts for specific bossBB number. bossBB is the area (bereich) code prefix for Boss number.","explode":true,"in":"query","name":"boss_bb","schema":{"items":{"example":"02","type":"string"},"type":"array"},"style":"form"},"discount_boss_bw":{"description":"The `boss_bw` allows to select discounts for specific bossBW number. bossBW is the world code prefix for Boss number.","explode":true,"in":"query","name":"boss_bw","schema":{"items":{"example":"04","type":"string"},"type":"array"},"style":"form"},"discount_bundles_only":{"description":"If set to true: return only the designated bundle discount (typically the national discount).\n\nAttention: Setting bundles_only=true will suppress all bundles/discounts that do not have designated discount data for the bundle as whole.","in":"query","name":"bundles_only","schema":{"type":"boolean"}},"discount_campaign_id":{"description":"The `campaign_id`parameter  allows to select discounts belonging to a specific campaign.","in":"query","name":"campaign_id","schema":{"type":"string"}},"discount_distribution_channel":{"description":"The `distribution_channel`parameters allows to select discount belonging to a specific distributionChannel.id.\n * SM/VM: Alle Filialen\n * GASTRO: Gastronomie\n * MP/VOI: MP/VOI\n * MR: Migros Restaurant\n * T_SM/VM: SM/VM\n * TA: Take Away","explode":true,"in":"query","name":"distribution_channel","schema":{"items":{"enum":["SM/VM","GASTRO","MP/VOI","MR","T_SM/VM","TA"],"type":"string"},"type":"array"}},"discount_event_id":{"description":"The `event_id` parameter allows to select discounts belonging to a specific event. (Note: Combining this parameter with `event_tactic` or `event_tactic_type` is technically possible but probably useless)","in":"query","name":"event_id","schema":{"example":"609237","type":"string"}},"discount_event_tactic":{"description":"The `event_tactic` parameter allows to select discounts based on their event tactic. Since an event tactic is a subcategory of an event tactic type, they should be used together. For instance, an event tactic with ID '2' can be a subcategory of multiple event tactic types. Only by combining both event_tactic_type and event_tactic, you get the complete information about tactic.\n(Note: Combining this parameter with `event_id` is technically possible but probably useless)","in":"query","name":"event_tactic","schema":{"example":"52","type":"string"}},"discount_event_tactic_type":{"description":"The `event_tactic_type` parameter allows to select discounts based on their event tactic-type. Since an event tactic is a subcategory of an event tactic type, they should be used together. For instance, an event tactic with ID '2' can be a subcategory of multiple event tactic types. Only by combining both event_tactic_type and event_tactic, you get the complete information about tactic.\n(Note: Combining this parameter with `event_id` is technically possible but probably useless)","in":"query","name":"event_tactic_type","schema":{"example":"900","type":"string"}},"discount_id":{"description":"The `id` parameter allows to query one or more discounts via their ID (actually the Bundle ID).","explode":true,"in":"query","name":"id","schema":{"items":{"type":"string"},"type":"array"},"style":"form"},"discount_reduction":{"description":"The `reduction` parameter allows to select discounts by their reductionTypeId.\n  * 01: Relativer Rabatt\n  * 02: Absoluter Rabatt\n  * (03: X für Y obsolet, gibt es nicht mehr)\n  * 04: Absolute CUMULUS Punkte\n  * 05: X-Fach Punkte\n  * 06: Rabattpreis = CHF\n  * 07: HIT\n  * 08: Preisabschlag","explode":true,"in":"query","name":"reduction","schema":{"items":{"enum":["01","02","04","05","06","07","08"],"example":"07","type":"string"},"type":"array"}},"discount_region":{"description":"The `region` parameter filters for one or more specific regions.","explode":true,"in":"query","name":"region","required":false,"schema":{"items":{"enum":["national","gmaa","gmzh","gmos","gmvd","gmge","gmnf","gmbs","gmlu","gmti","gmvs"],"type":"string"},"type":"array"},"style":"form"},"discount_role":{"description":"The `role` parameter allows to select discounts by by one or several roleId(s).\n  * 1000000005: Neuheitenangebot\n  * 1000000007: Display\n  * 1000000008: Sortimentskompetenz (SORT)\n  * 1000000009: FM Angebot\n  * 1000000011: GM Angebot\n  * 1000000014: Liquidation\n  * 2000000001: M: High-Performer\n  * 2000000002: M: Wochenangebot Typ I\n  * 2000000003: M: Wochenangebot Typ II\n  * 2000000005: M: Wochenend-Hits SM/VM","explode":true,"in":"query","name":"role","schema":{"items":{"enum":["1000000005","1000000007","1000000008","1000000009","1000000011","1000000014","2000000001","2000000002","2000000003","2000000005"],"type":"string"},"type":"array"},"style":"form"},"discount_search":{"description":"Search description field of discount for all search terms provided.\nOnly letters and digits are considered while searching and search terms with less than three characters are ignored. This filter is supposed to be used by humans, not by machines.","in":"query","name":"search","schema":{"example":"compote pommes","type":"string"}},"discount_state":{"description":"The `state` parameter allows to only select Discounts in a specific state, whether it is in drafting (not published yet), published (but not valid yet), currently valid or terminated (not valid anymore). This state is calculated based on the publication, valid-from and valid-to dates.","explode":true,"in":"query","name":"state","required":false,"schema":{"items":{"enum":["draft","published","current","terminated"],"example":"current","type":"string"},"type":"array"}},"discount_state_public":{"description":"The `state` parameter allows to only select Discounts in the states 'draft', 'published' or 'current', where 'draft' only returns Discounts max. 5 days away from publishing.","explode":true,"in":"query","name":"state","required":false,"schema":{"items":{"enum":["draft","published","current"],"example":"current","type":"string"},"type":"array"}},"discount_type":{"description":"The `type` parameter allows to select discounts via their typeId.\n  * 001: SA Sonderangebot\n  * 002: SE Sellout\n  * 003: LIQU Liquidationsangebot\n  * 004: CAKT Cumulus-Angebot (Fix oder xFach Punkte)\n  * 005: GRAB Angebot CHF beim Kauf ab X Stueck\"\n  * (006: XFY X für Y Angebot mit gleichem VP\" obsolet, gibt es nicht mehr)\n  * 007: SORT Sortimentsangebot ohne Preisreduktion\"","explode":true,"in":"query","name":"type","schema":{"items":{"enum":["001","002","003","004","005","007"],"example":"004","type":"string"},"type":"array"}},"lang":{"description":"Override the `Accept-Language` header","in":"query","name":"lang","schema":{"enum":["de","fr","it"],"type":"string"}},"productId":{"description":"The ID of the product.","in":"path","name":"productId","required":true,"schema":{"example":"204002600400","type":"string"}},"region":{"description":"The `region` parameter allows to only select either a Genossenschaft of nation-wide data.","in":"query","name":"region","required":false,"schema":{"enum":["gmaa","gmzh","gmos","gmvd","gmge","gmnf","gmbs","gmlu","gmti","gmvs","national"],"example":"national","type":"string"}},"regions":{"description":"The `regions` parameter filters for one or more specific regions. When set, only data these regions will be returned. If the price of a requested region is not available, national price will be used as a fallback.\n\nBoth, the \"explode\"ed and the un\"explode\"ed variants are supported, so `?regions=gmaa,national` and `?regions=gmaa&regions=national` are equivalent.","in":"query","name":"regions","required":false,"schema":{"items":{"enum":["gmaa","gmzh","gmos","gmvd","gmge","gmnf","gmbs","gmlu","gmti","gmvs","national"],"type":"string"},"type":"array"},"style":"form"},"storeId":{"description":"The ID of the store.","in":"path","name":"storeId","required":true,"schema":{"example":"0034300","type":"string"}}},"schemas":{"Discount":{"description":"Represents discount data gathered from different sources.","properties":{"advertisementTypeId":{"description":"AdvertisementTypeID describes how the discount should be visualized","example":"2","type":"string"},"amount":{"description":"Amount is relative or absolute reduction amount to the price (e.g. 20%, 4.0)","example":"30%","type":"string"},"articleHint":{"description":"ArticleHint is the additional information about the Discount and related Products","example":"Angebot gilt nur vom 24.1. bis 31.8.2023, solange Vorrat.","type":"string"},"badge":{"description":"Badge for the Discount (e.g. 40%, 30% in PNG and SVG format)","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"bossBB":{"description":"bossBB is the area (bereich) code prefix for Boss number","example":"02","type":"string"},"bossBW":{"description":"bossBW is the world code prefix for Boss number","example":"04","type":"string"},"campaigns":{"description":"Campaigns holds campaign data for a discount","items":{"properties":{"endDate":{"description":"EndDate is the date when this campaign expires","example":"2026-07-22","format":"date","type":"string"},"id":{"description":"id of a campaign","example":"6933","type":"string"},"startDate":{"description":"StartDate is the date when this campaign becomes valid","example":"2026-07-16","format":"date","type":"string"}},"type":"object"},"type":"array"},"cumulusPoints":{"description":"CumulusPoints one receives with this Discount","properties":{"isRelative":{"description":"Relative describes if Cumulus Points value is relative or absolute (e.g. 20X points or 20 points)","example":true,"type":"boolean"},"value":{"description":"Value for Cumulus Points (e.g. 20)","example":20,"type":"integer"}},"type":"object"},"description":{"description":"Description is a short text about the Discount (e.g. Alle Trauben im Offenverkauf)","example":"Duftkerze im Glas","type":"string"},"disclaimer":{"description":"Disclaimer contains text about exceptions, validity and special conditions","example":"","type":"string"},"discountId":{"description":"ID is the Discount identifier","example":"1042893","type":"string"},"distributionChannel":{"description":"DistributionChannel describes by which retailer this Discount is accepted (e.g. SM/VM for supermarkets, MR for Migros Restaurant, ...)","properties":{"id":{"description":"ID is a technical ID of the DistributionChannel. See translateDistribution below for values.","example":"","type":"string"},"name":{"description":"Name contains the translated human-readable name","example":"","type":"string"}},"type":"object"},"events":{"$ref":"#/components/schemas/events"},"hint":{"description":"Hint is an example of a reduction in text form","example":"","type":"string"},"image":{"description":"Image is the main image referring to the Discount in JPG format","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"insteadOf":{"description":"InsteadOf is used for specific use-cases, where we need another word for \"statt\"","example":"","type":"string"},"isCollective":{"description":"Collective describes whether this Discount is applied to more than one product (e.g. alle Fondues)","example":true,"type":"boolean"},"isHighPerformer":{"description":"HighPerformer describes whether this Discount has high importance due to high sales volume","example":true,"type":"boolean"},"lastImportedDate":{"description":"LastImported is a timestamp of last processing of data","example":"2024-05-15T04:17:15.000973132+02:00","format":"date-time","type":"string"},"logo":{"description":"Logo image related to this Discount (e.g. logo for \"Migros Bio\" or for \"UTZ Certified\")","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"minimumPieces":{"description":"MinimumPieces describes how many pieces must be bought for the Discount to apply","properties":{"prefix":{"description":"Prefix is a text to be displayed before the Value","example":"ab","type":"string"},"value":{"description":"Value is the amount of pieces","example":2,"type":"integer"}},"type":"object"},"originalPrice":{"description":"OriginalPrice is the non-discounted price. This is based on discount reference product.","example":11,"type":"number"},"price":{"description":"Price is the discounted price. This is based on discount reference product price.","example":5.5,"type":"number"},"priority":{"description":"Priority tells us which Discount should be used if there are multiple Discounts active at the same time for the same product. The lower the number, the higher the priority.","example":6,"type":"integer"},"publicationDate":{"description":"PublicationDate describes when this Discount is allowed to be published to customers","example":"2022-12-25T00:00:00+01:00","format":"date-time","type":"string"},"reduction":{"description":"Reduction contains information about the price reduction","properties":{"amount":{"description":"Can either be an absolute price in CHF or a relative percentage by which the product's price will be reduced.","example":1.22,"type":"number"},"relative":{"description":"Defines if the Amount is a relative (percentage) or absolute (CHF) value.","example":false,"type":"boolean"},"suffix":{"description":"The translations for a string after the price. E.g. 10 % günstiger/de réduction/di riduzione.","example":"günstiger","type":"string"},"unit":{"description":"Unit of Amount, either CHF or %","example":"CHF","type":"string"}},"required":["suffix"],"type":"object"},"reductionTypeId":{"description":"ReductionTypeID tells us whether it's a 01=relativ, 02=absolut, ... reduction","example":"05","type":"string"},"referenceProductId":{"description":"ReferenceProductID is the main Product which this Discount refers to (\"Hauptwerbeartikel\")","example":"243140560000","type":"string"},"region":{"description":"Region defines the regional context (e.g. national, gmzh, gmaa, gmlu, ...)","example":"national","type":"string"},"roleId":{"description":"RoleID holds further information regarding the \"type\" of a Discount (e.g. high-performer, weekend-promotion, liquidation)","example":"1000000008","type":"string"},"roleLabel":{"description":"RoleLabel is a descriptive string for the value in RoleID","example":"Sortimentskompetenz (SORT)","type":"string"},"secondaryImage":{"description":"SecondaryImage is the secondary image referring to the Discount","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"secondaryLogo":{"description":"SecondaryLogo image related to this Discount (e.g. logo for \"BIO SUISSE\" etc.)","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"signet":{"description":"Signet is the image related to Cumulus Discount (e.g. image for \"20x Cumulus\")","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"transparent":{"description":"Transparent is the main image referring to the Discount in PNG format","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"type":{"description":"Type describes which type of discount we got (e.g. aktion, neuheit, ...)","example":"aktion","type":"string"},"typeId":{"description":"TypeID is the discount type identifier (e.g. 001, 005, ...)","example":"","type":"string"},"typeLabel":{"description":"TypeLabel is the name for discount TypeID","example":"NUG Nimm X Artikel","type":"string"},"validFromDate":{"description":"ValidFrom is the date when this Discount becomes valid/active","example":"2024-05-07T00:00:00+02:00","format":"date-time","type":"string"},"validToDate":{"description":"ValidTo is the date till this Discount is valid/active","example":"2024-05-13T23:59:59+02:00","format":"date-time","type":"string"}},"required":["discountId"],"type":"object"},"MigrolinoDiscount":{"description":"Discount contains the discount if one is linked to the product","properties":{"basePrice":{"description":"BasePrice is the discounted basePrice (in CHF)","example":0.35,"type":"number"},"eventType":{"description":"EventType can work as a subcategory of type","example":"21","type":"string"},"id":{"description":"ID of the discount","example":"100000002024","type":"string"},"multibuyOriginalPrice":{"description":"In case the discount only applies for multiple products (MultiBuy(e.g. 4 for 3) or Deal) this field will contain the original price before the discount reduction is applied (in CHF)","example":26.1,"type":"number"},"multibuyPrice":{"description":"In case the discount only applies for multiple products (MultiBuy(e.g. 4 for 3) or Deal) this field will contain the discounted price for the whole discount (in CHF)","example":21,"type":"number"},"price":{"description":"Price is the discounted price per piece (in CHF)","example":7,"type":"number"},"reduction":{"properties":{"amount":{"description":"Amount can either be an absolute price in CHF or a relative percentage by which the product's price will be reduced.","example":20,"type":"number"},"unit":{"description":"Unit of the amount","enum":["CHF","%"],"type":"string"}},"type":"object"},"relatedProducts":{"description":"A list of product groups that are affected by the discount.","items":{"properties":{"isAdvertisedArticle":{"description":"Is true for the product-groups that are advertised with the discount. It is always true if IsFree is false.","type":"boolean"},"isFree":{"description":"is true for free products. This case only happens when the type is M01 or M08.","type":"boolean"},"productIds":{"description":"ProductIDs is a list of product IDs that are affected by the discount.","items":{"type":"string"},"type":"array"},"quantity":{"description":"Quantity is the quantity of the product that is affected by the discount. For free products it is the number of free items you get, and for the others it is the minimal quantity you'll need to buy to get the discount.","example":3,"type":"number"}},"type":"object"},"type":"array"},"texts":{"properties":{"advertisingSubText":{"example":"Rauchen ist tödlich – hören Sie jetzt auf.","type":"string"},"advertisingText":{"example":"5 Marlboro und 1 Feuerzeug für 40.00 (Limit 1 Deal pro Kassenbon)","type":"string"},"description":{"example":"Limit: Mit Coupon Multibuy, x Stck fr z CHF (A07). Mit Coupon 5 fr 40.00 (Limit 50 Marlboro)","type":"string"},"displayText":{"example":"5 Marlboro und 1 Feuerzeug für 40.00 (Limit 1 Deal pro Kassenbon)","type":"string"},"limitationText":{"example":"Max. 5 Einkäufe pro Tag pro Person","type":"string"},"name":{"example":"202617 7/1 Testing Limit 2026","type":"string"}},"type":"object"},"type":{"description":"Type of the promotion","enum":["A01","A02","A03","A04","A05","A06","A07","D01","M01","M02","M03","M08","S01","S02","S04","S05","S06","S11","S12","S13"],"type":"string"},"validFrom":{"description":"ValidFrom indicates the start date when the discount is valid","example":"2024-05-07T00:00:00+02:00","format":"date-time","type":"string"},"validTo":{"description":"ValidTo indicates the end date when the discount is not valid anymore","example":"2024-05-07T00:00:00+02:00","format":"date-time","type":"string"}},"type":"object"},"MigrolinoStorePrice":{"properties":{"basePrice":{"description":"BasePrice of the product (in CHF)","example":0.44,"type":"number"},"discount":{"$ref":"#/components/schemas/MigrolinoDiscount"},"futureDiscounts":{"$ref":"#/components/schemas/MigrolinoDiscount"},"price":{"description":"Price of the product (in CHF)","example":8.7,"type":"number"},"productId":{"description":"ProductID is the identifier for the product","example":"189400000750","type":"string"},"storeId":{"description":"StoreID is the identifier for the store","example":"4797993","type":"string"}},"type":"object"},"Price":{"description":"Price of a product in certain timeframe. It can be with or without discount.","properties":{"basePrice":{"description":"BasePrice describes the base price for a single item of the product","example":1.1,"type":"number"},"basePriceQuantity":{"description":"BasePriceQuantity describes the unit quantity for the BasePrice","example":500,"type":"integer"},"basePriceUnit":{"description":"BasePriceUnit describes the unit for the BasePrice (e.g \"G\", \"ST\", \"L\" etc.)","example":"G","type":"string"},"discount":{"$ref":"#/components/schemas/Discount"},"isDailyPrice":{"description":"IsDailyPrice (Tagespreis) indicates that there are multiple prices for a product across different regions or even within stores in the same region. Therefore, to display the correct price for a product, we must consider the specific region or store context.","example":true,"type":"boolean"},"isDiscount":{"description":"IsDiscount indicates if this price is a discounted price.","example":true,"type":"boolean"},"originalBasePrice":{"description":"OriginalBasePrice describes the original non-discounted base price for a single item of the product. This is set only when its a discounted price","example":1.1,"type":"number"},"originalPrice":{"description":"OriginalPrice is the price without a discount. This is set only when price is a discounted price","example":11,"type":"number"},"price":{"description":"Price is the Product price","example":5.5,"type":"number"},"quantity":{"description":"Quantity describes the number of items one gets for the price","example":1,"type":"integer"},"region":{"description":"Region describes the places where the prices are valid","enum":["gmaa","gmzh","gmos","gmvd","gmge","gmnf","gmbs","gmlu","gmti","gmvs","national"],"example":"gmzh","type":"string"},"storeId":{"description":"StoreID is the identifier for the store","example":"0033000","type":"string"},"unit":{"description":"Unit describes the unit for quantity (e.g \"CU\", \"KG\" etc.)","example":"CU","type":"string"},"validFromDate":{"description":"ValidFrom indicates the start date when the price is valid","example":"2024-05-07T00:00:00+02:00","format":"date-time","type":"string"},"validToDate":{"description":"ValidTo indicates the end date when the price becomes invalid","example":"2024-05-13T23:59:59+02:00","format":"date-time","type":"string"}},"required":["validFromDate","validToDate","isDiscount"],"type":"object"},"PublicDiscount":{"description":"Same as Discount but with some stripped fields from it for public use.","properties":{"advertisementTypeId":{"description":"AdvertisementTypeID describes how the discount should be visualized","example":"2","type":"string"},"amount":{"description":"Amount is relative or absolute reduction amount to the price (e.g. 20%, 4.0)","example":"30%","type":"string"},"articleHint":{"description":"ArticleHint is the additional information about the Discount and related Products","example":"Angebot gilt nur vom 24.1. bis 31.8.2023, solange Vorrat.","type":"string"},"badge":{"description":"Badge for the Discount (e.g. 40%, 30% in PNG and SVG format)","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"bossBB":{"description":"bossBB is the area (bereich) code prefix for Boss number","example":"02","type":"string"},"bossBW":{"description":"bossBW is the world code prefix for Boss number","example":"04","type":"string"},"campaigns":{"description":"Campaigns holds campaign data for a discount","items":{"properties":{"endDate":{"description":"EndDate is the date when this campaign expires","example":"2026-07-22","format":"date","type":"string"},"id":{"description":"id of a campaign","example":"6933","type":"string"},"startDate":{"description":"StartDate is the date when this campaign becomes valid","example":"2026-07-16","format":"date","type":"string"}},"type":"object"},"type":"array"},"cumulusPoints":{"description":"CumulusPoints one receives with this Discount","properties":{"isRelative":{"description":"Relative describes if Cumulus Points value is relative or absolute (e.g. 20X points or 20 points)","example":true,"type":"boolean"},"value":{"description":"Value for Cumulus Points (e.g. 20)","example":20,"type":"integer"}},"type":"object"},"description":{"description":"Description is a short text about the Discount (e.g. Alle Trauben im Offenverkauf)","example":"Duftkerze im Glas","type":"string"},"disclaimer":{"description":"Disclaimer contains text about exceptions, validity and special conditions","example":"","type":"string"},"discountId":{"description":"ID is the Discount identifier","example":"1042893","type":"string"},"events":{"$ref":"#/components/schemas/events"},"hint":{"description":"Hint is an example of a reduction in text form","example":"","type":"string"},"image":{"description":"Image is the main image referring to the Discount in JPG format","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"insteadOf":{"description":"InsteadOf is used for specific use-cases, where we need another word for \"statt\"","example":"","type":"string"},"isCollective":{"description":"Collective describes whether this Discount is applied to more than one product (e.g. alle Fondues)","example":true,"type":"boolean"},"logo":{"description":"Logo image related to this Discount (e.g. logo for \"Migros Bio\" or for \"UTZ Certified\")","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"minimumPieces":{"description":"MinimumPieces describes how many pieces must be bought for the Discount to apply","properties":{"prefix":{"description":"Prefix is a text to be displayed before the Value","example":"ab","type":"string"},"value":{"description":"Value is the amount of pieces","example":2,"type":"integer"}},"type":"object"},"originalPrice":{"description":"OriginalPrice is the non-discounted price. This is based on discount reference product.","example":11,"type":"number"},"price":{"description":"Price is the discounted price. This is based on discount reference product price.","example":5.5,"type":"number"},"publicationDate":{"description":"PublicationDate describes when this Discount is allowed to be published to customers","example":"2022-12-25T00:00:00+01:00","format":"date-time","type":"string"},"reduction":{"description":"Reduction contains information about the price reduction","properties":{"amount":{"description":"Can either be an absolute price in CHF or a relative percentage by which the product's price will be reduced.","example":1.22,"type":"number"},"relative":{"description":"Defines if the Amount is a relative (percentage) or absolute (CHF) value.","example":false,"type":"boolean"},"suffix":{"description":"The translations for a string after the price. E.g. 10 % günstiger/de réduction/di riduzione.","example":"günstiger","type":"string"},"unit":{"description":"Unit of Amount, either CHF or %","example":"CHF","type":"string"}},"required":["suffix"],"type":"object"},"reductionTypeId":{"description":"ReductionTypeID tells us whether it's a 01=relativ, 02=absolut, ... reduction","example":"05","type":"string"},"referenceProductId":{"description":"ReferenceProductID is the main Product which this Discount refers to (\"Hauptwerbeartikel\")","example":"243140560000","type":"string"},"region":{"description":"Region defines the regional context (e.g. national, gmzh, gmaa, gmlu, ...)","example":"national","type":"string"},"secondaryImage":{"description":"SecondaryImage is the secondary image referring to the Discount","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"secondaryLogo":{"description":"SecondaryLogo image related to this Discount (e.g. logo for \"BIO SUISSE\" etc.)","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"signet":{"description":"Signet is the image related to Cumulus Discount (e.g. image for \"20x Cumulus\")","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"transparent":{"description":"Transparent is the main image referring to the Discount in PNG format","properties":{"description":{"example":"Deskriptiver Text des Bilds","type":"string"},"hexColor":{"example":"#ff6600","type":"string"},"stack":{"example":"https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png","type":"string"},"vector":{"example":"https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg","type":"string"}},"type":"object"},"type":{"description":"Type describes which type of discount we got (e.g. aktion, neuheit, ...)","example":"aktion","type":"string"},"typeId":{"description":"TypeID is the discount type identifier (e.g. 001, 005, ...)","example":"","type":"string"},"typeLabel":{"description":"TypeLabel is the name for discount TypeID","example":"NUG Nimm X Artikel","type":"string"},"validFromDate":{"description":"ValidFrom is the date when this Discount becomes valid/active","example":"2024-05-07T00:00:00+02:00","format":"date-time","type":"string"},"validToDate":{"description":"ValidTo is the date till this Discount is valid/active","example":"2024-05-13T23:59:59+02:00","format":"date-time","type":"string"}},"required":["discountId"],"type":"object"},"events":{"description":"Events holds event data for a discount","items":{"properties":{"endDate":{"description":"EndDate is the date when this event expires","example":"2026-07-22","format":"date","type":"string"},"id":{"description":"id of an event","example":"609237","type":"string"},"isMasterAssignment":{"description":"isMasterAssignment defines if the Event is the Main event. The MasterEvent flag indicates, that this event promotion is responsible for the online communication, which means it should be shown on migros.ch.","example":true,"type":"boolean"},"productID":{"description":"productID is the ID of the product that is paired to the event.","example":"101712200000","type":"string"},"startDate":{"description":"StartDate is the date when this event becomes valid","example":"2026-07-16","format":"date","type":"string"},"tactic":{"description":"tactic is a subcategory of TacticType, represented by a numeric ID. This ID corresponds to specific options, such as \"13 Wochenflyer\" under \"80 Print\" or \"4 POP-Flyer & Kataloge\" under \"84 Beilagen/Flyer\".\nSince an event tactic is a subcategory of an event tactic type, they should be used together. Knowing only the event tactic is pretty useless because it can be a subcategory of multiple event tactic types, that have nothing in common. For example event tactic '02' can be 'Anzeige' for event tactic type '01 Drucken' or 'Instore-TV' for tactic type '82 Video'.","example":"52","type":"string"},"tacticType":{"description":"tacticType represents the advertising strategy for an event. It specifies the method as a numeric ID, for example, '80' for 'Print' or '84' for 'Beilagen/Flyer'.\nSince an event tactic is a subcategory of an event tactic type, they should be used together. For instance, an event tactic with ID '02' can be a subcategory of multiple event tactic types, which have nothing in common.","example":"900","type":"string"}},"type":"object"},"type":"array"}},"securitySchemes":{"Kong-Api-Key":{"description":"Kong key-auth authentication","in":"header","name":"X-Api-Key","type":"apiKey"}}},"externalDocs":{"description":"Details, examples and more information can be found here.","url":"https://wiki.migros.net/pages/viewpage.action?pageId=630605420"},"info":{"contact":{"email":"arg_mgb-udp-business-services@mgb.ch","name":"MGB-UDP-Business-Services"},"description":"This API allows to retrieve Prices and Discounts including their metadata like image URLs and marketing texts.\n\nThe response language is determined by the Accept-Language HTTP header or by a dedicated `lang` query parameter. If neither is given \"de\" is used.\n\nImages are available on the Migros CDN which is based on Rokka. Most image URLs are templates containing {stack} which you MUST replace with the Rokka stack you want to use. The stack `original` returns the image in its original dimensions. The image format is determined by the filename extension (e.g. '.jpg' or '.png'). The URLs have a suitable extension, but you are free to replace e.g. .png with .avif if needed.\n\nThe public routes are accessible from the outside world (\"internet\"), but provide a slimmer feature set compared to their internal counterparts.\n\nThe three Audit routes are for **human** audition and troubleshooting and do not serve data that is usable by machines. Generally no access is granted to these routes.\n\nThe breaking changes are documented [here](https://wiki.migros.net/pages/viewpage.action?pageId=865970571)","title":"Prices & Discounts","version":"1.6.0"},"openapi":"3.0.0","paths":{"/migrolino/products/prices/v1/sellingprices/stores/{storeId}/{productId}":{"get":{"description":"This endpoint retrieves currently valid store price for a specified product. If the store price is not available, it uses a global migrolino product price as a fallback. It will also aggregate a discount if one is linked to the product and store.","operationId":"queryMigrolinoStoreSellingPrice","parameters":[{"$ref":"#/components/parameters/productId"},{"$ref":"#/components/parameters/storeId"}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MigrolinoStorePrice"},"type":"array"}}},"description":"Store price object"},"400":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Bad request. Invalid payload."},"404":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"No migrolino price found."},"500":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Internal server error."}},"summary":"Get store price with discount for a migrolino product","tags":["Migrolino-Price-Data"]}},"/migros/marketing/promotions/v1/discounts":{"get":{"description":"This endpoint allows to query the set of Discounts with a wide variety of criteria (e.g. region, state, ...). Multiple filters are combined by AND logic. Without any query parameter all discounts in all regions will be returned.\n\nIf a discount is valid in more than one region it is returned multiple times in the response, once for each region (note that the data inside a discount may vary from region to region). This behaviour is different from the old MAPI. If you are interested only in Discount Bundles you can select them with the 'bundles_only' parameter (but see below).\n\nBoth, the \"explode\"ed and the un\"explode\"ed variants for array query parameters are supported, so `?regions=gmaa,national` and `?regions=gmaa&regions=national` are equivalent.","operationId":"queryDiscounts","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/discount_id"},{"$ref":"#/components/parameters/discount_region"},{"$ref":"#/components/parameters/discount_event_id"},{"$ref":"#/components/parameters/discount_event_tactic"},{"$ref":"#/components/parameters/discount_event_tactic_type"},{"$ref":"#/components/parameters/discount_campaign_id"},{"$ref":"#/components/parameters/discount_state"},{"$ref":"#/components/parameters/discount_distribution_channel"},{"$ref":"#/components/parameters/discount_role"},{"$ref":"#/components/parameters/discount_advertisement_type"},{"$ref":"#/components/parameters/discount_type"},{"$ref":"#/components/parameters/discount_reduction"},{"$ref":"#/components/parameters/discount_search"},{"$ref":"#/components/parameters/discount_bundles_only"},{"$ref":"#/components/parameters/discount_boss_bw"},{"$ref":"#/components/parameters/discount_boss_bb"}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Discount"},"type":"array"}}},"description":"Array of all discounts"},"default":{"description":"Standard HTTP semantics (see above), no machine-interpretable body."}},"summary":"Query Discounts","tags":["Discount-Data"]}},"/migros/marketing/promotions/v1/discounts/{discountId}/products":{"get":{"description":"List ProductIDs that fall under the given Discount.\n\nThis endpoint can help humans to get an better idea what that discount actually is by listing some of the products it matches; it is unsuitable to get all products that apply to a discount.","operationId":"discountProducts","parameters":[{"$ref":"#/components/parameters/discountId"},{"description":"Maximum number of product IDs to return. (Default is 30.)","in":"query","name":"limit","required":false,"schema":{"example":20,"maximum":300,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"type":"string"},"type":"array"}}},"description":"List of Product IDs."}},"summary":"List Products matching a Discount","tags":["Discount-Data"]}},"/migros/marketing/promotions/v1/public/discounts":{"get":{"description":"This endpoint allows to query the set of Discounts based on a variety of filters. See `/migros/marketing/promotions/v1/discounts` for details.","operationId":"queryPublicDiscounts","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/discount_id"},{"$ref":"#/components/parameters/discount_region"},{"$ref":"#/components/parameters/discount_event_id"},{"$ref":"#/components/parameters/discount_event_tactic"},{"$ref":"#/components/parameters/discount_event_tactic_type"},{"$ref":"#/components/parameters/discount_campaign_id"},{"$ref":"#/components/parameters/discount_state_public"},{"$ref":"#/components/parameters/discount_distribution_channel"},{"$ref":"#/components/parameters/discount_role"},{"$ref":"#/components/parameters/discount_advertisement_type"},{"$ref":"#/components/parameters/discount_type"},{"$ref":"#/components/parameters/discount_reduction"},{"$ref":"#/components/parameters/discount_bundles_only"},{"$ref":"#/components/parameters/discount_boss_bw"},{"$ref":"#/components/parameters/discount_boss_bb"}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PublicDiscount"},"type":"array"}}},"description":"Array of all discounts"},"default":{"description":"Standard HTTP semantics (see above), no machine-interpretable body."}},"summary":"Query Discounts","tags":["Public-Discount-Data"]}},"/migros/products/franchises/v1/migrolino/price":{"post":{"description":"Accepts franchisee price changes payload from SAP P45 system and persists it.","operationId":"franchiseePriceChanges","responses":{"200":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Irrelevant price changes provided."},"201":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Price changes processed."},"400":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Bad request. Invalid payload."},"500":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Internal server error."}},"summary":"Submit migrolino franchisee price changes","tags":["Migrolino-Price-Data"]}},"/migros/products/prices/v1/audit/discounts/{discountId}":{"get":{"description":"Detail data of a discount for **human** consumption.\n\nYou must not parse and must not process the returned HTML page.","operationId":"auditDiscount","parameters":[{"$ref":"#/components/parameters/discountId"}],"responses":{"200":{"content":{"text/html":{}},"description":"Discount data for human audit."}},"summary":"Fetch a certain Discount","tags":["Audit"]}},"/migros/products/prices/v1/audit/products/{productId}":{"get":{"description":"A list of all data for a certain product including the (link to) the XML from the Price-Repo that determined that data.\n\nYou must not parse and must not process this HTML page.","operationId":"auditProduct","parameters":[{"$ref":"#/components/parameters/productId"}],"responses":{"200":{"content":{"text/html":{}},"description":"HTML page"}},"summary":"Source of price and discount data of a product.","tags":["Audit"]}},"/migros/products/prices/v1/audit/xml/{date}/{name}":{"get":{"description":"The XML from the Price-Repo.\n\nYou must not parse and must not process the returned XML.","operationId":"auditXml","parameters":[{"description":"Date","in":"path","name":"date","required":true,"schema":{"type":"string"}},{"description":"Filename","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml":{}},"description":"XML as sent from Price-Repo"}},"summary":"XML file sent from Price-Repo","tags":["Audit"]}},"/migros/products/prices/v1/migrolino/opp":{"post":{"description":"This endpoint offers the possibility for SAP-PI to send migrolino promotion updates.","operationId":"migrolinoPromotionImport","responses":{"201":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Promotion changes processed."},"500":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Internal server error."}},"summary":"Submit migrolino promotions from SAP-PI","tags":["Migrolino-Discount-Import"]}},"/migros/products/prices/v1/public/cirrus/store/changes":{"post":{"description":"Accepts store price changes payload from cirrus system, persists it and produces Kafka updates.","operationId":"cirrusStorePriceChanges","responses":{"201":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Price changes processed."},"400":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Bad request. Invalid payload."},"500":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Internal server error."}},"summary":"Submit migrolino store price changes","tags":["Migrolino-Price-Data"]}},"/migros/products/prices/v1/sellingprices/stores/{storeId}/{productId}":{"get":{"description":"This endpoint retrieves currently valid store prices for a specified product. By default, only currently valid prices will be fetched. However, future store prices can also be retrieved by using the status=all query parameter.","operationId":"listStorePrices","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/productId"},{"$ref":"#/components/parameters/storeId"},{"description":"The `status` query parameter allows to filter by status and enables fetching future prices.","in":"query","name":"status","required":false,"schema":{"enum":["all",""],"example":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Price"},"type":"array"}}},"description":"Array of prices"}},"summary":"Get store prices for a product","tags":["Price-Data"]}},"/migros/products/prices/v1/sellingprices/{productId}":{"get":{"description":"This endpoint retrieves currently valid regional prices for a specified product. If no regional price for a region is found, the national price will be used as a fallback. Priority of prices is also taken into account. E.g. a discounted takes precedence over non-discounted prices and multiple applicable discounts get prioritised.","operationId":"listRegionalPrices","parameters":[{"$ref":"#/components/parameters/lang"},{"$ref":"#/components/parameters/productId"},{"$ref":"#/components/parameters/regions"}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Price"},"type":"array"}}},"description":"Array of prices"}},"summary":"Get regional prices for a product","tags":["Price-Data"]}},"/migros/products/prices/v1/smvmimport":{"post":{"description":"This endpoint offers the possibility for PriceRepository to send price updates.","operationId":"smvmImport","responses":{"201":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Price successfully imported."},"400":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Bad request. Unable to read body."},"422":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"XML extraction failed."},"500":{"content":{"text/plain":{"schema":{"type":"string"}}},"description":"Internal server error."}},"summary":"Import SMVM prices from PriceRepository","tags":["SMVM-Import"]}}},"security":[{"Kong-Api-Key":[]}],"servers":[{"description":"URL of upstream","url":"https://api.migros.ch"}],"tags":[{"name":"Price-Data"},{"name":"Discount-Data"},{"name":"Public-Discount-Data"},{"name":"Audit"},{"name":"Migrolino-Discount-Import"}],"x-company":"migros","x-edm-domain":"products","x-format-suffix":{"enabled":true,"pattern":"json|xml"},"x-headmatter":{"readable_by":"*"},"x-kong-route-defaults":{"protocols":["https"],"strip_path":false},"x-kong-service-defaults":{"connect_timeout":1000,"read_timeout":120000,"retries":2,"write_timeout":1000},"x-leanix-id":"08f29955-6c5a-481b-a00b-54c45e2dcd7e","x-link-get-access":"https://forms.office.com/e/zhzbEqAQ26","x-link-get-support":"mailto:9961fcb6.migros.onmicrosoft.com@ch.teams.ms"}
```
