{"record":{"id":"904c1f4c13cab5ce","repo":"HKUDS/DeepTutor","slug":"tag-already-exists-exc","errorCode":null,"errorMessage":"Tag already exists: {exc}","messagePattern":"Tag already exists: (.+?)","errorType":"http","errorClass":"HTTPException","httpStatus":409,"severity":"error","filePath":"deeptutor/api/routers/skills.py","lineNumber":89,"sourceCode":"    rename_to: str = Field(..., min_length=1, max_length=32)\n\n\n# ── tag routes (declared before `/{name}` so they are not shadowed) ──\n\n\n@router.get(\"/tags/list\")\nasync def list_tags() -> dict[str, list[str]]:\n    service = get_skill_service()\n    return {\"tags\": service.list_tags()}\n\n\n@router.post(\"/tags/create\")\nasync def create_tag(payload: CreateTagRequest) -> dict[str, str]:\n    service = get_skill_service()\n    try:\n        tag = service.create_tag(payload.name)\n    except TagExistsError as exc:\n        raise HTTPException(status_code=409, detail=f\"Tag already exists: {exc}\")\n    except InvalidTagError as exc:\n        raise HTTPException(status_code=400, detail=str(exc))\n    return {\"name\": tag}\n\n\n@router.put(\"/tags/{tag}\")\nasync def rename_tag(tag: str, payload: RenameTagRequest) -> dict[str, str]:\n    service = get_skill_service()\n    try:\n        new_tag = service.rename_tag(tag, payload.rename_to)\n    except TagNotFoundError:\n        raise HTTPException(status_code=404, detail=f\"Tag not found: {tag}\")\n    except TagExistsError as exc:\n        raise HTTPException(status_code=409, detail=f\"Tag already exists: {exc}\")\n    except InvalidTagError as exc:\n        raise HTTPException(status_code=400, detail=str(exc))\n    return {\"name\": new_tag}\n","sourceCodeStart":71,"sourceCodeEnd":107,"githubUrl":"https://github.com/HKUDS/DeepTutor/blob/3e82f130422a813cdd73c10b21a44e9325f5821a/deeptutor/api/routers/skills.py#L71-L107","documentation":"Error \"Tag already exists: {exc}\" thrown in HKUDS/DeepTutor.","triggerScenarios":"Thrown at deeptutor/api/routers/skills.py:89 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3e82f130422a813cdd73c10b21a44e9325f5821a","analyzedAt":"2026-08-27T06:57:25.364Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}