{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/krimskrams-xyz/json-schema/krimskrams-xyz-scan-request-schema.json",
  "title": "ScanRequest",
  "description": "A bounded set of searches for one paid scan.",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/grant-search_krimskrams_xyz_openapi.json#/components/schemas/ScanRequest",
  "properties": {
    "searches": {
      "items": {
        "$ref": "#/$defs/USSearchParams"
      },
      "type": "array",
      "maxItems": 10,
      "minItems": 1,
      "title": "Searches"
    }
  },
  "type": "object",
  "required": [
    "searches"
  ],
  "$defs": {
    "USSearchParams": {
      "properties": {
        "query": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 200
            },
            {
              "type": "null"
            }
          ],
          "title": "Query"
        },
        "agency": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 50
            },
            {
              "type": "null"
            }
          ],
          "title": "Agency"
        },
        "statuses": {
          "type": "string",
          "maxLength": 50,
          "title": "Statuses",
          "default": "forecasted|posted"
        },
        "limit": {
          "type": "integer",
          "maximum": 20.0,
          "minimum": 1.0,
          "title": "Limit",
          "default": 10
        },
        "closing_within_days": {
          "anyOf": [
            {
              "type": "integer",
              "maximum": 3650.0,
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Closing Within Days"
        },
        "minimum_award_ceiling": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0.0
            },
            {
              "type": "null"
            }
          ],
          "title": "Minimum Award Ceiling"
        }
      },
      "type": "object",
      "title": "USSearchParams",
      "description": "Validated query parameters for U.S.-only routes."
    }
  }
}