> ## 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.

# Get a specific promotion

> Retrieves details of a specific promotion by ID



## OpenAPI

````yaml offers_v2_combined get /api-offers/promo/{promoId}
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}:
    get:
      tags:
        - Promotion
      summary: Get a specific promotion
      description: Retrieves details of a specific promotion by ID
      parameters:
        - $ref: '#/components/parameters/xSiteContent'
        - in: path
          name: promoId
          schema:
            type: string
          required: true
          description: ID of the promotion to be retrieved
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promoResponseDetails'
        '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:
    promoResponseDetails:
      type: object
      properties:
        _id:
          type: string
          description: fabric internal unique id
          example: abcdefg1ee7ce20123456789
        promoId:
          type: number
          description: System generated unique ID of promotion
          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
            description: Discount coupon codes
            example: 2agh56tyBZ57hkli67y
        state:
          type: string
          description: >-
            Promotion status. <br /> **ACTIVE:** Promotion is applied to the
            SKUs or items for which it is set as *Active*. Active promotions
            cannot be disabled.<br />**SCHEDULED:** Promotion is scheduled to be
            applied to the SKUs or items based on the start date. <br
            />**DISABLED:** Promotion is set as *disabled* and is not in use.
            Only *Disabled* promotions can be enabled.<br />**EXPIRED:**
            Promotion is stopped by setting the expiration date. That is, the
            start date and end date are the same as 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 information
                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: Condition for the promotion to be qualified
                items:
                  $ref: '#/components/schemas/promoCondition'
        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 already 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
            minimum 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 promo* to provide eligible shipment methods
          items:
            type: string
            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: >-
            The array of limits that are applied to the coupon. It should be
            empty array for all promotions except for BuyGet and Product
            promotions. That is, if the `type` is mentioned as Product and
            BuyGet.
          example: []
          items:
            type: object
        note:
          type: string
          example: Independence day sale!
          description: Promo 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
    promoCondition:
      type: object
      required:
        - operator
        - conditions
      properties:
        operator:
          type: string
          description: >-
            Conditional operator to be applied between each object of conditions
            array
          enum:
            - AND
            - OR
        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: >-
            To exclude products from promotions, select the `AND` or `OR`
            operator for product exclusion rules. <br /> Use the `OR` operator
            to apply a single rule for product exclusion. <br /> Use the `AND`
            operation to apply multiple rules for product exclusion.
          default: AND
          example: AND
          enum:
            - AND
            - OR
        conditions:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/condition'
        set:
          type: string
          default: A
          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.
          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
    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.
    condition:
      type: object
      required:
        - key
        - value
        - operator
      properties:
        key:
          type: string
          example: SKU
          enum:
            - SKU
            - QUANTITY
            - CATEGORY
            - ATTRIBUTE
            - PRICE_KIND
            - CHANEL
            - ORDER_VALUE
            - USER_SEGMENT
            - USER_KIND
        value:
          oneOf:
            - type: string
              description: The value corresponding to the `key`.
              example: '*'
            - type: array
              items:
                oneOf:
                  - type: number
                    description: >-
                      The Stock Keeping Units (SKUs) of items or item IDs.
                      Either SKUs or itemIds must be specified to apply discount
                      on selected item or items.
                    example:
                      - 1000000234
                      - 1000000445
                  - type: string
                    description: The description of the SKU or item IDs.
                    example:
                      - Garden light
                      - Indoor light
        operator:
          type: string
          description: >-
            Defines the condition for `key` and `value` set passed in the
            object. For example, IN indicates that the `key` and `value` set are
            included for promotion to be applied.
          example: IN
          enum:
            - NOT_EQUAL
            - EQUAL
            - GREATER_THAN
            - LESS_THAN
            - GREATER_THAN_OR_EQUAL_TO
            - LESS_THAN_OR_EQUAL_TO
            - NOT_IN
            - IN
  securitySchemes:
    AuthorizationToken:
      type: http
      scheme: bearer
      bearerFormat: JWT

````