This example provides a general overview of what a supply chain record may include. It is not exhaustive of possibilities and many items are optional.
{
"@context": "https://restfulchain.com/voc1/",
"@id": "https://rc.example.com/rc/gs1/01/01234567890128",
"@type": "rc1:RestfulchainSupply",
"rc1:dateModifiedTo": null,
"rc1:modifiedToURI": null,
"rc1:dateDeleted": null,
"rc1:digestValue": "SHA256 hash of the entire rc1:content object, including input hashes",
"rc1:inventoryLevel": "Default approach to handle inventory levels"**
"rc1:content": {
"@context": [
"https://restfulchain.com/voc1/",
"https://gs1.org/voc/"
],
"@id": "https://rc.example.com/rc/gs1/01/01234567890128",
"@type": "gs1:Offer",
"rc1:dateCreated": "2023-04-01 15:31Z",
"rc1:modifiedFromURI": null,
"rc1:modifiedFromDigestValue": "SHA256 hash matching (verified) of modifiedFromURI URI's rc1:digestValue",
"rc1:nonce": "A453B537C363D45E483F",
"gs1:availabilityStarts": "2023-04-01 15:31Z",
"gs1:availabilityEnds": "2024-12-31 23:59Z",
"gs1:seller": {
"@type": "gs1:Organization",
"gs1:organizationName": "Seller Name",
"gs1:logo": "https://seller.com/logo.jpg",
"gs1:address": {
"@type": "gs1:PostalAddress",
"gs1:streetAddress": "1234 Street Name; include all PostalAddress Fields"
},
"gs1:geo": {
"@type": "gs1:GeoCoordinates",
"gs1:latitude": "Seller Latitude",
"gs1:longitude": "Seller Longitude"
}
},
"gs1:itemOffered": {
"@id": "https://rc.example.com/rc/gs1/01/01234567890128/itemOffered",
"@type": "gs1:Product",
"gs1:gtin": "01234567890128",
"gs1:productName": "Example Product",
"gs1:image": "https://example.com/product-image.jpg",
"gs1:productDescription": "Detailed description of the product.",
"gs1:hasBatchLotNumber": "BATCH2023A",
"gs1:productionDate": "2023-04-01",
"gs1:expirationDate": "2024-12-31",
"gs1:manufacturer": {
"@type": "gs1:Organization",
"gs1:organizationName": "Manufacturer Name",
"gs1:logo": "https://example.com/logo.jpg",
"gs1:address": {
"@type": "gs1:PostalAddress",
"gs1:streetAddress": "1234 Street Name; include all PostalAddress Fields"
},
"gs1:geo": {
"@type": "gs1:GeoCoordinates",
"gs1:latitude": "Manufacturer Latitude",
"gs1:longitude": "Manufacturer Longitude"
}
},
"gs1:certification": [
{
"@type": "gs1:CertificationDetails",
"gs1:certificationType": "Lab Test Result",
"gs1:certificationAgency": "Certifying Organization Name",
"gs1:certificationURI": "https://certdom.com/info/01234567890128",
"rc1:uriType": "rc1:Restfulchain",
"rc1:uriDigestValue": "SHA256 hash matching (verified) of this URI's rc1:digestValue"
}
],
"rc1:input": [
{
"@id": "https://rc.acme.com/rc/gs1/01/01234567890128",
"@type": "gs1:Product",
"rc1:uriType": "rc1:Restfulchain",
"rc1:uriDigestValue": "SHA256 hash matching (verified) of this @id's rc1:digestValue",
"gs1:productName": "Input Product 1",
"gs1:gtin": "09876543210987",
"gs1:hasBatchLotNumber": "BATCH1A",
"gs1:expirationDate": "2025-06-30",
"gs1:productionDate": "2023-01-20",
"gs1:manufacturer": {
"@type": "gs1:Organization",
"gs1:organizationName": "Input Supplier 1",
"gs1:address": {
"@type": "gs1:PostalAddress",
"gs1:streetAddress": "Country of Origin 1; include all PostalAddress Fields"
},
"gs1:geo": {
"@type": "gs1:GeoCoordinates",
"gs1:latitude": "Input Manufacturer Latitude",
"gs1:longitude": "Input Manufacturer Longitude"
}
},
"gs1:certification": [
{
"@type": "gs1:CertificationDetails",
"gs1:certificationType": "Lab Test Result for Input 1",
"gs1:certificationAgency": "Certifying Organization for Input 1",
"gs1:certificationURI": "https://certdom.com/cert-info/09876543210987.pdf",
"rc1:uriType": "Other",
"rc1:uriEncodingFormat": "application/pdf",
"rc1:uriDigestValue": "SHA256 hash matching (verified) of this URI's HTTP Body"
}
]
}
]
}
},
"gs1:priceSpecification": [
{
"@type": "gs1:PriceSpecification",
"gs1:priceCurrency": "USD",
"gs1:price": "19.99",
"gs1:eligibleQuantityMaximum": 99
},
{
"@type": "gs1:PriceSpecification",
"gs1:priceCurrency": "USD",
"gs1:price": "17.99",
"gs1:eligibleQuantityMinimum": 100,
"gs1:eligibleQuantityMaximum": 499
},
{
"@type": "gs1:PriceSpecification",
"gs1:priceCurrency": "USD",
"gs1:price": "15.99",
"gs1:eligibleQuantityMinimum": 500
}
]
}
Location of Inventory Data**
- Default approach (Recommended) : By default, inventory levels should be stored in the RESTfulChain header. This allows inventory updates without creating new content records
- Immutable History Approach : For scenarios requiring verified inventory history, inventory data can be stored in the content block.This allows to creates an immutable record of inventory changes