{
  "title": "EU TED tenders search",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "keywords": {
      "title": "Keyword or exact phrase",
      "type": "string",
      "editor": "textfield",
      "description": "Search the full notice with TED's FT operator. Multiple words form one exact phrase. Leave blank for recent notices. Quotes and backslashes are rejected to keep the filter unambiguous.",
      "sectionCaption": "1 · Define the procurement search",
      "sectionDescription": "Filters combine with AND; entries within each list use OR."
    },
    "cpvCodes": {
      "title": "CPV codes or prefixes",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "description": "Any of these 8-digit CPV codes or 2–7 digit prefixes followed by *, e.g. 72000000 or 72*. TED treats parent CPV codes hierarchically. Combined with the other filters using AND."
    },
    "buyerCountries": {
      "title": "Buyer country codes",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "description": "Three-letter country codes such as DEU, FRA, IRL or ESP. Filters where buyers are based, not where work is performed. Any listed country may match."
    },
    "noticeTypes": {
      "title": "Published notice types",
      "type": "array",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "description": "Optional TED notice-type codes, e.g. cn-standard (competition), can-standard (award), pin-only (planning). Leave empty for all types. Award notices are not open bids."
    },
    "fromDate": {
      "title": "Publication date from",
      "type": "string",
      "editor": "textfield",
      "description": "Inclusive YYYY-MM-DD. If absent, use the last lookbackDays days. This is publication date, not the submission deadline.",
      "sectionCaption": "2 · Set publication window and language",
      "sectionDescription": "Publication dates are not submission deadlines; language fallback is reported."
    },
    "toDate": {
      "title": "Publication date to",
      "type": "string",
      "editor": "textfield",
      "description": "Optional inclusive YYYY-MM-DD. Must be on or after fromDate."
    },
    "lookbackDays": {
      "title": "Recent window (days)",
      "type": "integer",
      "editor": "number",
      "minimum": 1,
      "maximum": 3650,
      "default": 30,
      "description": "Used only when fromDate is blank. Defaults to the last 30 days so an empty input produces a representative recent sample."
    },
    "preferredLanguage": {
      "title": "Preferred language",
      "type": "string",
      "editor": "textfield",
      "default": "eng",
      "description": "Three-letter TED language code, e.g. eng, deu, fra. If absent in a record, the Actor uses the first available language and reports it. It never translates text."
    },
    "maxItems": {
      "title": "Maximum notices",
      "type": "integer",
      "editor": "number",
      "minimum": 1,
      "maximum": 10000,
      "default": 20,
      "description": "Maximum distinct notice rows to save. SUMMARY tells you whether the source had more results. Latest versions only; newest publication date first.",
      "sectionCaption": "3 · Bound output and source details",
      "sectionDescription": "The result cap and API page size are separate; raw output contains selected fields only."
    },
    "pageSize": {
      "title": "Notices per API page",
      "type": "integer",
      "editor": "number",
      "minimum": 1,
      "maximum": 100,
      "default": 50,
      "description": "API page size. The Actor uses iteration tokens to paginate and stops on repeated tokens or unusable data."
    },
    "includeRaw": {
      "title": "Include selected source fields",
      "type": "boolean",
      "default": false,
      "description": "Attach the untouched values of the selected API fields as raw. Personal contact fields are not requested. This is not the complete XML notice."
    },
    "maxRunSeconds": {
      "title": "Run time budget (seconds)",
      "type": "integer",
      "editor": "number",
      "minimum": 30,
      "maximum": 3600,
      "default": 240,
      "description": "Stops requests and paging within this budget or 25 seconds before the platform timeout. Partial results and the reason appear in SUMMARY."
    }
  },
  "description": "Search published TED procurement notices with the supported date, country, CPV and text filters. Start with a small notice cap and review the official notice for complete procurement details."
}
