{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "description": "Filter components by category (e.g., 'core', 'lifecycle', 'visual')"
    },
    "trait": {
      "type": "string",
      "description": "Filter components by trait (e.g., 'Editable', 'Searchable')"
    },
    "context": {
      "type": "string",
      "description": "Filter components by context (e.g., 'detail', 'list')"
    },
    "status": {
      "type": "string",
      "enum": [
        "stable",
        "beta",
        "planned"
      ],
      "description": "Filter by legacy static-HTML status only: 'stable' = mapped HTML renderer; 'planned' = HTML fallback. Consult productReality.surfaces for React/Vue, generated-consumer and maturity evidence."
    },
    "detail": {
      "type": "string",
      "enum": [
        "brief",
        "summary",
        "full"
      ],
      "description": "Defaults to brief unfiltered, full with filters. Both defaults are paged (filtered: 10 entries). summary adds tags, contexts, regions and traits; full includes evidence. Explicit detail without paging preserves the unbounded legacy request."
    },
    "page": {
      "type": "integer",
      "minimum": 1,
      "description": "1-based page index for pagination."
    },
    "pageSize": {
      "type": "integer",
      "minimum": 1,
      "description": "Components per page. Filtered calls without detail default to 10; nextPage gives the next call."
    },
    "includeInternal": {
      "type": "boolean",
      "default": false,
      "description": "Also list OODS Foundry's internal (non-business) objects in registry.objects, after the business objects. Without it they are left out and registry.hiddenInternal counts them."
    }
  },
  "additionalProperties": false
}
