Cinema deals and offers.
List deals
Returns a HAL-paginated list of Deal objects. Unauthenticated callers, and callers who are not employees of every cinema named in cinemaIds (or an admin), never receive drafts regardless of the isDraft filter -- isDraft is forced to false for them so unpublished deals cannot leak through the public list. Operator fields (position, redemptionLimit, redeemedCount and the notification schedule) are returned only to admins and to employees of the deal's own cinema; every other caller gets the public projection. bookmarkedByUserId must be the authenticated caller's own id -- anything else is a 403.
query Parameters
pageperPagesortorderquerycinemaIdscinemaChainIdscategoriesbenefitTypeschannelsconditionTypesisPermanentisDraftslugExact match on a deal's slug, which is unique per cinema -- for resolving a /deals/{slug} URL in one request. Use query to search.
validOnA date (not a datetime). Folds DealValidity weekday + date-window into one predicate.
partnerIdsmovieIdsshowingTagIdscinemaProductIdsbookmarkedByUserIdhasImageList deals › Responses
A list of Deal objects
Create a deal
Creates a Deal for a cinema. slug is derived from title via Slugify and is not an input. Every cinemaPartner, showingTagIds and products entry must belong to the same cinema; one owned by another cinema is a 400.
Create a deal › Request Body
idtitlesubtitledescriptionslugcategorybenefitTypebenefitAmountCents. Fixed price or amount off, depending on benefitType.
benefitPercentbuyCountpayCountbenefitNoteisPermanentDerived, read-only: true when no validity rule carries a dateFrom or dateTo, so the deal is not bounded in time. A weekday or time-of-day rule leaves a deal permanent, and a deal with no validity rules at all is permanent. Send validity rules without dates to make a deal permanent -- this is not an input.
isDraftimageUrlcreatedDatetimemodifiedDatetimechannelsshowingTagIdsmovieIdsCreate a deal › Responses
Deal was created
Update a deal
Updates a Deal. Each of validities, conditions, channels, showingTagIds, movieIds and products is replace-wholesale: an absent key leaves the existing collection untouched, a key present as [] clears it, and a non-empty array replaces the collection entirely. cinema cannot be changed once set; category can. slug is assigned once at create time and is deliberately NOT recomputed when title changes, so a published deal keeps its public URL. Every cinemaPartner, showingTagIds and products entry must belong to the deal's own cinema; one owned by another cinema is a 400.
path Parameters
dealIdUpdate a deal › Request Body
idtitlesubtitledescriptionslugcategorybenefitTypebenefitAmountCents. Fixed price or amount off, depending on benefitType.
benefitPercentbuyCountpayCountbenefitNoteisPermanentDerived, read-only: true when no validity rule carries a dateFrom or dateTo, so the deal is not bounded in time. A weekday or time-of-day rule leaves a deal permanent, and a deal with no validity rules at all is permanent. Send validity rules without dates to make a deal permanent -- this is not an input.
isDraftimageUrlcreatedDatetimemodifiedDatetimechannelsshowingTagIdsmovieIdsUpdate a deal › Responses
Deal was updated
List cinema deals
Returns a HAL-paginated list of Deal objects scoped to one cinema -- same shape, filters and sort options as GET /deals, minus cinemaIds/cinemaChainIds (the path segment is the single, authoritative scope, so both are ignored if sent). Draft visibility follows the identical rule as the flat route: unauthenticated callers and callers who are not an employee of this cinema (or an admin) never receive drafts. A cinema id that does not exist returns 404, not an empty list. Operator fields and bookmarkedByUserId behave exactly as on the flat route.
path Parameters
cinemaIdquery Parameters
pageperPagesortorderquerycategoriesbenefitTypeschannelsconditionTypesisPermanentisDraftslugExact match on a deal's slug, which is unique per cinema -- for resolving a /deals/{slug} URL in one request. Use query to search.
validOnA date (not a datetime). Folds DealValidity weekday + date-window into one predicate.
partnerIdsmovieIdsshowingTagIdscinemaProductIdsbookmarkedByUserIdhasImageList cinema deals › Responses
A list of Deal objects scoped to one cinema

