{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hummatch-me/json-schema/hummatch-me-scored-song-schema.json",
  "title": "ScoredSong",
  "description": "A catalog song, optionally with fit scores. `lowNote`/`highNote` are MIDI numbers for arithmetic; `lowNoteName`/`highNoteName` are the same values as note names for display. `rangeConfidence` and `rangeSource` state how the range was established -- a range derived from published sources is not as certain as one measured from the recording, and callers should present those scores as guidance rather than fact.\n",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/hummatch-me-api-openapi.yml#/components/schemas/ScoredSong",
  "type": "object",
  "properties": {
    "slug": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "artist": {
      "type": "string"
    },
    "lowNote": {
      "type": [
        "integer",
        "null"
      ]
    },
    "highNote": {
      "type": [
        "integer",
        "null"
      ]
    },
    "lowNoteName": {
      "type": "string"
    },
    "highNoteName": {
      "type": "string"
    },
    "rangeConfidence": {
      "type": "string"
    },
    "rangeSource": {
      "type": "string"
    },
    "difficultyScore": {
      "type": [
        "integer",
        "null"
      ]
    },
    "likelyVoiceFit": {
      "type": "string"
    },
    "genre": {
      "type": "string"
    },
    "year": {
      "type": [
        "integer",
        "null"
      ]
    },
    "url": {
      "type": "string"
    },
    "matchScore": {
      "type": [
        "integer",
        "null"
      ]
    },
    "vocalFitScore": {
      "type": [
        "integer",
        "null"
      ]
    },
    "tessituraScore": {
      "type": [
        "integer",
        "null"
      ]
    },
    "voiceTypeFitScore": {
      "type": [
        "integer",
        "null"
      ]
    },
    "whyItFits": {
      "type": "string"
    },
    "riskWarning": {
      "type": "string"
    },
    "suggestedKey": {
      "type": "string"
    }
  }
}