{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/3gppscout-com/json-schema/3gppscout-com-image-search-request-schema.json",
  "title": "ImageSearchRequest",
  "description": "Request body for image search.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/3gppscout-com-openapi.json#/components/schemas/ImageSearchRequest",
  "properties": {
    "query": {
      "type": "string",
      "title": "Query",
      "description": "Natural language query describing the diagram, figure, or table you're looking for. E.g. 'protocol stack architecture', 'random access procedure flow chart'."
    },
    "match_count": {
      "type": "integer",
      "maximum": 50.0,
      "minimum": 1.0,
      "title": "Match Count",
      "description": "Number of image results to return.",
      "default": 10
    },
    "match_threshold": {
      "type": "number",
      "maximum": 1.0,
      "minimum": 0.0,
      "title": "Match Threshold",
      "description": "Minimum similarity score. Default 0.3 filters low-quality matches.",
      "default": 0.3
    },
    "deduplicate": {
      "type": "boolean",
      "title": "Deduplicate",
      "description": "Collapse near-duplicate image results from different releases/versions (same doc_number, section_number, and caption). Keeps the highest-similarity result (the newest release when similarities tie) and annotates 'also_in' with each collapsed match's release, version, and similarity. Ignored when filter_release is set.",
      "default": true
    },
    "filter_release": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Filter Release",
      "description": "Restrict to a specific 3GPP release. Examples: 'Rel-15', 'Rel-17', 'Rel-20'. Omit for all indexed releases (Rel-15 through Rel-20)."
    },
    "filter_doc_number": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Filter Doc Number",
      "description": "Restrict to a specific document, e.g. '38.300', '23.501'. Numeric format only."
    },
    "filter_series": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Filter Series",
      "description": "Restrict by series: '38' = NR/5G, '23' = system architecture, '36' = LTE, '33' = security."
    },
    "available_before": {
      "anyOf": [
        {
          "type": "string",
          "format": "date"
        },
        {
          "type": "null"
        }
      ],
      "title": "Available Before",
      "description": "Only versions uploaded to the 3GPP archive before this date (YYYY-MM-DD; before 00:00 UTC, so the day itself is excluded), e.g. a patent application's priority date. A version whose upload time is unknown is left out. Usually one version per release of each spec is indexed (the newest in that release, Rel-15 onward), so a release appears only if that version predates the cutoff; older versions are in the 3GPP archive but not searchable here."
    }
  },
  "type": "object",
  "required": [
    "query"
  ]
}