schema.beckn.ioSearch schemas…

RetailCommitment

Canonical term page (persistent IRI). Versioned resource URLs are listed below for easy copy/paste.

Canonical IRI

https://schema.beckn.io/RetailCommitment

Developer URLs

RetailCommitment Schema Pack v2.1

Overview

RetailCommitment is a Beckn v2.1 schema pack that declares **per-commitment line-item details** for retail contracts. This is a **NEW schema introduced in v2.1** that did not exist in v2.0.

In v2, per-commitment fields (resourceId, lineId, offerId, quantity, price, specialInstructions) were awkwardly scattered across domain-specific items like FoodAndBeverageItem. In v2.1, they are consolidated into a dedicated, domain-agnostic CommitmentAttributes schema that can attach to any Commitment entity.

The schema enables providers and buyers to specify:

  • **Line-item references** within contracts
  • **Resource and offer associations** for traceability
  • **Quantity and unit specifications** (EA, KG, L, etc.)
  • **Per-line pricing** details
  • **Special handling instructions** (item-level buyer notes)

Attachment Points

This schema attaches to the following Beckn v2.0 core entities via the commitmentAttributes container:

  • **Commitment**: Per-commitment execution details
  • **LineItem**: Cart line item attributes
  • **CartItem**: Shopping cart item specifications
  • **OrderItem** (legacy): Item-level order details

Schema Structure

Design Rationale

Consolidation from v2 Domain-Specific Models

**Problem in v2**: Commitment line-item attributes were embedded in domain-specific resource types:

  • FoodAndBeverageItem: {resourceId, lineId, offerId, quantity, price}
  • HomeAndKitchenItem: similar scattered fields
  • Other resource types: inconsistent structures

This made it difficult to:

  • Build generic cart/order management systems
  • Validate and manipulate line items uniformly
  • Query or filter by line-level criteria

**Solution in v2.1**: Extract these fields into a dedicated, domain-agnostic CommitmentAttributes schema that:

  • Attaches to any Commitment/LineItem/CartItem
  • Provides consistent structure across all domains
  • Enables uniform processing and validation
  • Maintains backward compatibility (old fields in resource types still valid for v2.0 systems)

Field Semantics

**lineId**: Unique identifier within the parent contract. Examples:

  • "LINE001", "ITEM_1", "line-uuid-1234"
  • Used for line-by-line order tracking, amendments, and cancellations

**resourceId**: Reference to the Resource (catalog item) being committed. Enables:

  • Linking back to inventory/catalog for stock checks
  • Fetching resource metadata (description, images, reviews)
  • Audit trails and traceability

**offerId**: Reference to the specific Offer under which the commitment was made. Enables:

  • Offer-specific pricing verification
  • Promotion tracking (which offer was used)
  • Time-bound offer validation (did offer expire?)
  • Multi-offer scenarios (different items from different offers)

**quantity**: Separate unitCode and unitQuantity provide precision:

  • unitCode: "KG", unitQuantity: 2.5 (2.5 kg)
  • unitCode: "BOX", unitQuantity: 10 (10 boxes)
  • Supports decimal quantities (useful for produce, liquids)

**price**: References core PriceSpecification:

  • currency: "INR", amount: "500" (base price)
  • estimatedValue: "485-515" (range for variable items)
  • maximumValue: "550" (cap for open-ended services)

**specialInstructions**: Per-item buyer notes:

  • Food: "no onions", "extra hot", "gluten-free"
  • Delivery: "side entrance", "before 5pm"
  • General: "gift wrap", "fragile", "keep separate"

Non-Goals

This schema does **not**:

  • Store commitment fulfillment state (see Fulfillment)
  • Define inventory management (see Resource schema)
  • Specify pricing algorithms or discount rules (those belong in Offer)
  • Model payment allocation across line items (see Payment)
  • Track order modifications/amendments (see Contract state)
  • Enforce tax calculations or compliance (provider responsibility)

Upstream Candidates

Future enhancement opportunities for v2.2+:

1. **Tax Breakdown**: taxDetails: {taxType: enum, taxRate: number, taxAmount: number} 2. **Discount Application**: discounts: array of {discountId, discountType, amount, appliedAt} 3. **Substitution Rules**: substitutionAllowed: boolean, preferredSubstitutes: array<resourceId> 4. **Allergen Warnings**: allergens: array, allergenWarningRequired: boolean 5. **Packaging Preferences**: packagingType: enum, packagingSeparation: boolean 6. **Warranty/Guarantee**: warrantyId: string, warrantyTerms: {duration, coverage} 7. **Serial/Batch Tracking**: serialNumber: string, batchId: string, mfgDate: date 8. **Expiry/Shelf-Life**: expiryDate: date-time, shelfLife: duration 9. **Compliance Flags**: customsDeclarable: boolean, hsCode: string 10. **Return/Exchange**: returnable: boolean, returnWindow: duration