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