Skip to main content

C2A-02 Offers

Resolves the current set of bundles to present to a specific customer in a specific context. The Offer engine merges storefront catalog, eligibility, active campaigns, channel/platform, and customer state into a single PurchaseOffer.

The output of an Offer call is what you feed into the Checkout endpoint.

Concepts

Two flavors:

  • Purchase Offer — full, transactable offer: bundles with calculated prices and identifiers you can pass straight to checkout.
  • Showcase Offer — render-only catalog projection (no purchase intent yet). Use for marketing / discovery surfaces where the customer has not been resolved or no transaction is expected.

Base Route

/api/c2a/offer

Same auth and headers as the rest of C2A (x-api-key, x-tn, Content-Type: application/json).

Endpoints

#MethodPathPurpose
C2A-02-01POST/api/c2a/offer/bundlesGet Bundles (Purchase Offer)
C2A-02-02POST/api/c2a/offer/showcaseGet Showcase Offer

Error Statuses

messageCodeMeaning
SUCCESSOffer resolved.
NO_OFFER_FOUNDEngine found no eligible bundle for the supplied context.
INVALID_PROMOTION_CODEPromotion code not recognized or expired.
STOREFRONT_NOT_FOUNDThe supplied storefrontUrn does not belong to this tenant.
OFFER_EXPIREDOffer cache hit but past expiresAt.
OFFER_NOT_PURCHASABLEShowcase identifier was submitted to checkout.

Source

  • Controller: Azotte.Api.Gateway.Controllers.C2A.C2A_02_OfferController
  • Service: Azotte.Offers.Services.IOfferServiceC2A
  • DTOs: Azotte.Offers.Dto/*, Azotte.Business.Offers/*
  • Postman: documents/PostmanSamples/C2A API.postman_collection.json