{"record":{"id":"316cb527ef4df414","repo":"langflow-ai/langflow","slug":"provider-data-display-name-is-required-for-new-age","errorCode":null,"errorMessage":"provider_data.display_name is required for new agent creation.","messagePattern":"provider_data\\.display_name is required for new agent creation\\.","errorType":"validation","errorClass":"ValueError","httpStatus":422,"severity":"error","filePath":"src/backend/base/langflow/api/v1/mappers/deployments/watsonx_orchestrate/payloads.py","lineNumber":383,"sourceCode":"        ),\n    )\n\n    @model_validator(mode=\"after\")\n    def validate_create_operation_requirements(self) -> WatsonxApiDeploymentCreatePayload:\n        if \"existing_agent_id\" in self.model_fields_set:\n            if self.existing_agent_id is None:\n                msg = \"provider_data.existing_agent_id cannot be set to null.\"\n                raise ValueError(msg)\n            if len(self.model_fields_set) > 1:\n                msg = (\n                    \"existing_agent_id is only for tracking existing wxO agents in Langflow and cannot include \"\n                    \"fields that update the wxO agent. Update the deployment after it is tracked.\"\n                )\n                raise ValueError(msg)\n            return self\n        if self.display_name is None:\n            msg = \"provider_data.display_name is required for new agent creation.\"\n            raise ValueError(msg)\n        if self.llm is None:\n            msg = \"provider_data.llm is required for new agent creation.\"\n            raise ValueError(msg)\n        # TODO: Allow wxO agent creation without initial flows/tools once the adapter create path supports it.\n        if not (self.add_flows or self.upsert_tools):\n            msg = \"provider_data must include at least one add_flows or upsert_tools item for new agent creation.\"\n            raise ValueError(msg)\n        _validate_api_unique_connection_app_ids(connections=self.connections)\n        raw_app_ids = {raw.app_id for raw in self.connections}\n        referenced_app_ids = _collect_api_referenced_app_ids(self.add_flows, attr_name=\"app_ids\")\n        referenced_app_ids.update(_collect_api_referenced_app_ids(self.upsert_tools, attr_name=\"add_app_ids\"))\n        _validate_api_unused_raw_app_ids(raw_app_ids=raw_app_ids, referenced_app_ids=referenced_app_ids)\n        return self\n\n    def validate_with_outer_fields(self, outer_payload: DeploymentCreateRequest) -> None:\n        if self.existing_agent_id is None or \"description\" not in outer_payload.model_fields_set:\n            return\n        msg = \"When existing_agent_id is provided, Langflow uses the description already set for the agent in wxO.\"","sourceCodeStart":365,"sourceCodeEnd":401,"githubUrl":"https://github.com/langflow-ai/langflow/blob/976ec789d2886a86de109c044d089d68e96c9a35/src/backend/base/langflow/api/v1/mappers/deployments/watsonx_orchestrate/payloads.py#L365-L401","documentation":"Model validator on WatsonxApiDeploymentCreatePayload: when creating a NEW wxO agent (no existing_agent_id), provider_data.display_name is mandatory. Its absence raises ValueError 'provider_data.display_name is required for new agent creation.' and FastAPI returns 422.","triggerScenarios":"POST /deployments with provider_data lacking display_name (and not using existing_agent_id).","commonSituations":"Assuming the outer deployment name propagates into provider_data; minimal test payloads; UI bug dropping the field when the agent-display-name input is blank.","solutions":["Include provider_data.display_name (non-empty string) in the create request.","Default it from the outer request's name field if your client has only one name input.","Check your UI form wiring when this appears in browser flows."],"exampleFix":"// before\n{\"name\": \"Support bot\", \"provider_data\": {\"llm\": \"mistral-large\", \"add_flows\": [...]}}\n// after\n{\"name\": \"Support bot\", \"provider_data\": {\"display_name\": \"Support bot\", \"llm\": \"mistral-large\", \"add_flows\": [...]}}","handlingStrategy":"validation","validationCode":"if provider_data.get(\"existing_agent_id\") is None:\n    assert provider_data.get(\"display_name\", \"\").strip(), \"display_name required for new agent creation\"","typeGuard":"const hasCreateDisplayName = (pd: Record<string, unknown>): boolean =>\n  pd.existing_agent_id !== undefined || (typeof pd.display_name === \"string\" && pd.display_name.trim().length > 0);","tryCatchPattern":null,"preventionTips":["Default provider_data.display_name from the outer deployment name in your client.","Require the display name field in create-agent forms.","Distinguish outer name from provider display_name deliberately, not accidentally."],"tags":["watsonx-orchestrate","pydantic","validation","http-422","required-field","display-name"],"backgroundTag":null,"analyzedSha":"976ec789d2886a86de109c044d089d68e96c9a35","analyzedAt":"2026-08-14T18:23:12.227Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}