Data dictionary¶
Every field defined by the .cart format, in one flat table, keyed by dotted path (array elements use the [] suffix). This is generated from the canonical spec/data-dictionary.json; the JSON Schema remains authoritative for validation.
Profile — core fields are the minimum Core profile; expanded fields are everything else (see spec §2.1). Sensitivity — see spec §8: normal (not PII), personal (GDPR-relevant), sensitive (sensitive PII).
| Path | Type | Req. | Profile | Sensitivity | Description |
|---|---|---|---|---|---|
cart_version |
string | yes | core | normal | Version of this spec the file conforms to ("0.1"). |
id |
string | yes | core | normal | Unique identifier for this cart snapshot (UUID recommended). |
created_at |
string | yes | core | normal | When the cart was captured / exported (ISO 8601 with timezone). |
updated_at |
string | no | expanded | normal | Last modification of this file. |
expires_at |
string | no | expanded | normal | When the captured prices / quote stop being valid, if the merchant states it. |
locale |
string | no | expanded | normal | Locale the cart was presented in (e.g. "he-IL", "en-US"). Helps interpret names and formatting. |
transaction_type |
string | no | expanded | normal | "b2c" (default) or "b2b". When "b2b", the buyer object and both parties' VAT details become relevant. Values: b2c, b2b. |
source |
object | no | expanded | normal | Where and how the cart was captured (provenance). |
source.platform |
string | no | expanded | normal | Ecommerce backend / storefront platform powering the merchant, if known or detected (e.g. "shopify", "woocommerce", "magento", "custom"). |
source.platform_detected |
boolean | no | expanded | normal | true if platform was auto-detected by the capturing agent rather than supplied by a human. |
source.platform_confidence |
number | no | expanded | normal | Detector confidence in platform, 0-1, when platform_detected is true. |
source.cart_url |
string | no | expanded | personal | URL of the live cart, if one exists. May embed a session token. |
source.captured_by |
string | no | expanded | normal | Tool / agent that produced the file (e.g. "cart-exporter-mcp/0.3"). |
source.capture_method |
string | no | expanded | normal | How the cart was captured. Values: browser_agent, api, manual, ocr, other. |
merchant |
object | yes | core | normal | The seller the cart belongs to. |
merchant.name |
string | yes | core | normal | Merchant / vendor display name. |
merchant.legal_name |
string | no | expanded | normal | Registered company name, if different. |
merchant.website |
string | no | expanded | normal | Merchant homepage URL. |
merchant.merchant_id |
string | no | expanded | normal | Merchant identifier (company / VAT registration number, etc.). |
merchant.vat_id |
string | no | expanded | normal | Seller VAT / tax registration number (the seller side of a B2B transaction). |
merchant.vat_issuing_authority |
string | no | expanded | normal | Authority / country that issued the seller's VAT ID (e.g. "IL", "DE"). |
merchant.country |
string | no | expanded | normal | Seller's country; defaults to merchant.address.country when present. |
merchant.compliance |
array |
no | expanded | normal | Data-protection / security standards the merchant attests to (e.g. ["soc2", "iso_27001", "gdpr"]). Useful for (government) procurement. |
merchant.global_merchant_id |
string | no | expanded | normal | Reserved / placeholder for a future universal merchant identifier. Populate only against an agreed scheme. |
merchant.address |
object | no | expanded | normal | Postal address. |
merchant.address.street |
string | no | expanded | normal | Street address. |
merchant.address.city |
string | no | expanded | normal | City. |
merchant.address.region |
string | no | expanded | normal | State / province / region. |
merchant.address.postal_code |
string | no | expanded | normal | Postal / ZIP code. |
merchant.address.country |
string | no | expanded | normal | Country code. |
merchant.contact |
object | no | expanded | personal | Merchant contact details. Treat as personal data when a named person. |
merchant.contact.email |
string | no | expanded | personal | Contact email. |
merchant.contact.phone |
string | no | expanded | personal | Contact phone. |
buyer |
object | no | expanded | personal | The purchasing party (chiefly for B2B). Supplies the buyer side of a PO / RFQ / reverse-charge VAT document. |
buyer.business_name |
string | no | expanded | personal | Legal name of the purchasing organization. |
buyer.vat_id |
string | no | expanded | personal | Buyer's VAT / tax registration number. |
buyer.vat_issuing_authority |
string | no | expanded | personal | Authority / country that issued the buyer's VAT ID. |
buyer.country |
string | no | expanded | personal | Buyer's country. |
buyer.contact |
object | no | expanded | personal | Optional name / email / phone for the purchaser. |
buyer.contact.name |
string | no | expanded | personal | Purchaser name. |
buyer.contact.email |
string | no | expanded | personal | Purchaser email. |
buyer.contact.phone |
string | no | expanded | personal | Purchaser phone. |
currency |
string | yes | core | normal | Currency for all amounts in the file. |
multi_currency |
boolean | no | expanded | normal | false by default. When true, individual items may carry their own currency and exchange-rate fields; totals stay in the top-level currency. |
tax |
object | no | expanded | normal | Cart-level tax context. |
tax.scheme |
string | no | expanded | normal | Tax scheme in effect. Values: vat, sales_tax, none. |
tax.default_rate |
number | no | expanded | normal | Default rate (decimal fraction, 0.18 = 18%) applied to items unless overridden per item. |
tax.prices_include_tax |
boolean | no | expanded | normal | Whether the merchant's displayed prices include tax. |
items |
array | yes | core | normal | Line items. |
items[].sku |
string | conditional | expanded | normal | Merchant SKU / catalog number. Required if the merchant exposes a SKU. |
items[].name |
string | yes | core | normal | Short product name. |
items[].description |
string | no | expanded | normal | Longer description. |
items[].variant |
string | no | expanded | normal | Human-readable variant label (e.g. "Blue / XL"). |
items[].options |
array | no | expanded | normal | Structured variant selections. |
items[].options[].name |
string | no | expanded | normal | Option name (e.g. "Color"). |
items[].options[].value |
string | no | expanded | normal | Option value (e.g. "Blue"). |
items[].quantity |
number | yes | core | normal | Quantity in the cart. |
items[].unit |
string | no | expanded | normal | Unit of measure ("each", "box", "m", "kg"...). Defaults to "each". |
items[].unit_price_excl_tax |
number | yes | expanded | normal | Price per unit before VAT / tax. |
items[].unit_price_incl_tax |
number | yes | core | normal | Price per unit after VAT / tax. |
items[].rrp_excl_tax |
number | no | expanded | normal | Regular / reference price (RRP) per unit before tax, when discounted from a higher list price. |
items[].rrp_incl_tax |
number | no | expanded | normal | Regular / reference price (RRP) per unit after tax. Discount percentage is measured against this. |
items[].currency |
string | no | expanded | normal | Item currency. Only when cart multi_currency is true and it differs from the cart currency. |
items[].exchange_rate |
number | no | expanded | normal | Rate used to convert this item's currency to the cart currency. |
items[].exchange_rate_calculated |
boolean | no | expanded | normal | true if the rate was computed by the producing tool rather than quoted by the merchant. |
items[].tax_rate |
number | no | expanded | normal | Item-level tax rate if it differs from tax.default_rate. |
items[].line_total_excl_tax |
number | yes | expanded | normal | quantity x unit_price_excl_tax (after line discounts). |
items[].line_total_incl_tax |
number | yes | core | normal | Line total after VAT / tax. |
items[].discount |
object | no | expanded | normal | Discount applied to this line (already reflected in line totals). |
items[].discount.description |
string | no | expanded | normal | Human-readable label ("Summer sale", "Contract price"). |
items[].discount.amount |
number | no | expanded | normal | Absolute discount per line, in cart currency. |
items[].discount.percentage |
number | no | expanded | normal | Discount as a decimal fraction of the RRP (0.15 = 15%). |
items[].discount.type |
string | no | expanded | normal | Distinguishes a manually applied discount from an automatic one. Values: automatic, manual, coupon, negotiated, promotion. |
items[].product_url |
string | no | expanded | normal | Canonical product page URL. |
items[].image_url |
string | no | expanded | normal | Product image URL. |
items[].manufacturer |
string | no | expanded | normal | Brand / manufacturer name. |
items[].mpn |
string | no | expanded | normal | Manufacturer part number (distinct from merchant SKU). |
items[].gtin |
string | no | expanded | normal | Barcode (EAN / UPC), when known. Key for cross-vendor comparison. |
items[].availability |
string | no | expanded | normal | Stock availability. Values: in_stock, backorder, preorder, unknown. |
items[].min_order_quantity |
number | no | expanded | normal | Minimum orderable quantity (MOQ), common in B2B. |
items[].lead_time_days |
number | no | expanded | normal | Quoted lead time in days for backordered / made-to-order items. |
items[].price_breaks |
array | no | expanded | normal | Quantity-tiered pricing offered for this item. Essential for B2B comparison and RFQs. |
items[].price_breaks[].min_quantity |
number | yes | expanded | normal | Quantity at which this tier's price applies. |
items[].price_breaks[].unit_price_excl_tax |
number | no | expanded | normal | Per-unit price at this tier, before tax. |
items[].price_breaks[].unit_price_incl_tax |
number | no | expanded | normal | Per-unit price at this tier, after tax. |
items[].notes |
string | no | expanded | normal | Free-text line notes. |
shipping |
object | no | expanded | normal | Shipping methods and destination. |
shipping.ship_to |
object | no | expanded | personal | Destination address (merchant.address shape plus name and address_type). |
shipping.ship_to.name |
string | no | expanded | personal | Recipient name. |
shipping.ship_to.address_type |
string | no | expanded | normal | Affects carrier options and, sometimes, surcharges. Values: residential, business, warehouse, other. |
shipping.ship_to.street |
string | no | expanded | personal | Street address. |
shipping.ship_to.city |
string | no | expanded | personal | City. |
shipping.ship_to.region |
string | no | expanded | personal | State / province / region. |
shipping.ship_to.postal_code |
string | no | expanded | personal | Postal / ZIP code. |
shipping.ship_to.country |
string | no | expanded | personal | Country code. |
shipping.incoterms |
string | no | expanded | normal | Delivery terms for (international) B2B (ICC Incoterms 2020). Values: EXW, FCA, CPT, CIP, DAP, DPU, DDP, FAS, FOB, CFR, CIF. |
shipping.selected_method_id |
string | no | expanded | normal | id of the chosen method from available_methods. |
shipping.available_methods |
array | no | expanded | normal | All methods the merchant offered at capture time. |
shipping.available_methods[].id |
string | no | expanded | normal | Stable identifier within this file (e.g. "courier-48h"). |
shipping.available_methods[].name |
string | no | expanded | normal | Display name ("Courier, 2 business days"). |
shipping.available_methods[].cost_excl_tax |
number | no | expanded | normal | Shipping cost before VAT / tax. |
shipping.available_methods[].cost_incl_tax |
number | no | expanded | normal | Shipping cost after VAT / tax. |
shipping.available_methods[].estimated_delivery |
string | no | expanded | normal | Free-text or ISO 8601 estimate. |
totals |
object | yes | core | normal | Cart-level monetary totals (all in currency). |
totals.items_subtotal_excl_tax |
number | yes | expanded | normal | Sum of line totals before tax, before shipping. |
totals.items_subtotal_incl_tax |
number | yes | expanded | normal | Sum of line totals after tax, before shipping. |
totals.shipping_excl_tax |
number | no | expanded | normal | Cost of the selected shipping method, before tax. |
totals.shipping_incl_tax |
number | no | expanded | normal | Cost of the selected shipping method, after tax. |
totals.discount_total |
number | no | expanded | normal | Cart-level discounts (already reflected in the grand total). |
totals.tax_total |
number | yes | expanded | normal | Total VAT / tax across items and shipping. |
totals.grand_total |
number | yes | core | normal | Final amount: items + shipping - discounts, tax included. |
totals.amount_pending_payment |
number | yes | core | normal | Amount currently awaiting payment (usually equals grand_total; may differ with deposits / partial payments). |
payment |
object | no | expanded | normal | Payment status / expectations. |
payment.status |
string | no | expanded | normal | Lifecycle status of the cart / order. Values: cart, quote_requested, po_issued, awaiting_payment, partially_paid, paid. |
payment.method |
string | no | expanded | normal | The payment method the buyer has selected or intends to use (a single value drawn from methods_accepted). |
payment.terms |
string | no | expanded | normal | Payment terms if known (e.g. "net_30", "net_60", "prepaid", "cod"). |
payment.methods_accepted |
array |
no | expanded | normal | Methods the merchant offers (e.g. ["credit_card", "bank_transfer", "purchase_order"]). |
payment.reference |
string | no | expanded | normal | Quote / PO / invoice reference once one exists. |
payment.card |
object | no | expanded | sensitive | The payment card the buyer intends to use. Never store full PAN, CVV/CVC, PIN, or full expiry. |
payment.card.cardholder_name |
string | no | expanded | sensitive | Name printed on the card. |
payment.card.is_business_card |
boolean | no | expanded | normal | true if a business / corporate card, false for a personal card. |
payment.card.brand |
string | no | expanded | normal | Card network if known (e.g. "visa", "mastercard", "amex"). |
payment.card.last4 |
string | no | expanded | sensitive | Last four digits, when a masked reference is needed to disambiguate which card. |
notes |
string | no | expanded | normal | Free-text notes (human or agent authored). |
extensions |
object | no | expanded | normal | Namespaced vendor / tool-specific data. Consumers must preserve content they don't understand when re-writing a file. |