22 lines
3.1 KiB
JSON
22 lines
3.1 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://sloanops.com/schemas/intake.v1.schema.json",
|
|
"title": "SloanOps approved intake v1",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schemaVersion", "submission", "client", "domain", "site"],
|
|
"properties": {
|
|
"schemaVersion": { "const": "1.0" },
|
|
"submission": { "type": "object", "additionalProperties": false, "required": ["type", "submittedAt"], "properties": { "type": { "const": "client-signup" }, "submittedAt": { "type": "string", "format": "date-time" } } },
|
|
"client": { "type": "object", "additionalProperties": false, "required": ["businessName", "contactEmail"], "properties": { "businessName": { "type": "string", "minLength": 1, "maxLength": 120 }, "contactEmail": { "type": "string", "format": "email", "maxLength": 254 } } },
|
|
"domain": { "type": "object", "additionalProperties": false, "required": ["requestedRootDomain", "management"], "properties": { "requestedRootDomain": { "type": "string", "pattern": "^(?=.{1,253}$)([a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z]{2,63}$" }, "management": { "enum": ["client_managed", "sloanops_managed"] } } },
|
|
"site": { "type": "object", "additionalProperties": false, "required": ["title", "description", "brand", "contact", "hero", "features", "services", "team", "testimonials"], "properties": { "title": { "type": "string", "minLength": 1, "maxLength": 120 }, "description": { "type": "string", "minLength": 1, "maxLength": 200 }, "brand": { "$ref": "#/$defs/brand" }, "contact": { "$ref": "#/$defs/contact" }, "hero": { "$ref": "#/$defs/hero" }, "features": { "$ref": "#/$defs/contentItems" }, "services": { "$ref": "#/$defs/contentItems" }, "team": { "$ref": "#/$defs/contentItems" }, "testimonials": { "$ref": "#/$defs/contentItems" } } }
|
|
},
|
|
"$defs": {
|
|
"brand": { "type": "object", "additionalProperties": false, "required": ["primaryColor", "secondaryColor", "headingFont", "bodyFont"], "properties": { "primaryColor": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "secondaryColor": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$" }, "headingFont": { "type": "string", "minLength": 1, "maxLength": 80 }, "bodyFont": { "type": "string", "minLength": 1, "maxLength": 80 } } },
|
|
"contact": { "type": "object", "additionalProperties": false, "required": ["publicEmail", "phone"], "properties": { "publicEmail": { "type": "string", "format": "email", "maxLength": 254 }, "phone": { "type": "string", "pattern": "^[+0-9(). -]{7,30}$" } } },
|
|
"hero": { "type": "object", "additionalProperties": false, "required": ["headline", "subheadline"], "properties": { "headline": { "type": "string", "minLength": 1, "maxLength": 160 }, "subheadline": { "type": "string", "minLength": 1, "maxLength": 280 } } },
|
|
"contentItems": { "type": "array", "maxItems": 24, "items": { "type": "object", "additionalProperties": true, "required": ["title", "description"], "properties": { "title": { "type": "string", "minLength": 1, "maxLength": 120 }, "description": { "type": "string", "minLength": 1, "maxLength": 1000 } } } }
|
|
}
|
|
}
|