{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/aistoryhub-co/json-schema/aistoryhub-co-voiceprint-schema.json",
  "title": "Voiceprint",
  "x-generated": "2026-11-01",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aistoryhub-co-openapi.json#/components/schemas/Voiceprint",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "is_default": {
      "type": "boolean"
    },
    "voice_fingerprint": {
      "type": [
        "string",
        "null"
      ],
      "description": "Freeform notes distilling this voice's signature quirks."
    },
    "exemplar_prose": {
      "type": [
        "string",
        "null"
      ],
      "description": "A pasted passage exemplifying this voice."
    },
    "dials": {
      "$ref": "#/$defs/VoiceDials"
    },
    "created_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "updated_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    }
  },
  "$defs": {
    "VoiceDials": {
      "type": "object",
      "description": "The 33 Style Lab dials, each 0-100. Unspecified dials default to 50 (neutral) on create.",
      "properties": {
        "technical_influence": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "emotional_directness": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "sentence_complexity": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "metaphor_density": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "cynicism_hope": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "0 = cynical, 100 = hopeful."
        },
        "pacing": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "0 = slow/deliberate, 100 = fast/propulsive."
        },
        "action_heavy_opening": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "paragraph_length": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "dialogue_ratio": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "time_linearity": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "0 = fragmented/nonlinear, 100 = strictly linear."
        },
        "visual_emphasis": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "physical_detail_level": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "setting_detail": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "interiority_access": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "narrator_presence": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "humor_level": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "profanity_level": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "vocabulary_register": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "0 = plain/colloquial, 100 = elevated/literary."
        },
        "tactile_emphasis": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "auditory_emphasis": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "olfactory_emphasis": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "body_awareness": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "temperature_texture": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "fragmentation": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "repetition_effect": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "time_dilation": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "technical_accuracy": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "systemic_focus": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "0 = individual-focused, 100 = systems/institution-focused."
        },
        "ambiguity": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100,
          "description": "0 = resolved/clear, 100 = deliberately ambiguous."
        },
        "power_dynamics_visibility": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "numeric_density": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "acronym_tolerance": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        },
        "mechanism_surface": {
          "type": "integer",
          "minimum": 0,
          "maximum": 100
        }
      }
    }
  }
}