{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/colourmemory-com/json-schema/colourmemory-com-brand-guideline-specify-request-schema.json",
  "title": "BrandGuidelineSpecifyRequest",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/colourmemory-com-brand-api-openapi.yml#/components/schemas/BrandGuidelineSpecifyRequest",
  "properties": {
    "brand_name": {
      "type": "string",
      "title": "Brand Name"
    },
    "continue_project_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Continue Project Id"
    },
    "brand_brief": {
      "$ref": "#/$defs/BrandBrief"
    },
    "palette_input": {
      "$ref": "#/$defs/PaletteInput"
    },
    "preferences": {
      "$ref": "#/$defs/Preferences"
    },
    "identity_assets": {
      "$ref": "#/$defs/IdentityAssets"
    },
    "output_preferences": {
      "$ref": "#/$defs/OutputPreferences"
    },
    "constraints": {
      "$ref": "#/$defs/BrandConstraints"
    }
  },
  "type": "object",
  "required": [
    "brand_name",
    "palette_input"
  ],
  "$defs": {
    "BrandBrief": {
      "properties": {
        "category": {
          "type": "string",
          "title": "Category",
          "default": ""
        },
        "positioning": {
          "type": "string",
          "title": "Positioning",
          "default": ""
        },
        "audience": {
          "type": "string",
          "title": "Audience",
          "default": ""
        },
        "personality": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Personality"
        },
        "values": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Values"
        },
        "channels": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Channels"
        },
        "markets": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Markets"
        },
        "competitors": {
          "items": {
            "$ref": "#/$defs/CompetitorInput"
          },
          "type": "array",
          "title": "Competitors"
        }
      },
      "type": "object",
      "title": "BrandBrief"
    },
    "BrandConstraints": {
      "properties": {
        "avoid_concepts": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Avoid Concepts"
        },
        "preferred_families": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Preferred Families"
        }
      },
      "type": "object",
      "title": "BrandConstraints",
      "description": "Bug 2 fix (2026-08-06): confirmed live, the MCP schema had no field\nfor structured negative constraints at all -- a brief that says \"not\na generic pink pet salon\" in prose had no way to make that a real,\ntestable exclusion; the closest the system could do was infer\nsentiment from prose (fixed separately, see _RELEVANCE_NEGATION_CUES),\nwhich is inherently weaker than a structured field a caller can rely\non. avoid_concepts are checked as case-insensitive substring matches\nagainst each retrieved archive entry's own name/colour_notes/\narchive_source text during concept-mode retrieval (resolve_palette_\ncolours) -- structured constraints, not inferred sentiment, and they\ntake precedence: an avoid_concepts match is excluded outright,\nregardless of what the brief's prose might otherwise suggest.\npreferred_families is a soft ranking boost, not a hard filter --\nmatching entries are preferred, not the only ones allowed."
    },
    "CompetitorInput": {
      "properties": {
        "name": {
          "type": "string",
          "title": "Name",
          "default": ""
        },
        "colours": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Colours"
        }
      },
      "type": "object",
      "title": "CompetitorInput"
    },
    "IdentityAssets": {
      "properties": {
        "logo_image_id": {
          "type": "string",
          "title": "Logo Image Id",
          "default": ""
        },
        "wordmark_image_id": {
          "type": "string",
          "title": "Wordmark Image Id",
          "default": ""
        },
        "logo_base64": {
          "type": "string",
          "title": "Logo Base64",
          "default": ""
        },
        "wordmark_base64": {
          "type": "string",
          "title": "Wordmark Base64",
          "default": ""
        }
      },
      "type": "object",
      "title": "IdentityAssets"
    },
    "OutputPreferences": {
      "properties": {
        "language": {
          "type": "string",
          "title": "Language",
          "default": "en-GB"
        },
        "tone": {
          "type": "string",
          "title": "Tone",
          "default": "authoritative"
        }
      },
      "type": "object",
      "title": "OutputPreferences"
    },
    "PaletteInput": {
      "properties": {
        "mode": {
          "type": "string",
          "title": "Mode"
        },
        "colours": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Colours"
        },
        "locked_colours": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "title": "Locked Colours"
        },
        "concept": {
          "type": "string",
          "title": "Concept",
          "default": ""
        },
        "archive": {
          "type": "string",
          "title": "Archive",
          "default": ""
        },
        "image_id": {
          "type": "string",
          "title": "Image Id",
          "default": ""
        }
      },
      "type": "object",
      "required": [
        "mode"
      ],
      "title": "PaletteInput"
    },
    "Preferences": {
      "properties": {
        "palette_size": {
          "type": "integer",
          "title": "Palette Size",
          "default": 5
        },
        "accessibility_target": {
          "type": "string",
          "title": "Accessibility Target",
          "default": "AA"
        },
        "minimum_claim_strength": {
          "type": "string",
          "title": "Minimum Claim Strength",
          "default": "E"
        },
        "strict_semantic_colour": {
          "type": "boolean",
          "title": "Strict Semantic Colour",
          "default": false
        },
        "allow_unsourced_original_colours": {
          "type": "boolean",
          "title": "Allow Unsourced Original Colours",
          "default": true
        }
      },
      "type": "object",
      "title": "Preferences"
    }
  }
}