{"record":{"id":"bd2843af2d2448a3","repo":"microsoft/semantic-kernel","slug":"parameter-name-is-missing-in-field","errorCode":null,"errorMessage":"Parameter {name} is missing 'in' field","messagePattern":"Parameter (.+?) is missing 'in' field","errorType":"exception","errorClass":"PluginInitializationError","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/openapi_plugin/openapi_parser.py","lineNumber":79,"sourceCode":"                local files.\n            enable_http_ref_resolution: Whether to resolve external HTTP $ref references.\n                Disabled by default.\n        \"\"\"\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\"},","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/openapi_plugin/openapi_parser.py#L61-L97","documentation":"`OpenApiParser._parse_parameters` requires every OpenAPI parameter object to have an `in` field. If `param.get(\"in\")` is falsy, it raises `PluginInitializationError` naming the parameter. Per the OpenAPI spec, `in` (query/header/path/cookie) is a required field of a parameter object.","triggerScenarios":"An OpenAPI parameter object in `paths.*.parameters` or `components.parameters` that is missing the `in` key, or has it set to an empty string. The error fires during parsing/registration of the plugin.","commonSituations":"Hand-edited specs that forgot `in`; a code-generated spec with a bug; a parameter defined only by `{\"name\": \"x\", \"schema\": {...}}`; refactoring that stripped the field; specs authored against a different (older/newer) OpenAPI version.","solutions":["Add the required `in` field to the offending parameter in the spec (`query`, `header`, `path`, or `cookie`).","Run the spec through a linter (`openapi-spec-validator`, `spectral`) before loading it.","If the parameter is invalid, remove it from the spec.","Pin/upgrade the spec to OpenAPI 3.0+ semantics and re-validate."],"exampleFix":"# before\nparameters:\n  - name: petId\n    schema: { type: integer }   # missing 'in' -> raises 1489\n\n# after\nparameters:\n  - name: petId\n    in: path\n    required: true\n    schema: { type: integer }","handlingStrategy":"validation","validationCode":"def validate_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 not p.get(\"in\"):\n                    problems.append(f\"{method} {path}: param '{p.get('name')}' missing 'in'\")\n    return problems\n\nproblems = validate_parameters(spec)\nassert not problems, problems","typeGuard":"def is_valid_openapi_parameter(p) -> bool:\n    return isinstance(p, dict) and bool(p.get(\"name\")) and bool(p.get(\"in\"))","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 \"missing 'in' field\" in str(e):\n        # patch the spec and retry\n        raise\n    raise","preventionTips":["Lint specs with openapi-spec-validator before loading.","Forbid hand-editing specs without a validator in CI.","Prefer generating specs from code/annotations that always emit `in`.","Add a spec-lint step to your pipeline."],"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"}