{"record":{"id":"4297553796ba56a7","repo":"microsoft/semantic-kernel","slug":"parameter-name-cannot-have-a-content-field-ex","errorCode":null,"errorMessage":"Parameter {name} cannot have a 'content' field. Expected: schema.","messagePattern":"Parameter (.+?) cannot have a 'content' field\\. Expected: schema\\.","errorType":"exception","errorClass":"PluginInitializationError","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/openapi_plugin/openapi_parser.py","lineNumber":82,"sourceCode":"        \"\"\"\n        resolve_types = RESOLVE_INTERNAL\n        if enable_file_ref_resolution:\n            resolve_types |= RESOLVE_FILES\n        if enable_http_ref_resolution:\n            resolve_types |= RESOLVE_HTTP\n        parser = ResolvingParser(openapi_document, resolve_types=resolve_types)\n        return parser.specification\n\n    def _parse_parameters(self, parameters: list[dict[str, Any]]):\n        \"\"\"Parse the parameters from the OpenAPI document.\"\"\"\n        result: list[RestApiParameter] = []\n        for param in parameters:\n            name: str = param[\"name\"]\n            if not param.get(\"in\"):\n                raise PluginInitializationError(f\"Parameter {name} is missing 'in' field\")\n            if param.get(\"content\", None) is not None:\n                # The schema and content fields are mutually exclusive.\n                raise PluginInitializationError(f\"Parameter {name} cannot have a 'content' field. Expected: schema.\")\n            location = RestApiParameterLocation(param[\"in\"])\n            description: str | None = param.get(\"description\", None)\n            is_required: bool = param.get(\"required\", False)\n            default_value = param.get(\"default\", None)\n            schema: dict[str, Any] | None = param.get(\"schema\", None)\n\n            result.append(\n                RestApiParameter(\n                    name=name,\n                    type=schema.get(\"type\", \"string\") if schema else \"string\",\n                    location=location,\n                    description=description,\n                    is_required=is_required,\n                    default_value=default_value,\n                    schema=schema if schema else {\"type\": \"string\"},\n                )\n            )\n        return result","sourceCodeStart":64,"sourceCodeEnd":100,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/openapi_plugin/openapi_parser.py#L64-L100","documentation":"Per OpenAPI, a parameter's `schema` and `content` are mutually exclusive. `_parse_parameters` explicitly rejects parameters that carry a `content` field and raises `PluginInitializationError`. The connector only consumes the `schema` form; `content`-based parameters are not supported.","triggerScenarios":"A parameter object in the spec that defines serialization via `content` (media-type-keyed) instead of `schema`. The error names the parameter and fires during parsing.","commonSituations":"Specs autogenerated from tools that prefer `content`; complex serialization (e.g. binary/multipart) modeled via `content`; hand-authored specs mixing both styles; specs targeting clients that accept `content` but not this connector.","solutions":["Rewrite the parameter to use `schema` instead of `content`.","If the value truly needs media-type serialization unsupported here, model it as a request body instead of a parameter.","Validate the spec with `openapi-spec-validator` to catch mutually-exclusive fields.","If you do not control the spec, pre-process it to convert `content` parameters to `schema` form before passing to the kernel."],"exampleFix":"# before\nparameters:\n  - name: filter\n    in: query\n    content:\n      application/json: { schema: { type: object } }   # raises 1490\n\n# after\nparameters:\n  - name: filter\n    in: query\n    schema: { type: object }","handlingStrategy":"validation","validationCode":"def reject_content_parameters(spec) -> list[str]:\n    problems = []\n    for path, methods in spec.get(\"paths\", {}).items():\n        for method, details in methods.items():\n            for p in details.get(\"parameters\", []):\n                if \"content\" in p:\n                    problems.append(f\"{method} {path}: param '{p.get('name')}' uses 'content'\")\n    return problems\n\nproblems = reject_content_parameters(spec)\nassert not problems, problems","typeGuard":"def uses_schema_not_content(p) -> bool:\n    return isinstance(p, dict) and \"schema\" in p and \"content\" not in p","tryCatchPattern":"from semantic_kernel.exceptions import PluginInitializationError\n\ntry:\n    kernel.add_openapi_plugin(plugin_name=\"x\", openapi_parsed_spec=spec)\nexcept PluginInitializationError as e:\n    if \"'content' field\" in str(e):\n        # convert content -> schema in the spec, then retry\n        raise\n    raise","preventionTips":["Model parameter serialization via `schema`, not `content`.","Move complex media-type bodies to `requestBody`.","Lint specs to flag mutually-exclusive fields.","Pre-process external specs to convert `content` parameters."],"tags":["openapi-plugin","spec-validation","semantic-kernel"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}