fabric Promotions API

The Promotions API from fabric — 5 operation(s) for promotions.

OpenAPI Specification

fabric-com-promotions-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Cart Actions Endpoints Promotions API
  description: fabric's **Cart API** lets you add, update, and remove items from your Storefront cart, either as a guest user or as a logged-in user. It also provides functionality to merge carts when you switch from guest user to logged-in user, and apply coupons and other attributes (for example, gift wrapping) to the line items. Additionally, the API supports more advanced tasks such as using multiple carts within a B2B organization, sharing carts, and supporting a unified cart experience for multi-region and multi-brand businesses.<p>The Cart API provides high performance, scalability, multi-tenancy, and configurability to the end-to-end order processing actions that start from the item being added to the cart; through the pre-checkout stage that includes billing, shipping, and payment details; to the checkout stage where the order is processed and confirmed by fabric's Order Management System (OMS)
  contact:
    name: Cart Support
    email: support.cnc@fabric.inc
  license:
    name: fabric API License
    url: https://fabric.inc/api-license
  version: 3.0.0
servers:
- url: https://api.fabric.inc/v3
security:
- bearerAuth: []
tags:
- name: Promotions
paths:
  /promotions:
    get:
      tags:
      - Promotions
      summary: Get All Promotions
      description: Retrieves a paginated list of all promotions.
      operationId: getPromotions
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - $ref: '#/components/parameters/queryParameterSize'
      - $ref: '#/components/parameters/queryParameterOffset'
      - name: sort
        in: query
        description: The criteria to sort the results. Use the format {sort order}{field name}, where `-` refers to a descending order and `+` refers to an ascending order.
        required: false
        schema:
          type: string
          default: -updatedAt
          enum:
          - -updatedAt
          - +updatedAt
          - -startAt
          - +startAt
          - -endAt
          - +endAt
          - -name
          - +name
      - name: search
        in: query
        description: The keyword to filter the promotions.
        required: false
        schema:
          type: string
          example: BLACK FRIDAY
      responses:
        '200':
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getPromotionsResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/badSizeError'
                - $ref: '#/components/schemas/badSortingError'
                - $ref: '#/components/schemas/missingTenantHeader'
                - $ref: '#/components/schemas/error400'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
    post:
      tags:
      - Promotions
      summary: Create Promotion
      description: Create a promotion to apply to one or more items to increase sales, or to a customer segment to reward existing customers or attract new ones. Promotions are configured with rules that define the promotion type, conditions, and discounts.
      operationId: createPromotion
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/createPromotionRequest'
      responses:
        '201':
          description: Created
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/createPromotionResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/promotionNameExists'
                - $ref: '#/components/schemas/promotionDateError'
                - $ref: '#/components/schemas/promotionBuyOperatorError'
                - $ref: '#/components/schemas/promotionDiscountRequired'
                - $ref: '#/components/schemas/promotionDiscountError'
                - $ref: '#/components/schemas/promotionFixedError'
                - $ref: '#/components/schemas/missingTenantHeader'
                - $ref: '#/components/schemas/error400'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
  /promotions/{promotionId}:
    put:
      tags:
      - Promotions
      summary: Update a Specific Promotion
      description: Updates a specific promotion using the corresponding `promotionId`.
      operationId: updatePromotion
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - name: promotionId
        in: path
        required: true
        description: The promotion ID generated when using the [create promotion](/v3/api-reference/offers/promotions/create-promotion) endpoint.
        schema:
          type: string
          example: 61df12345678900009b7091c
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/updatePromotionRequest'
      responses:
        '200':
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/updatePromotionResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/promotionNameExists'
                - $ref: '#/components/schemas/promotionDateError'
                - $ref: '#/components/schemas/promotionBuyOperatorError'
                - $ref: '#/components/schemas/promotionDiscountRequired'
                - $ref: '#/components/schemas/promotionDiscountError'
                - $ref: '#/components/schemas/promotionFixedError'
                - $ref: '#/components/schemas/promotionExpired'
                - $ref: '#/components/schemas/missingTenantHeader'
                - $ref: '#/components/schemas/error400'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '404':
          description: Not Found
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promotionNotFound'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
    get:
      tags:
      - Promotions
      summary: Get a Specific Promotion
      description: Retrieves a specific promotion using the corresponding `promotionId`.
      operationId: getPromotion
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - in: path
        name: promotionId
        schema:
          type: string
          example: 61df12345678900009b7091c
        required: true
        description: The promotion ID generated when using the [create promotion](/v3/api-reference/offers/promotions/create-promotion) endpoint.
      responses:
        '200':
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getPromotionResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/promotionInvalidId'
                - $ref: '#/components/schemas/missingTenantHeader'
                - $ref: '#/components/schemas/error400'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '404':
          description: Not Found
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promotionNotFound'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
    delete:
      tags:
      - Promotions
      summary: Delete a Specific Promotion
      description: Delete a specific promotion using the corresponding `promotionId`.
      operationId: deletePromotion
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - name: promotionId
        in: path
        required: true
        description: The promotion ID generated when using the [create promotion](/v3/api-reference/offers/promotions/create-promotion) endpoint.
        schema:
          type: string
        example: 61dfc146bf98990009b7091c
      responses:
        '200':
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/deletePromotionResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/promotionDeleteError'
                - $ref: '#/components/schemas/promotionInvalidId'
                - $ref: '#/components/schemas/missingTenantHeader'
                - $ref: '#/components/schemas/error400'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '404':
          description: Not Found
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promotionNotFound'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
  /promotions/{promotionId}/actions/toggle:
    post:
      tags:
      - Promotions
      summary: Enable or Disable a Promotion
      description: Use this endpoint to change the status of a promotion by enabling or disabling it. You can't change the status of a promotion that's currently in the `ACTIVE` state. You can enable promotions that are disabled or disable promotions that haven't yet expired.
      operationId: togglePromotion
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - in: path
        name: promotionId
        schema:
          type: string
          example: 61df12345678900009b7091c
        required: true
        description: The promotion ID generated when using the [create promotion](/v3/api-reference/offers/promotions/create-promotion) endpoint.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/togglePromotionRequest'
      responses:
        '200':
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/togglePromotionResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/promotionDisabledError'
                - $ref: '#/components/schemas/promotionInvalidId'
                - $ref: '#/components/schemas/promotionActiveError'
                - $ref: '#/components/schemas/missingTenantHeader'
                - $ref: '#/components/schemas/error400'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '404':
          description: Not Found
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promotionNotFound'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
  /promotions/{promotionId}/actions/end:
    post:
      tags:
      - Promotions
      summary: End a Promotion
      description: End a specific promotion using the corresponding `promotionId`. To end a promotion, set the `status` to `EXPIRED` and set both the `startAt` and `endAt` dates to the current date.
      operationId: endPromotion
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      - in: path
        name: promotionId
        schema:
          type: string
          example: 61df12345678900009b7091c
        required: true
        description: The promotion ID generated when using the [create promotion](/v3/api-reference/offers/promotions/create-promotion) endpoint.
      responses:
        '200':
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promotionEndResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/promotionIsExpired'
                - $ref: '#/components/schemas/promotionInvalidId'
                - $ref: '#/components/schemas/missingTenantHeader'
                - $ref: '#/components/schemas/error400'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '404':
          description: Not Found
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/promotionNotFound'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
  /promotions/search:
    post:
      tags:
      - Promotions
      summary: Search for Promotions
      description: Use this endpoint to search for promotions based on specified filter conditions.
      operationId: searchPromotions
      security:
      - AuthorizationToken: []
      parameters:
      - $ref: '#/components/parameters/xFabricTenantId'
      - $ref: '#/components/parameters/xFabricChannelId'
      - $ref: '#/components/parameters/xClientId'
      - $ref: '#/components/parameters/xFabricRequestId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/searchPromotionRequest'
      responses:
        '200':
          description: OK
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/searchPromotionResponse'
        '400':
          description: Bad request
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/error400'
                - $ref: '#/components/schemas/invalidSearchFilterField'
                - $ref: '#/components/schemas/invalidPromoState'
                - $ref: '#/components/schemas/invalidFilterOperator'
                - $ref: '#/components/schemas/invalidPromoStackingType'
                - $ref: '#/components/schemas/missingTenantHeader'
        '401':
          description: Unauthorized
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error401'
        '500':
          description: Internal server error
          headers:
            x-fabric-request-id:
              $ref: '#/components/headers/xFabricRequestIdResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error500'
components:
  schemas:
    deletePromotionResponse:
      $ref: '#/components/schemas/promotionResponse'
    promotionNameExists:
      type: object
      description: Promotion name duplicated error
      properties:
        type:
          description: The error code.
          type: string
          example: PROMO_TITLE_EXISTS
        message:
          description: An error message corresponding to the `type`.
          type: string
          example: Promotion name already exists
    promotionBuyOperatorError:
      type: object
      description: Validations for `BUYGET` promotion don't meet the criteria
      properties:
        type:
          description: The error code.
          type: string
          example: BUYOPERATOR_IS_REQUIRED
        message:
          description: An error message corresponding to the `type`.
          type: string
          example: Buy operator is required for BUYGET promotion or coupon
    updatePromotionResponse:
      $ref: '#/components/schemas/promotionResponse'
    promotionTargetProduct:
      type: array
      description: A list of target products for applying the discount.
      minItems: 1
      items:
        type: object
        description: The details of the target products.
        required:
        - type
        - values
        - operator
        properties:
          type:
            type: string
            description: The target type for the promotion.
            enum:
            - SKU
            - CATEGORY
            - ATTRIBUTE
            - PRICE_TYPE
            - COLLECTION
            - PREVIOUS_DISCOUNTS
            example: SKU
          values:
            description: The values corresponding to the selection `type`.
            oneOf:
            - type: string
              description: A list of target products. An asterisk (*) indicates all products are selected; hence, the discount is applied on all products.
              example: '*'
            - type: array
              items:
                oneOf:
                - type: integer
                  format: int32
                  description: A numeric identifier of the target record.
                  example: 10006123
                - type: string
                  description: A non-numeric identifier of the target record.
                  example: 61df12345678900009b7091c
                - type: object
                  description: The merchant-defined attributes associated with the promotion.
                  required:
                  - name
                  - value
                  properties:
                    name:
                      type: string
                      example: couponId
                      description: The merchant-defined `key` for the promotion.
                    value:
                      oneOf:
                      - type: string
                        example: '19822'
                        description: The merchant-defined `value` for the `key`.
                      - type: boolean
                        description: Represents a boolean value.
                        example: true
                      - type: number
                        description: Represents a numeric value.
                        example: 10006123
            - type: integer
              format: int32
              description: Condition numeric identifier
              example: 10006123
          operator:
            description: 'Indicates whether a target product is included or excluded from discounts. The following options are available:

              - `IN`: The target product, with the specified `type` and `value`, is included for the discount to be applied.

              - `NOT_IN`: The target product, with the specified `type` and `value`, is excluded from being discounted.

              - `EQUAL`: The target product will be eligible for the discount if the defined `type` and `value` match the product selection.

              '
            type: string
            enum:
            - IN
            - NOT_IN
            - EQUAL
            - GREATER_THAN
            example: IN
          discountId:
            type: string
            description: Discount ID to link `discount` and `targetProduct`; required for `BUYGET` promotion
            example: '1'
    createPromotionResponse:
      $ref: '#/components/schemas/promotionResponse'
    missingTenantHeader:
      type: object
      description: Tenant header is missing
      properties:
        type:
          description: The error code.
          type: string
          example: TENANT_HEADER_REQUIRED
        message:
          description: An error message corresponding to the `type`.
          type: string
          example: x-fabric-tenant-id header is required
    promotionLimits:
      type: array
      description: Restrictions or conditions that apply to the use of a promotion
      items:
        type: object
        description: Promotion limit detail. Limits for promotions can only be configured at cart level.
        properties:
          type:
            type: string
            description: Promotion limit type
            enum:
            - ORDER
            example: ORDER
          quantity:
            type: integer
            format: int32
            description: Number of times a promotion can be applied in the same cart.
            example: 3
    promotionDeleteError:
      type: object
      description: Only upcoming promotions can be deleted
      properties:
        type:
          description: The error code.
          type: string
          example: PROMO_CANNOT_BE_DELETED
        message:
          description: An error message corresponding to the `type`.
          type: string
          example: Promotion can only be deleted in scheduled status
    invalidSearchFilterField:
      type: object
      description: An error indicating an invalid search.
      properties:
        type:
          description: The error code.
          type: string
          example: INVALID_SEARCH_FILTER_FIELD
        message:
          description: An error message corresponding to the `type`.
          type: string
          example: The search filter field isn't valid.
    promotionNotFound:
      type: object
      description: Promotion not found error
      properties:
        type:
          description: The error code.
          type: string
          example: PROMOTION_NOT_FOUND
        message:
          description: An error message corresponding to the `type`.
          type: string
          example: The promotion you entered doesn't exist
    proximityMessages:
      type: object
      properties:
        threshold:
          type: integer
          minimum: 0
          description: The proximity threshold value. You muse use a value greater than or equal to 0.
          example: 1
        localizedMessages:
          type: array
          items:
            type: object
            properties:
              locales:
                type: array
                items:
                  type: string
                  description: The intended language or target region for the message.
                  example: en-CA
              message:
                type: string
                description: The localized message for the specified locales.
                example: Buy some more to get the discount!
    promotionDateError:
      type: object
      description: Inconsistent start and end dates error
      properties:
        type:
          description: The error code.
          type: string
          example: DATE_ERROR
        message:
          description: Error description
          type: string
          example: An error message corresponding to the `type`.
    promotionMessages:
      type: array
      description: Message description for the promotion
      required:
      - title
      - locales
      - pages
      items:
        type: object
        description: Message description for the promotion
        properties:
          title:
            type: string
            description: Message name
            example: Buy 2 get 1 free
          message:
            type: string
            description: Message description
            example: Offer valid at participating stores through September 5, 2023.
          pages:
            type: array
            description: The types of web pages where the message is displayed.
            items:
              type: string
              description: Page type
              example: PDP
            example:
            - PDP
            - Cart
          locales:
            type: array
            description: The locales in which the promotion message is 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
    promotionResponse:
      type: object
      description: The details of the promotion.
      required:
      - id
      - name
      - startAt
      - endAt
      - status
      - type
      properties:
        id:
          type: string
          description: A 24-character system-generated The promotion ID generated when using the [create promotion](/v3/api-reference/offers/promotions/create-promotion) endpoint.
          example: 6380e7ecb419a30009865fad
        name:
          description: The name of the promotion.
          example: Black Friday Promotion
          type: string
        status:
          type: string
          description: The current status of the promotion.
          enum:
          - ACTIVE
          - SCHEDULED
          - DISABLED
          - EXPIRED
          example: SCHEDULED
        startAt:
          type: string
          format: date-time
          description: The start time of the promotion, in UTC format.
          example: 2019-08-24 14:15:22+00:00
        endAt:
          type: string
          format: date-time
          description: The end time of the promotion, in UTC format.
          example: 2019-08-25 14:15:22+00:00
        type:
          type: string
          description: 'The type of promotion you want to create. The following are the promotion types you can create:

            - `PRODUCT`: A SKU p

# --- truncated at 32 KB (86 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fabric-com/refs/heads/main/openapi/fabric-com-promotions-api-openapi.yml