Back to Schemas
Galileo First Sale Event Schema
Standard
v1.0.0
https://schemas.galileoprotocol.io/events/sale.schema.jsonJSON Schema
Galileo First Sale Event Schema
TransactionEvent for initial retail sale. Captures the first purchase of a new product from brand/retailer to customer, including warranty activation, purchase channel, and ownership transfer. Customer identity is anonymized per GDPR requirements.
https://schemas.galileoprotocol.io/events/sale.schema.json{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://schemas.galileoprotocol.io/events/sale.schema.json",
"title": "Galileo First Sale Event Schema",
"description": "TransactionEvent for initial retail sale. Captures the first purchase of a new product from brand/retailer to customer, including warranty activation, purchase channel, and ownership transfer. Customer identity is anonymized per GDPR requirements.",
"allOf": [
{
"$ref": "event-base.schema.json"
}
],
"type": "object",
"required": [
"@context",
"type",
"eventID",
"eventTime",
"eventTimeZoneOffset",
"action",
"bizStep",
"disposition",
"readPoint",
"epcList",
"bizTransactionList",
"sourceList",
"destinationList",
"galileo:warrantyActivation",
"galileo:purchaseChannel"
],
"properties": {
"type": {
"const": "TransactionEvent"
},
"action": {
"const": "ADD",
"description": "ADD indicates new ownership assignment"
},
"bizStep": {
"const": "cbv:BizStep-retail_selling",
"description": "Retail selling step marks sale transaction"
},
"disposition": {
"const": "cbv:Disp-retail_sold",
"description": "Product enters retail_sold state"
},
"epcList": {
"type": "array",
"items": {
"type": "string",
"pattern": "^https://id\\.gs1\\.org/01/\\d{14}/21/[A-Za-z0-9\\-\\.]{1,20}$"
},
"minItems": 1,
"maxItems": 1,
"description": "Single EPC for the sold product"
},
"bizTransactionList": {
"type": "array",
"description": "Business transaction references including purchase order",
"minItems": 1,
"items": {
"type": "object",
"required": [
"type",
"bizTransaction"
],
"properties": {
"type": {
"type": "string",
"description": "CBV business transaction type",
"enum": [
"cbv:BTT-po",
"cbv:BTT-inv",
"cbv:BTT-desadv"
]
},
"bizTransaction": {
"type": "string",
"description": "Transaction identifier URN (invoice number, PO number)",
"pattern": "^urn:"
}
}
},
"contains": {
"type": "object",
"properties": {
"type": {
"const": "cbv:BTT-po"
}
},
"required": [
"type"
]
}
},
"sourceList": {
"type": "array",
"description": "Selling party (brand or retailer)",
"minItems": 1,
"items": {
"type": "object",
"required": [
"type",
"source"
],
"properties": {
"type": {
"type": "string",
"const": "cbv:SDT-owning_party"
},
"source": {
"type": "string",
"description": "Brand or retailer DID",
"pattern": "^did:galileo:(brand|retailer):[a-z0-9\\-]{1,80}$"
}
}
}
},
"destinationList": {
"type": "array",
"description": "Buying party (anonymized customer)",
"minItems": 1,
"items": {
"type": "object",
"required": [
"type",
"destination"
],
"properties": {
"type": {
"type": "string",
"const": "cbv:SDT-owning_party"
},
"destination": {
"type": "string",
"description": "Anonymized customer DID (GDPR-compliant hash)",
"pattern": "^did:galileo:customer:anon-[a-f0-9]{64}$"
}
}
}
},
"galileo:warrantyActivation": {
"type": "object",
"description": "Warranty activation details",
"required": [
"startDate",
"duration",
"termsUrl"
],
"properties": {
"startDate": {
"type": "string",
"format": "date",
"description": "Warranty start date (typically purchase date)"
},
"duration": {
"type": "string",
"description": "Warranty duration in ISO 8601 format",
"pattern": "^P(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?$"
},
"endDate": {
"type": "string",
"format": "date",
"description": "Calculated warranty end date"
},
"termsUrl": {
"type": "string",
"format": "uri",
"description": "URL to warranty terms and conditions"
},
"warrantyType": {
"type": "string",
"description": "Type of warranty provided",
"enum": [
"manufacturer",
"extended",
"lifetime",
"limited"
]
},
"warrantyNumber": {
"type": "string",
"description": "Warranty certificate number"
},
"coverageRegions": {
"type": "array",
"description": "Regions where warranty is valid (ISO 3166-1 alpha-3)",
"items": {
"type": "string",
"pattern": "^[A-Z]{3}$"
}
},
"internationalCoverage": {
"type": "boolean",
"description": "Whether warranty is valid internationally",
"default": true
}
}
},
"galileo:purchaseChannel": {
"type": "string",
"description": "Channel through which sale occurred",
"enum": [
"boutique",
"online",
"authorized_retailer",
"department_store",
"duty_free",
"private_client",
"vip_event"
]
},
"galileo:retailLocation": {
"type": "object",
"description": "Retail location details (city level for privacy)",
"properties": {
"storeId": {
"type": "string",
"description": "Store identifier"
},
"storeName": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"retailerDID": {
"type": "string",
"pattern": "^did:galileo:retailer:[a-z0-9\\-]{1,80}$"
}
}
},
"galileo:salesAssociate": {
"type": "string",
"description": "Pseudonymous sales associate identifier",
"pattern": "^did:galileo:associate:[a-z0-9\\-]{1,80}$"
},
"galileo:giftPurchase": {
"type": "boolean",
"description": "Whether purchased as a gift (affects warranty registration)",
"default": false
},
"galileo:giftWrapping": {
"type": "boolean",
"description": "Whether gift wrapping was provided"
},
"galileo:personalization": {
"type": "object",
"description": "Any personalization applied at point of sale",
"properties": {
"type": {
"type": "string",
"enum": [
"engraving",
"hot_stamping",
"monogram",
"none"
]
},
"content": {
"type": "string",
"description": "Personalization content (initials, date, etc.)"
},
"location": {
"type": "string",
"description": "Where on product personalization was applied"
}
}
},
"galileo:paymentMethod": {
"type": "string",
"description": "Payment method category (no financial details)",
"enum": [
"card",
"cash",
"wire_transfer",
"financing",
"crypto",
"store_credit"
]
},
"galileo:receiptHash": {
"type": "string",
"description": "SHA-256 hash of receipt document for proof of purchase",
"pattern": "^[a-f0-9]{64}$"
},
"galileo:productDID": {
"type": "string",
"pattern": "^did:galileo:(01|8006|8010|253):\\d{8,14}(:21:[A-Za-z0-9\\-\\.]{1,20})?$"
}
},
"examples": [
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld",
"https://vocab.galileoprotocol.io/context/galileo.jsonld"
],
"type": "TransactionEvent",
"eventID": "ni:///sha-256;f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2?ver=CBV2.0",
"eventTime": "2024-03-20T15:45:00.000Z",
"eventTimeZoneOffset": "+01:00",
"action": "ADD",
"bizStep": "cbv:BizStep-retail_selling",
"disposition": "cbv:Disp-retail_sold",
"readPoint": {
"id": "urn:epc:id:sgln:3014178.00100.0",
"galileo:facilityDID": "did:galileo:facility:hermes-faubourg"
},
"epcList": [
"https://id.gs1.org/01/09506000134352/21/HK2024A001"
],
"bizTransactionList": [
{
"type": "cbv:BTT-po",
"bizTransaction": "urn:epc:id:gdti:3014178.00001.INV2024032001"
},
{
"type": "cbv:BTT-inv",
"bizTransaction": "urn:epc:id:gdti:3014178.00001.REC2024032001"
}
],
"sourceList": [
{
"type": "cbv:SDT-owning_party",
"source": "did:galileo:brand:hermes"
}
],
"destinationList": [
{
"type": "cbv:SDT-owning_party",
"destination": "did:galileo:customer:anon-a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2"
}
],
"galileo:warrantyActivation": {
"startDate": "2024-03-20",
"duration": "P2Y",
"endDate": "2026-03-20",
"termsUrl": "https://www.hermes.com/warranty-terms",
"warrantyType": "manufacturer",
"warrantyNumber": "HW-2024-08472",
"internationalCoverage": true
},
"galileo:purchaseChannel": "boutique",
"galileo:retailLocation": {
"storeId": "FSG-001",
"storeName": "Hermes Faubourg Saint-Honore",
"city": "Paris",
"country": "FRA",
"retailerDID": "did:galileo:retailer:hermes-faubourg"
},
"galileo:salesAssociate": "did:galileo:associate:paris-8721",
"galileo:giftPurchase": false,
"galileo:personalization": {
"type": "hot_stamping",
"content": "M.D.",
"location": "interior flap"
},
"galileo:paymentMethod": "card",
"galileo:receiptHash": "b5bb9d8014a0f9b1d61e21e796d78dcc1ae0c12f89ca3b4a5f5e9c3f28b0d6a1",
"galileo:productDID": "did:galileo:01:09506000134352:21:HK2024A001"
}
]
}