{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://example.com/schemas/blog.json", "title": "Blog Post", "type": "object", "additionalProperties": false, "required": [ "contentTypeSlug", "title", "slug", "status", "content", "languageCode", "isDefault" ], "properties": { "contentTypeSlug": { "type": "string", "enum": ["blog"] }, "title": { "type": "string", "minLength": 1, "maxLength": 200 }, "slug": { "type": "string", "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$", "minLength": 3, "maxLength": 200 }, "status": { "type": "string", "enum": ["planned", "draft", "scheduled", "published", "archived"] }, "content": { "type": "object", "additionalProperties": false, "required": [ "excerpt", "content", "publishDate", "author", "tags", "meta_title", "meta_description" ], "properties": { "excerpt": { "type": "string", "minLength": 1 }, "content": { "type": "string" }, "publishDate": { "type": "string", "format": "date" }, "author": { "type": "string", "minLength": 1 }, "tags": { "type": "array", "items": { "type": "string", "minLength": 1 }, "uniqueItems": false }, "meta_title": { "type": "string", "minLength": 1 }, "meta_description": { "type": "string", "minLength": 1 } } }, "languageCode": { "type": "string", "pattern": "^[a-z]{2}(?:-[A-Z]{2})?$" }, "isDefault": { "type": "boolean" }, "id": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{3,200}$" }, "translation_group_id": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{3,200}$" }, "lifecycle": { "type": "object", "additionalProperties": false, "properties": { "state": { "type": "string", "enum": ["planned", "draft", "scheduled", "published", "archived"] }, "scheduled_at": { "type": "string", "format": "date-time" }, "published_at": { "type": "string", "format": "date-time" }, "timezone": { "type": "string", "minLength": 1 } } }, "seo": { "type": "object", "additionalProperties": false, "properties": { "canonical": { "type": "string", "format": "uri" }, "og_title": { "type": "string" }, "og_description": { "type": "string" }, "og_image": { "$ref": "_defs.json#/$defs/imageAsset" }, "twitter_card": { "type": "string", "enum": ["summary", "summary_large_image"] }, "json_ld": { "type": "object", "additionalProperties": true } } }, "taxonomy": { "type": "object", "additionalProperties": false, "properties": { "categories": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "series": { "type": "string" }, "featured": { "type": "boolean" }, "pin_until": { "type": "string", "format": "date-time" } } }, "relations": { "type": "object", "additionalProperties": false, "properties": { "related_services": { "type": "array", "items": { "type": "string" }, "uniqueItems": true }, "related_posts": { "type": "array", "items": { "type": "string" }, "uniqueItems": true } } }, "sources": { "type": "array", "items": { "$ref": "_defs.json#/$defs/source" } }, "assets": { "type": "object", "additionalProperties": false, "properties": { "hero_image": { "$ref": "_defs.json#/$defs/imageAsset" }, "attachments": { "type": "array", "items": { "$ref": "_defs.json#/$defs/attachment" } } } }, "audit": { "type": "object", "additionalProperties": false, "properties": { "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time" }, "created_by": { "type": "string" }, "updated_by": { "type": "string" }, "revision": { "type": "integer", "minimum": 0 }, "fact_checked": { "type": "boolean" }, "legal_reviewed": { "type": "boolean" }, "change_notes": { "type": "string" } } }, "metrics": { "type": "object", "additionalProperties": false, "properties": { "views": { "type": "integer", "minimum": 0 }, "avg_read_time_sec": { "type": "integer", "minimum": 0 }, "cta_clicks": { "type": "integer", "minimum": 0 } } }, "readability": { "type": "object", "additionalProperties": false, "properties": { "reading_time_minutes_est": { "type": "integer", "minimum": 0 }, "word_count": { "type": "integer", "minimum": 0 }, "summary_bullets": { "type": "array", "items": { "type": "string" }, "maxItems": 12 } } } } }