98 lines
2.2 KiB
JSON
98 lines
2.2 KiB
JSON
{
|
||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"_slug": {
|
||
"description": "Entry identifier (URL slug / filename without extension)",
|
||
"type": "string"
|
||
},
|
||
"category": {
|
||
"description": "Product category",
|
||
"enum": [
|
||
"electronics",
|
||
"clothing",
|
||
"books",
|
||
"food",
|
||
"other"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"created_at": {
|
||
"format": "date-time",
|
||
"readOnly": true,
|
||
"type": "string"
|
||
},
|
||
"description": {
|
||
"description": "Detailed product description",
|
||
"maxLength": 5000,
|
||
"type": "string"
|
||
},
|
||
"images": {
|
||
"description": "Product image URLs (1–10)",
|
||
"items": {
|
||
"description": "Product image",
|
||
"oneOf": [
|
||
{
|
||
"description": "Reference (slug) to collection 'img'",
|
||
"type": "string"
|
||
},
|
||
{
|
||
"properties": {
|
||
"description": {
|
||
"description": "Alt text / description",
|
||
"type": "string"
|
||
},
|
||
"src": {
|
||
"description": "Image URL",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"src"
|
||
],
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"maxItems": 10,
|
||
"minItems": 1,
|
||
"type": "array"
|
||
},
|
||
"in_stock": {
|
||
"default": true,
|
||
"description": "Whether the product is in stock",
|
||
"type": "boolean"
|
||
},
|
||
"price": {
|
||
"description": "Price in EUR",
|
||
"minimum": 0.0,
|
||
"type": "number"
|
||
},
|
||
"rating": {
|
||
"description": "Average customer rating (null if unrated)",
|
||
"maximum": 5.0,
|
||
"minimum": 0.0,
|
||
"nullable": true,
|
||
"type": "number"
|
||
},
|
||
"sku": {
|
||
"description": "Stock Keeping Unit (e.g. EL-1234, BOOK-00042)",
|
||
"pattern": "^[A-Z]{2,4}-\\d{3,6}$",
|
||
"type": "string"
|
||
},
|
||
"title": {
|
||
"description": "Product name",
|
||
"maxLength": 200,
|
||
"minLength": 1,
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"_slug",
|
||
"title",
|
||
"sku",
|
||
"price",
|
||
"category"
|
||
],
|
||
"type": "object"
|
||
} |