Shoes catalog product shoes.product@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
- Version
- 1.0.0
- Owner
- shoes
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Schema
https://openvibe.network/contracts/shoes/product.v1.json
shoes.product@1: a shoes, socks, laces, care, insoles or kids catalog line with source-cited facts. Offers are attached separately so catalogs can be shared without duplicating prices.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
id | string | yes |
| |
kind | enum | yes |
| |
title | string | yes |
| |
brand | string | null | yes |
| |
model | string | null |
| ||
url | string | null |
| ||
image | string | null |
| ||
sizes | array of string |
| ||
materials | array of string |
| ||
uses | array of string |
| ||
source | https://openvibe.network/contracts/shoes/product.v1.json#/$defs/source | yes | ||
checked_at | string | yes |
| |
facts | https://openvibe.network/contracts/shoes/product.v1.json#/$defs/fact | yes |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
Valid: sock
{
"id": "darn-tough-hiker-micro-crew",
"kind": "socks",
"title": "Hiker Micro Crew Socks",
"brand": "Darn Tough",
"model": null,
"url": "https://darntough.com/products/hiker-micro-crew",
"image": null,
"sizes": [
"S",
"M",
"L"
],
"materials": [
"merino wool"
],
"uses": [
"hiking"
],
"source": {
"name": "Darn Tough",
"url": "https://darntough.com/pages/size-chart"
},
"checked_at": "2026-11-09T12:00:00Z",
"facts": [
{
"name": "sock size chart",
"value": "shoe size maps to a brand sock-size range",
"source": {
"name": "Darn Tough",
"url": "https://darntough.com/pages/size-chart"
}
}
]
}Rejected: unknown-kind
{
"id": "example-product",
"kind": "raffle",
"title": "Example",
"brand": null,
"source": {
"name": "Example",
"url": "https://example.com"
},
"checked_at": "2026-11-09T12:00:00Z",
"facts": []
}Validate
const contracts = require('openvibe-contracts');
contracts.validate('shoes.product@1', value); // { valid, errors: [{ path, message }] }