logo
logo

Docs Promotion

Módulo exclusivo Esse módulo é de uso exclusivo de parceiros que operam com mercado e não está disponível para todos os desenvolvedores. Caso tenha interesse em utilizar funções dessa API, entre em contato com time de atendimento.

A criação de promoções será realizada utilizando a rota POST /merchants/{merchantId}/promotions. Ao realizar a solicitação para a rota, o fluxo realizará as validações necessárias e processamento, e posteriormente as promoções serão enviadas ao APP.

Exemplo para promoções do tipo: FIXED PERCENTAGE e FIXED_PRICE

{
    "aggregationTag": "123456",
    "promotions": [
        {
            "promotionName": "Promoção  teste",
            "channels": [
                "IFOOD-APP"
            ],
            "items": [
                {
                    "ean": "3213434343",
                    "discountValue": 22.99,
                    "initialDate": "2024-10-23",
                    "finalDate": "2024-10-30",
                    "promotionType": "FIXED",
                }
            ]
        }
    ]
}

Exemplo para promoções do tipo: LXPY (leve X pague Y)

{
    "aggregationTag": "123456",
    "promotions": [
        {
            "promotionName": "Promoção teste do tipo LXPY",
            "channels": [
                "IFOOD-APP"
            ],
            "items": [
                {
                    "ean": "3213434343",
                    "discountValue": null,
                    "initialDate": "2024-10-23",
                    "finalDate": "2024-10-30",
                    "promotionType": "LXPY",
                    "progressiveDiscount": {
                        "quantityToBuy": 3,
                        "quantityToPay": 2
                    }
                }
            ]
        }
    ]
}

Exemplo para promoções do tipo: ATACAREJO

{
    "aggregationTag": "123456",
    "promotions": [
        {
            "promotionName": "Promoção teste do tipo Atacarejo",
            "channels": [
                "IFOOD-APP"
            ],
            "items": [
                {
                    "ean": "3213434343",
                    "discountValue": 3,
                    "initialDate": "2024-10-23",
                    "finalDate": "2024-10-30",
                    "promotionType": "ATACAREJO",
                    "progressiveDiscount": {
                        "quantityToBuy": 6
                    }
                }
            ]
        }
    ]
}

Exemplo para promoções do tipo: PERCENTAGE_X_UNIT_DISCOUNT (X% off na Y unidade)

{
    "aggregationTag": "123456",
    "promotions": [
        {
            "promotionName": "Promoção teste - 50% de desconto na 3 unidade",
            "channels": [
                "IFOOD-APP"
            ],
            "items": [
                {
                    "ean": "3213434343",
                    "discountValue": 50.0,
                    "initialDate": "2024-10-23",
                    "finalDate": "2024-10-30",
                    "promotionType": "PERCENTAGE_PER_X_UNITS",
                    "progressiveDiscount": {
                        "quantityToBuy": 3
                    }
                }
            ]
        }
    ]
}
NomeTipoOpcionalDescriçãoExemplo
aggregationTagStringSIMIdentificador do pedido de integraçãoNúmero/código para identificação de solicitação de criação de promoção.
promotion.promotionNameStringSIMNome da promoçãoPromoção de verão
channelsArrayNÃOCanais onde as promoções serão vinculadasIFOOD-APP
promotions.items.eanStringNÃOEAN do item3213434343
promotions.items.discountValueDoubleSIMValor do desconto a ser concedido, pode ser passado valor em R$ ou %29.99
promotions.items.initialDateDateNÃOData em que a promoção deve começar2024-10-23
promotions.items.finalDateDateNÃOData em que a promoção deve finalizar2024-10-30
promotions.items.promotionTypeStringNÃOTipo da promoçãoFIXED, PERCENTAGE, FIXED_PRICE, LXPY, ATACAREJO ou PERCENTAGE_PER_X_UNITS
promotions.items.progressiveDiscount.quantityToBuyIntegerSIM1Quantidade a comprar2
promotions.items.progressiveDiscount.quantityToPayIntegerSIM2Quantidade a pagar2
1 Obrigatório para promoções dos tipos LPXY, ATACAREJO e PERCENTAGE_PER_X_UNITS.2 Obrigatório para promoções do tipo LPXY.

Tipos de promoções

  • Tipos de promoções (promotionType) suportados pela integração.

    • FIXED: determina o valor do desconto em R$.
    • PERCENTAGE: determina o valor do desconto do item em porcentagem.
    • FIXED_PRICE: determina o valor final do item.
    • LXPY: determina o valor de desconto dado um combo de itens.
    • ATACAREJO: aplica o valor do desconto a partir de uma quantidade X de itens.
    • PERCENTAGE_PER_X_UNITS: aplica o desconto percentual a cada x quantidade do item.
  • Campos usados em conjunto

    • Para promoções do tipo: FIXED , PERCENTAGE, FIXED_PRICE deve ser enviado promotionType e o discountValue. EX:
      {
              "promotionType": "tipo da promoção",
              "discountValue": "valor do desconto ou valor do item"
      }
    • Para promoções do tipo LXPY deve ser enviado o promotionType e o progressiveDiscount (objeto completo) EX:
          {
              "promotionType": "LXPY", 
              "progressiveDiscount":{
                  "quantityToBuy": 3, 
                  "quantityToPay": 2
              }
          }
    • Para promoções do tipo ATACAREJO deve ser enviado o promotionType, o progressiveDiscount e o discountValue EX:
          {
              "promotionType": "ATACAREJO", 
              "discountValue": "valor final do item",
              "progressiveDiscount":{
                  "quantityToBuy": 3, 
              }
          }
    • Para promoções do tipo PERCENTAGE_PER_X_UNITS deve ser enviado o promotionType, o progressiveDiscount.quantityToBuy e o discountValue EX:
          {
              "promotionType": "PERCENTAGE_PER_X_UNITS", 
              "discountValue": "valor do desconto aplicado a cada x unidades do item",
              "progressiveDiscount":{
                  "quantityToBuy": 3, 
              }
          }
  • Em um exemplo que o item tem o valor R$ 10,00
EntradaValor do item com desconto
{"promotionType": "FIXED", "discountValue": 2}R$ 8,00
{"promotionType": "PERCENTAGE", "discountValue": 10}R$ 9,00
{"promotionType": "FIXED_PRICE", "discountValue": 6}R$ 6,00
{"promotionType": "LXPY", "progressiveDiscount": {"quantityToBuy": 3, "quantityToPay": 2}}Os 3 itens sairão por R$ 20,00, cada um por aproximadamente R$ 6,66
{"promotionType": "ATACAREJO", "discountValue": 6, "progressiveDiscount": {"quantityToBuy": 3}}Os 3 itens sairão por R$ 18,00, cada um por R$ 6,00
{"promotionType": "PERCENTAGE_PER_X_UNITS", "discountValue": 50, "progressiveDiscount": {"quantityToBuy": 2}}Ao adicionar 2 unidades do item no carrinho, a segunda receberá 50% de desconto. Ficando um valor total de R$ 15,00

Importante A fim de evitar qualquer tipo de erro ou fraude, permitimos descontos de no máximo 70% em relação ao preço de catálogo. Para mecânicas como "Leve X Pague Y" e "Percentual de desconto na Nª unidade" consideramos que o desconto dado no combo de itens comprados não deve passar dos mesmos 70% (ex. Leve 10 Pague 2 não é permitido, pois há um desconto de 80% nas 10 unidades compradas). Itens enviados com desconto maior que o permitido serão ignorados.

Retorno da requisição

  • Sucesso

    • HTTP status code 202
    • Response body
      {
      "aggregationId": "String",
      "message": "We have successfully received your request to create promotions"
      }
    • O aggregationId retornado, será o identificador para acompanhamento do seu pedido de criação de promoção.
  • Erro

    • Quando ocorrer algum erro ao realizar o processamento, será retornado o HTTP status code 400 ou 422

      {
      "type": "Business Exception || Unprocessable Entity",
      "title": "Business Exception || Unprocessable Entity",
      "status": 400 || 422,
      "detail": "Detail error",
      "instance": "07228dab-644c-4bec-b8a3-073397a839a0"
      }
    • Quando ocorrer algum erro em algum parâmetro ou no body, será retornado o HTTP status code 412

      HTTP status code 412

      {
      "type": "Precondition Failed || Invalid Argument",
      "title": "Invalid Request Body || Invalid Argument",
      "status": 412,
      "detail": "Detail error",
      "instance": "07228dab-644c-4bec-b8a3-073397a839a0"
      }

Critérios de Homologação

Verifique os critérios para realizar sua homologação.