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

# Enable or disable a promotion

> Lets you toggle promotion status by enabling or disabling a promotion, not applicable to *ACTIVE* promotions. <br />**Enable a promotion:** Only *disabled* promotions can be enabled.<br /> **Disable a promotion:** Only *not expired* promotions can be disabled.



## OpenAPI

````yaml offers_v2_combined put /api-offers/promo/{promoId}/enable-disable
openapi: 3.0.0
info:
  title: Offers v2
  description: >-
    fabric's Offers APIs let you set up and manage stock keeping unit (SKU)
    prices. Its wide range of coupon and promotion features let you design
    discounts ranging from single-use, customer-specific coupons to site-wide
    promotions applicable for all SKUs.
  version: 2.0.0
  contact:
    email: support@fabric.inc
  license:
    url: https://fabric.inc/api-license
    name: fabric API license
servers:
  - url: https://live.copilot.fabric.inc
    description: Production
security:
  - AuthorizationToken: []
tags:
  - name: Price List
    description: >-
      Price list is a collection of items and their assigned prices. An item can
      exist in multiple price lists. This gives you the ability to assign
      different prices to the same item. Price lists let you set currency and
      duration of the prices. For example, if the price list expires, prices of
      items within the price list will also expire. You can configure the
      pricing API to include your default price. <br />When requesting pricelist
      of items or evaluating promotions, you should mention the price list ID
      that you want to use.
  - name: Pricing
    description: >-
      Pricing endpoints let you create and manage price details for one or many
      items. You can configure the pricing API to include your default price
      list in all requests.
  - name: Price Guard
    description: >-
      Price Guard allows you to create and manage more diversified price-kinds
      for the item, such as manufacturer recommended retail price (MSRP),
      minimum advertised price (MAP), floor price, ceiling price, clearance
      price,  and so on.  Price guard works as a protection mechanism against
      any further creation of prices for the item. These endpoints let you
      create and manage such price-kinds.
  - name: Price Kind
    description: >-
      Unlike price guard, price kind endpoint lets you get the fundamental price
      kinds (for example, base price and sale price) that are created while
      setting up the item information.
  - name: Promotion
    description: >-
      Promotion is a discount on an item, cart or shipping method based on set
      conditions. As promotions can be linked to specific price lists, it is
      important to submit the correct price list ID. Promotion endpoints let you
      create and manage discounts that will be applied to all customers' carts
      that meet the required conditions.
  - name: Coupon
    description: >-
      Coupon endpoints let you create and manage coupon codes that customers can
      enter at checkout to receive a discount.
  - name: Dynamic Pricing Engine
    description: >-
      fabric's Dynamic Pricing Engine APIs evaluate promotions and calculate
      prices instantly for the cart items using real-time price calculation
      method, that incorporates the latest information, to provide personalized
      and competitive prices for specific customers. It supports formula based
      custom SKU dynamic pricing, and shows discount breakdown details for
      separate items having separate promotions. It uses the cache information,
      instead of fetching offer details of items from database, to evaluate
      promotions and calculate prices instantly. It is fast, scalable to
      millions of pricing requests per day, and supports complex promotional
      strategies.
  - name: Global exclusion
    description: >-
      Global exclusions let you exclude SKUs from being discounted by active
      promotions. These endpoints let you manage those sku-lists.
  - name: Redemption
    description: Redemption endpoints let you manage the records of coupon redemptions.
  - name: Segment
    description: >-
      Segment endpoints let you target promotions at specific groups of
      customers by linking the promotion to a segment identifier. A customer
      segment is a group of customers that have been given a unique reference to
      easily identify them. They may be grouped in a number of ways such as
      demographics, locations, device type, and so on. fabric Offers supports
      the assignment of a customer segment to a promotion so that the promotion
      is applied only to a specific group of customers. You must enter your
      customer segment identifiers in the *Settings* of the Copilot application.
  - name: Upload price CSV
    description: This endpoint lets you bulk upload price details using a CSV file.
  - name: Product
    description: >-
      Product endpoint lets you get product and price information based on sku.
      Product information is retrieved from Product Catalog and price details
      are retrieved from Offers service.
  - name: Item
    description: >-
      Item endpoints let you get products and prices information based on
      itemId. Product information of an item is retrieved from Product Catalog
      and price details are retrieved from Offers service.
  - name: Attributes
    description: >-
      Attributes refer to a collection of attributes names and their values.
      Using attributes, you can group entities, such as products or shoppers,
      that share similar characteristics, such as dimension, age group,
      location, device type, and more. For example, the shopper segmentation can
      be used to tailor promotions to a specific customer segment by linking the
      promotion to the segment identifier.
  - name: Exports
    description: >-
      fabric Export endpoints let you export data to CSV files based on the
      provided filters.
externalDocs:
  description: Learn more about Offers
  url: https://developer.fabric.inc/docs/offers-overview
paths:
  /api-offers/promo/{promoId}/enable-disable:
    put:
      tags:
        - Promotion
      summary: Enable or disable a promotion
      description: >-
        Lets you toggle promotion status by enabling or disabling a promotion,
        not applicable to *ACTIVE* promotions. <br />**Enable a promotion:**
        Only *disabled* promotions can be enabled.<br /> **Disable a
        promotion:** Only *not expired* promotions can be disabled.
      parameters:
        - $ref: '#/components/parameters/xSiteContent'
        - in: path
          name: promoId
          schema:
            type: string
          required: true
          description: ID of the promotion to be toggled
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/enableDisablePromo'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/promoResponse'
                  - type: object
                    properties:
                      state:
                        example: DISABLED
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promoCouponNotFound'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
components:
  parameters:
    xSiteContent:
      name: x-site-context
      in: header
      description: >-
        The `x-site-context` header is a JSON object that contains information
        about the source you wish to pull from. The mandatory `account` is the
        24 character identifier found in Copilot. The `channel` (Sales channel
        ID), `stage` (environment name), and `date` attributes can be used to
        further narrow the scope of your data source.
      required: true
      schema:
        type: string
        example: >-
          {"date": "2023-01-01T00:00:00.000Z", "channel": 12, "account":
          "1234abcd5678efgh9ijklmno","stage":"production"}
  schemas:
    enableDisablePromo:
      type: object
      required:
        - enable
      properties:
        enable:
          description: >-
            flag to enable or disable a promotion.<br />If set it to true, this
            endpoint enables a disabled promotion.<br />If set to false, this
            endpoint disables an enabled promotion.
          type: boolean
          example: false
    promoResponse:
      type: object
      properties:
        _id:
          type: string
          description: A 24-character system-generated promotion ID.
          example: abcdefg1ee7ce20123456789
        promoId:
          type: number
          description: A unique identifier of the promotion, for external use.
          example: 100013
        promoCodes:
          type: array
          description: >-
            A list of coupon codes that are applicable only for coupons. For
            coupons, the response includes promo codes associated with the
            coupon. For promotions, the response includes an empty array.
          example:
            - SUMMER100
            - SUMMER20
          items:
            type: string
        state:
          type: string
          description: >-
            Promotion status. <br /> `ACTIVE` indicates that the promotion is
            applied to SKUs or items for which it is set as *Active*. Active
            promotions cannot be disabled.<br />`SCHEDULED` indicates that the
            promotion is scheduled to be applied to SKUs or items based on the
            defined start date.<br />`DISABLED` indicates that the promotion is
            set as *disabled* and is not in use. Only *Disabled* promotions can
            be enabled.<br />`EXPIRED` indicates that the promotion is stopped
            by setting the expiration date. That is, the start date and end date
            as the current date. Only those promotions that are *not expired*
            can be enabled.
          enum:
            - ACTIVE
            - SCHEDULED
            - DISABLED
            - EXPIRED
          example: SCHEDULED
        isImplicit:
          type: boolean
          description: >-
            A flag indicating whether an offer is applied automatically. Set it
            to `true` for promotions, which should be applied automatically and
            `false` for coupons, which must be applied explicitly.
          example: true
        title:
          type: string
          description: Title of the promotion
          example: CREATE PROMO
        buyOperator:
          type: string
          description: >-
            It is used to define operator between different *Buy* conditions
            (different conditions as mentioned in the `condition` object)
          default: OR
          enum:
            - AND
            - OR
          example: OR
        promo:
          type: array
          items:
            type: object
            properties:
              discount:
                type: array
                description: Discount details
                items:
                  $ref: '#/components/schemas/discount'
              targetProducts:
                type: array
                description: The products the discount is applied to.
                items:
                  $ref: '#/components/schemas/targetProduct'
              condition:
                type: array
                description: List of linked condition IDs to the promotion
                items:
                  type: string
                  example: 620d84a715f2d00001234567
        startDate:
          type: string
          format: date-time
          description: Start date of the promotion
          example: '2019-08-24T14:15:22Z'
        endDate:
          type: string
          format: date-time
          description: End date of the promotion
          example: '2019-08-25T14:15:22Z'
        isExclusive:
          type: boolean
          description: >-
            A flag indicating whether a coupon can be stacked with an existing
            promotion. Set it to `true` to prevent the coupon from being applied
            to items that have promotions and `false` to allow coupon to be
            applied with existing promotions.
          example: true
        type:
          type: string
          description: >-
            Promotion type.<br /> **Product:** SKU promotion. Promotion or
            discount on SKUs based on the value mentioned in *discount*
            object<br />**CART:** Cart promotion. Promotion or discount on cart
            amount based on the *ORDER_VALUE* that is set in *condition*
            object<br />**QUANTITY:** Quantity promotion provides discounts
            based on the quantity requirement set in the promotion<br
            />**BOGO:** Buy One Get One promotion provides discounts based on
            the Buy conditions and Get discounts<br />**SHIPPING:** Shipping
            promotion provides discounts on the shipping cost<br />**BUYGET:**
            BuyGet promotion specifies the Buy conditions and Get discounts<br
            />**SPEND_GET:** SpendGet promotion can specify the requirement of
            cart order value and the corresponding Get discounts
          enum:
            - PRODUCT
            - CART
            - QUANTITY
            - BOGO
            - SHIPPING
            - BUYGET
            - SPEND_GET
          example: PRODUCT
        stackingType:
          type: string
          description: >-
            Defines the rules for how a promotion can be combined with other
            promotions.  This field determines whether a specific promotion can
            be applied in conjunction  with other active promotions during a
            transaction or if it must be used exclusively. Possible values: -
            `STACKABLE`: This promotion can be combined with other stackable
            promotions, allowing multiple 
              discounts to be applied together. The order in which stackable promotions are applied 
              is determined by the `level` field, with promotions having a higher priority (lower numeric value)
              being applied before those with a lower priority.
            - `EXCLUSIVE`: This promotion cannot be combined with any other
            promotions. The `level` field is
              used to determine which exclusive promotion will be evaluated and applied first. Once an exclusive
              promotion is applied, no other promotions can be used in the same transaction.
            - `TYPE_EXCLUSIVE`: This promotion cannot be combined with other
            promotions of the same type.
              The `level` field is used to determine which promotion within the same type will be evaluated and
              applied first.
            - `UNIVERSAL`: This promotion can be combined with any other
            promotions without restrictions.
              Universal promotions will be evaluated last. We don't need to define `level` for this type.
          enum:
            - STACKABLE
            - EXCLUSIVE
            - TYPE_EXCLUSIVE
            - UNIVERSAL
          example: STACKABLE
        level:
          type: integer
          format: int32
          description: >-
            The promotion execution order. Promotion types are assigned default
            execution orders. Initial evaluation begins with level 1 promotions.
            The result of level 1 is used as the base price for level 2.
            Similarly, the result of level 2 becomes the base price for level 3,
            and so on.
          example: 1
        termsAndConditions:
          type: array
          items:
            $ref: '#/components/schemas/termsAndConditions'
        promotionMessages:
          type: array
          items:
            $ref: '#/components/schemas/promotionMessage'
        proximityMessages:
          type: array
          items:
            $ref: '#/components/schemas/proximityMessage'
        shipmentMethodIds:
          type: array
          description: >-
            Required for Shipping type promo to provide eligible shipment
            Methods
          items:
            type: string
            description: >-
              Shipping method IDs of the shipping methods to which promotion is
              applicable
            example: 1000001
        eligiblePriceList:
          type: array
          description: IDs of the price lists to which this promotion is applied
          items:
            type: number
            example: 10000056
        limits:
          type: array
          description: Array of limits for the promotion to be applied
          items:
            type: object
            properties:
              kind:
                type: string
                description: Kind of limit for the promotion to be applied
                example: ORDER
              value:
                description: Value of limit for the promotion to be applied
                type: number
                example: 2
        note:
          type: string
          example: Independence day sale!
          description: Promotion note or description
        createdAt:
          type: string
          format: date-time
          description: Creation date of the record
          example: '2019-08-20T14:15:22Z'
        updatedAt:
          type: string
          format: date-time
          description: Last updated date of the record
          example: '2019-08-20T14:15:22Z'
    promoCouponNotFound:
      type: object
      properties:
        code:
          description: The error code.
          type: string
          example: PROMO_NOT_FOUND
        message:
          description: The error message corresponding to the `code`.
          type: string
          example: The promo code you entered doesn't exist.
    error500:
      type: object
      properties:
        code:
          description: The error code.
          type: string
          example: INTERNAL_SERVER_ERROR
        message:
          description: An error message coressponding to the `code`.
          type: string
          example: Internal server error.
    discount:
      type: object
      required:
        - unit
        - value
        - 'ON'
      properties:
        unit:
          type: string
          description: >-
            Unit of discount; represents whether the discount is in percentage
            or by a certain amount
          enum:
            - '%OFF'
            - AMOUNT_OFF
            - FIXED
          example: '%OFF'
        value:
          type: number
          description: Discount value to be applied
          example: 10
        discountId:
          type: string
          description: >-
            Discount ID to link `discount` and `targetProduct`, and is required
            for BuyGet and SpendGet type promotions
          example: 1
        autoAdd:
          type: boolean
          description: >-
            To indicate if the evaluation API (from Dynamic Pricing Engine)
            should suggest free items. Currently used for BuyGet and SpendGet
            type promotions.
          default: false
          example: false
        'ON':
          type: object
          description: Indicates kind of products promotion is applied on.
          required:
            - kind
            - value
          properties:
            kind:
              type: string
              description: >-
                SKU if discount is on products<br /> `SERVICE` if discount is on
                an SKU shipping cost<br /> `SERVICE_CART` if discount is on cart
                shipping cost
              enum:
                - SKU
                - CART
                - SERVICE
                - SERVICE_CART
              example: SKU
            value:
              oneOf:
                - type: string
                  example: '*'
                - type: array
                  items:
                    type: object
            quantity:
              type: number
              description: >-
                Quantity of items to be sold for the discount to be applied. It
                is required when `type` is SPEND_GET, BUYGET, BOGO (Buy One Get
                One)
              example: 2
            includeOperator:
              type: string
              description: >-
                Select the `AND` or `OR` condition to include products in a
                promotion. <br /> Use the `OR` condition to apply a single rule
                for product inclusion. <br /> Use the `AND` condition to apply
                multiple rules for product inclusion.
              example: OR
              default: OR
              enum:
                - AND
                - OR
            excludeOperator:
              type: string
              description: >-
                Select the `AND` or `OR` condition to exclude products from a
                promotion. <br /> Use the `OR` condition to apply a single rule
                for product exclusion. <br /> Use the `AND` condition to apply
                multiple rules for product exclusion.
              example: AND
              default: AND
              enum:
                - AND
                - OR
        set:
          type: array
          description: >-
            It is used to create a group of items in a set so that you can
            easily apply promotions or coupons to the defined set of items.
          items:
            type: string
            enum:
              - A
              - B
              - C
              - D
              - E
              - F
              - G
              - H
              - I
              - J
              - K
              - L
              - M
              - 'N'
              - O
              - P
              - Q
              - R
              - S
              - T
              - U
              - V
              - W
              - X
              - 'Y'
              - Z
    targetProduct:
      type: object
      description: Represents the type or kind of products to which discount is applied
      required:
        - kind
        - value
        - operator
      properties:
        kind:
          type: string
          description: Selection of product type
          enum:
            - SKU
            - CATEGORY
            - ATTRIBUTE
            - PRICE_KIND
            - PREVIOUS_DISCOUNT
          example: SKU
        value:
          description: >-
            Value for the kind as defined above.<br /> For `SKU`, value can be
            array of itemIds or array of SKU descriptions.<br /> For `Category`,
            value can be array of category IDs or category descriptions.<br />
            For `Attribute`, value can be array of attribute objects, for
            example [{name: 'attribute-name', value:'attribute-value'}]
          oneOf:
            - type: string
              description: >-
                Description of the product. Here * indicates that all products
                are selected for the discount to be applied.
              example: '*'
            - type: array
              items:
                oneOf:
                  - type: number
                    description: >-
                      SKU ID. [1000000234, 1000000445] could be array of itemIds
                      if you want to apply promotion on selected items
                    example: 1000000234
                  - type: string
                    description: SKU description
                    example: >-
                      Kitchen items. [Kitchen items, Garden light] could be
                      array of items if you want to apply promotion on selected
                      items
        operator:
          description: >-
            The type of search operation. You can use multiple values separated
            by commas for the IN and NOT_IN operations. However, you can use
            only a single value for the EQUALS and GREATER_THAN operations.
          type: string
          enum:
            - IN
            - NOT_IN
            - EQUAL
            - GREATER_THAN
          example: IN
        discountId:
          type: string
          description: >-
            Discount ID to link discount and targetProduct, and is required for
            BuyGet and SpendGet promotions
          example: 1
    termsAndConditions:
      type: object
      properties:
        title:
          type: string
          description: Title of the terms and conditions
          example: Terms Applied
        description:
          type: string
          description: Description of the terms and conditions
          example: Items cannot be exchanged
    promotionMessage:
      type: object
      description: Message description for the promotion
      properties:
        title:
          type: string
          description: Message name
          example: Buy 1 get 1 free
        message:
          type: string
          description: Message description
          example: Offer valid at participating stores through September 5, 2023.
        pages:
          type: array
          description: Types of web pages where the message will be displayed
          items:
            type: string
            description: Page type
            example: PDP
          example:
            - PDP
            - Cart
        locales:
          type: array
          description: >-
            Locales in which promotion message will be displayed. Locale is a
            set of language or country-based preferences for user interface.
          items:
            type: string
            description: Locale
            example: en-CA
          example:
            - en-CA
            - fr-CA
    proximityMessage:
      type: object
      properties:
        threshold:
          type: integer
          minimum: 0
          description: The proximity threshold value.
        localizedMessages:
          type: array
          items:
            type: object
            properties:
              locales:
                type: array
                items:
                  type: string
                  description: The intended language or target region for the message.
              message:
                type: string
                description: The localized message for the specified locales.
  securitySchemes:
    AuthorizationToken:
      type: http
      scheme: bearer
      bearerFormat: JWT

````