update_changeset
Modify an existing ServiceNow changeset by updating its name, description, state, or assigned developer to track and manage IT change processes.
Instructions
Update an existing changeset in ServiceNow
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| changeset_id | Yes | Changeset ID or sys_id | |
| name | No | Name of the changeset | |
| description | No | Description of the changeset | |
| state | No | State of the changeset | |
| developer | No | Developer responsible for the changeset |
Implementation Reference
- The core handler function that implements the logic for updating a changeset in ServiceNow by making a PATCH request to the sys_update_set table.def update_changeset( auth_manager: AuthManager, server_config: ServerConfig, params: Union[Dict[str, Any], UpdateChangesetParams], ) -> Dict[str, Any]: """ Update an existing changeset in ServiceNow. Args: auth_manager: The authentication manager. server_config: The server configuration. params: The parameters for updating a changeset. Can be a dictionary or a UpdateChangesetParams object. Returns: The updated changeset. """ # Unwrap and validate parameters result = _unwrap_and_validate_params( params, UpdateChangesetParams, required_fields=["changeset_id"] ) if not result["success"]: return result validated_params = result["params"] # Prepare the request data data = {} # Add optional fields if provided if validated_params.name: data["name"] = validated_params.name if validated_params.description: data["description"] = validated_params.description if validated_params.state: data["state"] = validated_params.state if validated_params.developer: data["developer"] = validated_params.developer # If no fields to update, return error if not data: return { "success": False, "message": "No fields to update", } # Get the instance URL instance_url = _get_instance_url(auth_manager, server_config) if not instance_url: return { "success": False, "message": "Cannot find instance_url in either server_config or auth_manager", } # Get the headers headers = _get_headers(auth_manager, server_config) if not headers: return { "success": False, "message": "Cannot find get_headers method in either auth_manager or server_config", } # Add Content-Type header headers["Content-Type"] = "application/json" # Make the API request url = f"{instance_url}/api/now/table/sys_update_set/{validated_params.changeset_id}" try: response = requests.patch(url, json=data, headers=headers) response.raise_for_status() result = response.json() return { "success": True, "message": "Changeset updated successfully", "changeset": result["result"], } except requests.exceptions.RequestException as e: logger.error(f"Error updating changeset: {e}") return { "success": False, "message": f"Error updating changeset: {str(e)}", }
- Pydantic BaseModel defining the input schema and validation for the update_changeset tool parameters.class UpdateChangesetParams(BaseModel): """Parameters for updating a changeset.""" changeset_id: str = Field(..., description="Changeset ID or sys_id") name: Optional[str] = Field(None, description="Name of the changeset") description: Optional[str] = Field(None, description="Description of the changeset") state: Optional[str] = Field(None, description="State of the changeset") developer: Optional[str] = Field(None, description="Developer responsible for the changeset")
- src/servicenow_mcp/utils/tool_utils.py:596-602 (registration)Tool registration entry in get_tool_definitions() dictionary, mapping the tool name to its handler, input schema, return type, description, and serialization method."update_changeset": ( update_changeset_tool, UpdateChangesetParams, str, # Expects JSON string "Update an existing changeset in ServiceNow", "json_dict", # Tool returns Pydantic model ),