{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/whoisgeni-us/json-schema/whoisgeni-us-submit-request-schema.json",
  "title": "SubmitRequest",
  "description": "Request body for submitting a single domain for analysis.\n\nAttributes:\n    domain: Fully qualified domain name to analyze.\n    force_refresh: Skip dedup and force a fresh analysis run.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/whoisgeni-us-openapi.json#/components/schemas/SubmitRequest",
  "properties": {
    "domain": {
      "type": "string",
      "maxLength": 512,
      "minLength": 1,
      "title": "Domain",
      "description": "Domain name to analyze (ASCII or internationalized)."
    },
    "display_domain": {
      "type": "string",
      "title": "Display Domain",
      "description": "Original IDN form of the domain (populated internally).",
      "default": ""
    },
    "depth": {
      "type": "string",
      "enum": [
        "deep",
        "quick"
      ],
      "title": "Depth",
      "description": "Analysis depth. 'deep' (default) queues the full async pipeline (all collectors, vision, LLM enrichment, metered third-party enrichment) and returns 202 + job_id for polling. 'quick' runs the fast collector subset (dns/whois/http_probe/asn/rdns) inline under a hard deadline and returns 200 with the terminal result plus job_id; it never runs vision/LLM/reverse-WHOIS/metered enrichment. 'quick' cannot be combined with force_refresh or wait=true (400).",
      "default": "deep"
    },
    "force_refresh": {
      "type": "boolean",
      "title": "Force Refresh",
      "default": false
    },
    "callback_url": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2048,
          "pattern": "^https?://"
        },
        {
          "type": "null"
        }
      ],
      "title": "Callback Url",
      "description": "Optional URL to receive a webhook POST when analysis completes"
    },
    "output_schema": {
      "anyOf": [
        {
          "type": "string",
          "format": "uuid"
        },
        {
          "type": "null"
        }
      ],
      "title": "Output Schema",
      "description": "Template ID for response projection (mutually exclusive with output_fields)"
    },
    "output_fields": {
      "anyOf": [
        {
          "$ref": "#/$defs/OutputFieldsSpec"
        },
        {
          "type": "null"
        }
      ],
      "description": "Inline field spec for response projection (mutually exclusive with output_schema)"
    }
  },
  "type": "object",
  "required": [
    "domain"
  ],
  "$defs": {
    "OutputFieldsSpec": {
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "include",
            "exclude"
          ],
          "title": "Mode"
        },
        "fields": {
          "items": {
            "type": "string"
          },
          "type": "array",
          "minItems": 1,
          "title": "Fields"
        }
      },
      "type": "object",
      "required": [
        "mode",
        "fields"
      ],
      "title": "OutputFieldsSpec",
      "description": "Inline field projection spec for response customization.\n\nSpecifies a mode (include or exclude) and a list of dot-notation field\npaths to apply as a filter on the scoring_result dict.\n\nAttributes:\n    mode: ``\"include\"`` to whitelist fields, ``\"exclude\"`` to blacklist.\n    fields: List of dot-notation field paths (min 1 required)."
    }
  }
}