Source service: src/app/modules/promotions/services/promotion.service.ts Response model: src/app/modules/promotions/models/promotion.type.ts
| # | Method | Endpoint | Service method |
|---|---|---|---|
| 1 | GET |
/app/promotion |
getPromotions() |
| 2 | GET |
/app/promotion/tags/{tag} |
getPromotionListByTag() |
| 3 | POST |
/app/promotion/by-ids |
getPromotionsByIds() |
GET /app/promotion — getPromotions()Sent as query string. Any param whose value is falsy ('', 0, null, undefined) is stripped before the request is dispatched.
| Param | Default | Type | Notes |
|---|---|---|---|
searchText |
'' |
string | Free-text search |
promotionType |
'' |
string | Comes from arg promotionTypeId |
PartnerID |
'' |
string | Capital-cased on the wire |
latitude |
'' |
number | string | |
longitude |
'' |
number | string | |
categories |
'' |
string | Comma-separated category IDs |
pageSize |
24 |
number | 0 would be stripped by the falsy check |
paginationToken |
'' |
string | Cursor for next page |
sortExpression |
'' |
string | |
promotionMetaTagsId |
'' |
string | |
regionIDs |
'' |
string | Comma-separated region IDs |
GET /app/promotion/tags/{tag} — getPromotionListByTag()tag (slug, e.g. top-cliqs, cliqit-favourites)getPromotions() above (same 11 params, same defaults, same falsy-strip behaviour).POST /app/promotion/by-ids — getPromotionsByIds()JSON body:
| Field | Source arg | Notes |
|---|---|---|
ids |
combinedIds |
Comma-separated promotion IDs |
sortType |
sortBy |
Sort key |
interface PromotionsResponse {
entity: Promotion[];
paginationToken: string;
message: string;
status: boolean;
}
interface Promotion {
id: string;
activityName: string;
landmarkName: string;
latitude: number;
longitude: number;
category: string;
rating: string;
distance: string;
priceRange: string;
fromPrice: number;
toPrice: number;
discount: number;
imageURL: string;
description: string;
externalUrl: string;
promotionCode: string;
isInWishList?: boolean;
promotionType: string;
promotionTypeName: string;
promotionName: string;
promotionCouponType: string;
termsAndConditions: string;
shortDescription: string;
networkName: string;
promotionCategories: { id: string; name: string }[];
ageRestricted: boolean;
tags: { id: string; name: string }[];
tagIDs: string;
isPromotionCodeRequired: boolean;
slug: string;
regions: { id: string; name: string; slug: string }[];
excerpt: string;
}
| Field | Where it is used |
|---|---|
id |
Track-by, wishlist ops, navigation (everywhere) |
slug |
Detail-page navigation |
activityName |
Grid label, detail title, map info window |
shortDescription |
Grid heading, search result heading, detail offer text |
description |
Detail "Description" tab; one-line description pipe |
termsAndConditions |
Detail "Offer Terms" tab |
excerpt |
Discount / promo box text on the grid card |
imageURL |
Grid card, detail image, search thumbnail, map info window |
landmarkName |
Image alt text, map info window |
latitude |
Map marker positioning |
longitude |
Map marker positioning |
regions |
Region name display on grid card |
fromPrice |
Price-range display on grid |
toPrice |
Price-range display on grid |
category |
promotion-menu-name pipe lookup |
promotionCategories |
promotion-menu-name pipe lookup |
tags |
promotion-menu-name pipe lookup |
promotionType |
promotion-menu-name pipe lookup |
promotionTypeName |
Routing decision (Coupon vs Competition vs External), fallback label |
promotionCouponType |
Coupon modal type (unique vs shared) |
isPromotionCodeRequired |
"Redeem" vs "Go to offer" button choice |
networkName |
External-redirect handling |
ageRestricted |
Age-gate before navigation |
isInWishList |
Wishlist button state |
promotionCode |
Defined; not actively read in frontend code paths reviewed |
These can be candidates for removal from the API response if the payload is being trimmed:
ratingdistancepriceRangediscountexternalUrlpromotionNamepromotionCodetagIDs