← Files VeraARCHIVED FILE

modules/presenza-digitale-studio/schemas/site_brief.schema.json

7.4 KB · Oct 3, 2026 · 06:30 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://mparanza.com/schemas/presenza-digitale-studio/site-brief-v2.json",
  "title": "Model-led website brief",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "mode",
    "evidence_summary",
    "observed_facts",
    "source_use_plan",
    "open_questions",
    "target_audiences",
    "sitemap",
    "studio_profile",
    "content_plan",
    "visual_direction",
    "implementation",
    "claims",
    "exclusions"
  ],
  "properties": {
    "schema_version": {"const": 2},
    "mode": {"enum": ["refresh", "first_site"]},
    "evidence_summary": {"type": "string", "minLength": 1},
    "observed_facts": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["id", "statement", "source_ids"],
        "properties": {
          "id": {"type": "string", "minLength": 1},
          "statement": {"type": "string", "minLength": 1},
          "source_ids": {
            "type": "array",
            "minItems": 1,
            "uniqueItems": true,
            "items": {"type": "string", "minLength": 1}
          }
        }
      }
    },
    "source_use_plan": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "source_id",
          "professional_purpose",
          "post_brief_access",
          "target_material",
          "reason"
        ],
        "properties": {
          "source_id": {"type": "string", "minLength": 1},
          "professional_purpose": {"type": "string", "minLength": 1},
          "post_brief_access": {
            "enum": [
              "mapped_brief_only",
              "targeted_material",
              "full_source_required"
            ]
          },
          "target_material": {
            "type": "array",
            "uniqueItems": true,
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": ["kind", "locator"],
              "properties": {
                "kind": {
                  "enum": [
                    "page",
                    "section",
                    "excerpt",
                    "asset",
                    "code_path",
                    "entire_source"
                  ]
                },
                "locator": {"type": "string", "minLength": 1}
              }
            }
          },
          "reason": {"type": "string", "minLength": 1}
        },
        "allOf": [
          {
            "if": {
              "properties": {"post_brief_access": {"const": "mapped_brief_only"}}
            },
            "then": {"properties": {"target_material": {"maxItems": 0}}}
          },
          {
            "if": {
              "properties": {"post_brief_access": {"const": "targeted_material"}}
            },
            "then": {
              "properties": {
                "target_material": {
                  "minItems": 1,
                  "items": {
                    "properties": {
                      "kind": {"not": {"const": "entire_source"}}
                    }
                  }
                }
              }
            }
          },
          {
            "if": {
              "properties": {
                "post_brief_access": {"const": "full_source_required"}
              }
            },
            "then": {
              "properties": {
                "target_material": {
                  "minItems": 1,
                  "maxItems": 1,
                  "items": {
                    "properties": {"kind": {"const": "entire_source"}}
                  }
                }
              }
            }
          }
        ]
      }
    },
    "open_questions": {
      "type": "array",
      "items": {"type": "string", "minLength": 1}
    },
    "target_audiences": {
      "type": "array",
      "minItems": 1,
      "items": {"type": "string", "minLength": 1}
    },
    "sitemap": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["page_id", "path", "purpose", "sections"],
        "properties": {
          "page_id": {"type": "string", "minLength": 1},
          "path": {"type": "string", "minLength": 1},
          "purpose": {"type": "string", "minLength": 1},
          "sections": {
            "type": "array",
            "minItems": 1,
            "items": {"type": "string", "minLength": 1}
          }
        }
      }
    },
    "studio_profile": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["field", "value", "basis", "evidence_ids"],
        "properties": {
          "field": {"type": "string", "minLength": 1},
          "value": {},
          "basis": {"enum": ["observed", "user_supplied", "vera_default_proposal"]},
          "evidence_ids": {
            "type": "array",
            "uniqueItems": true,
            "items": {"type": "string", "minLength": 1}
          }
        },
        "allOf": [
          {
            "if": {"properties": {"basis": {"enum": ["observed", "user_supplied"]}}},
            "then": {"properties": {"evidence_ids": {"minItems": 1}}}
          }
        ]
      }
    },
    "content_plan": {
      "type": "array",
      "minItems": 1,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["page_id", "primary_message", "primary_action", "required_facts"],
        "properties": {
          "page_id": {"type": "string", "minLength": 1},
          "primary_message": {"type": "string", "minLength": 1},
          "primary_action": {"type": "string", "minLength": 1},
          "required_facts": {
            "type": "array",
            "items": {"type": "string", "minLength": 1}
          }
        }
      }
    },
    "visual_direction": {
      "type": "object",
      "additionalProperties": false,
      "required": ["intent", "palette", "typography", "image_strategy", "avoid"],
      "properties": {
        "intent": {"type": "string", "minLength": 1},
        "palette": {"type": "array", "minItems": 1, "items": {"type": "string"}},
        "typography": {"type": "string", "minLength": 1},
        "image_strategy": {"type": "string", "minLength": 1},
        "avoid": {"type": "array", "items": {"type": "string", "minLength": 1}}
      }
    },
    "implementation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["approach", "skills_used", "skills_unavailable"],
      "properties": {
        "approach": {"type": "string", "minLength": 1},
        "skills_used": {"type": "array", "uniqueItems": true, "items": {"type": "string"}},
        "skills_unavailable": {"type": "array", "uniqueItems": true, "items": {"type": "string"}}
      }
    },
    "claims": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["claim", "evidence_ids", "status"],
        "properties": {
          "claim": {"type": "string", "minLength": 1},
          "evidence_ids": {"type": "array", "minItems": 1, "items": {"type": "string"}},
          "status": {"enum": ["verified", "requires_professional_confirmation"]}
        }
      }
    },
    "exclusions": {"type": "array", "items": {"type": "string", "minLength": 1}}
  }
}

SHA-256: 908dcdffe437380f3167920c56ed09d864578f267faafab2b80a273ba020a40a