{
  "description": "Look up one or more usernames across 400+ sites and return verified profiles with per-site status.",
  "properties": {
    "categories": {
      "description": "Only check sites in these categories. Combined with `sites` as a union. Leave empty for all categories.",
      "editor": "select",
      "items": {
        "enum": [
          "social",
          "dev",
          "gaming",
          "forum",
          "media",
          "business",
          "education",
          "adult",
          "other"
        ],
        "type": "string"
      },
      "title": "Categories",
      "type": "array",
      "uniqueItems": true
    },
    "enrichProfiles": {
      "default": true,
      "description": "Add display name, bio, avatar, follower counts, join date, location, website and verified flag where the site exposes them.",
      "prefill": false,
      "title": "Extract profile fields",
      "type": "boolean"
    },
    "includeAvailable": {
      "default": false,
      "description": "Also emit rows for sites where the handle is free, blocked, unknown or illegal. Useful for availability checks.",
      "prefill": false,
      "title": "Include available/blocked rows",
      "type": "boolean"
    },
    "includeNsfw": {
      "default": false,
      "description": "Also check adult sites. Off by default.",
      "prefill": false,
      "title": "Include NSFW sites",
      "type": "boolean"
    },
    "maxSitesPerUsername": {
      "default": 0,
      "description": "Check only the top N priority sites per handle. 0 checks every selected site (0–500).",
      "maximum": 500,
      "minimum": 0,
      "prefill": 0,
      "title": "Max sites per username",
      "type": "integer"
    },
    "maxUsernames": {
      "default": 100,
      "description": "Cap the number of handles after wildcard expansion (1–100).",
      "maximum": 100,
      "minimum": 1,
      "prefill": 1,
      "title": "Max usernames",
      "type": "integer"
    },
    "outputMode": {
      "default": "perUsername",
      "description": "How to shape dataset rows.",
      "editor": "select",
      "enum": [
        "perUsername",
        "perSite",
        "perHit"
      ],
      "enumTitles": [
        "One row per username (legacy links + profiles)",
        "One row per username × site",
        "One row per claimed profile"
      ],
      "prefill": "perUsername",
      "title": "Output mode",
      "type": "string"
    },
    "sites": {
      "default": [],
      "description": "Only check these sites. Accepts names (GitHub), domains (github.com) or profile URLs. Leave empty for every supported site.",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "GitHub"
      ],
      "title": "Sites",
      "type": "array"
    },
    "username": {
      "description": "Optional single handle merged into `usernames`. The `usernames` array is still required.",
      "editor": "textfield",
      "title": "Single username",
      "type": "string"
    },
    "usernames": {
      "default": [
        "octocat"
      ],
      "description": "Handles to look up. A leading @ is ignored. Use {?} to expand to _, - and . (e.g. john{?}doe).",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "octocat"
      ],
      "title": "Usernames",
      "type": "array"
    },
    "verifyClaims": {
      "default": true,
      "description": "Re-check every generic claimed site with a random decoy handle. Sites that claim any handle are demoted to unverified and kept out of `links`.",
      "prefill": true,
      "title": "Verify claimed profiles",
      "type": "boolean"
    }
  },
  "required": [
    "usernames"
  ],
  "schemaVersion": 1,
  "title": "Sherlock Username Search",
  "type": "object"
}
