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
| # | Method | Path | Purpose |
|---|---|---|---|
| C2A-02-01 | POST | /api/c2a/offer/bundles | Get Bundles (Purchase Offer) |
| C2A-02-02 | POST | /api/c2a/offer/showcase | Get Showcase Offer |
Error Statuses
messageCode | Meaning |
|---|---|
SUCCESS | Offer resolved. |
NO_OFFER_FOUND | Engine found no eligible bundle for the supplied context. |
INVALID_PROMOTION_CODE | Promotion code not recognized or expired. |
STOREFRONT_NOT_FOUND | The supplied storefrontUrn does not belong to this tenant. |
OFFER_EXPIRED | Offer cache hit but past expiresAt. |
OFFER_NOT_PURCHASABLE | Showcase 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