{"data":{"id":"magento2-39941","source":"github-pr","sourceRef":"magento/magento2#39941","title":"Clarified Attribute Option already exists response","pr":{"number":39941,"url":"https://github.com/magento/magento2/pull/39941","author":"J0rdyV","mergedAt":"2025-12-16T06:25:01Z","mergeCommit":"667cb34c5322f7bf15cd3b930d524e28abb98660","headCommit":"15560d7152abbad763b4979fd3aac3008747c8d0","baseRef":"2.4-develop","diffSha256":"4d7f9f33d69d6504df8130b5d9c15b48be568c41560e567580c327299d9e9bf7"},"issues":[{"number":39943,"url":"https://github.com/magento/magento2/issues/39943","title":"[Issue] Clarified Attribute Option already exists response","labels":["Area: APIs","Component: Api","Issue: Confirmed","Priority: P3","Progress: done","Reported on 2.4.x","Reproduced on 2.4.x"],"kind":"pr-derived"}],"fixedIn":"2.4.9","containingTags":["2.4.9"],"reportedOn":null,"codeMatch":{"2.4.6":"clean","2.4.6-p1":"clean","2.4.6-p2":"clean","2.4.6-p3":"clean","2.4.6-p4":"clean","2.4.6-p5":"clean","2.4.6-p6":"clean","2.4.6-p7":"clean","2.4.6-p8":"clean","2.4.6-p9":"clean","2.4.6-p10":"clean","2.4.6-p11":"clean","2.4.6-p12":"clean","2.4.6-p13":"clean","2.4.6-p14":"clean","2.4.6-p15":"clean","2.4.7":"clean","2.4.7-p1":"clean","2.4.7-p2":"clean","2.4.7-p3":"clean","2.4.7-p4":"clean","2.4.7-p5":"clean","2.4.7-p6":"clean","2.4.7-p7":"clean","2.4.7-p8":"clean","2.4.7-p9":"clean","2.4.7-p10":"clean","2.4.8":"clean","2.4.8-p1":"clean","2.4.8-p2":"clean","2.4.8-p3":"clean","2.4.8-p4":"clean","2.4.8-p5":"clean","2.4.9":"conflict"},"affectedVersions":["2.4.6","2.4.6-p1","2.4.6-p2","2.4.6-p3","2.4.6-p4","2.4.6-p5","2.4.6-p6","2.4.6-p7","2.4.6-p8","2.4.6-p9","2.4.6-p10","2.4.6-p11","2.4.6-p12","2.4.6-p13","2.4.6-p14","2.4.6-p15","2.4.7","2.4.7-p1","2.4.7-p2","2.4.7-p3","2.4.7-p4","2.4.7-p5","2.4.7-p6","2.4.7-p7","2.4.7-p8","2.4.7-p9","2.4.7-p10","2.4.8","2.4.8-p1","2.4.8-p2","2.4.8-p3","2.4.8-p4","2.4.8-p5"],"components":["magento/framework","magento/module-catalog-import-export","magento/module-downloadable-import-export","magento/module-eav"],"files":[{"path":"app/code/Magento/CatalogImportExport/Model/Import/Product.php","change":"modified","package":"magento/module-catalog-import-export"},{"path":"app/code/Magento/DownloadableImportExport/Model/Import/Product/Type/Downloadable.php","change":"modified","package":"magento/module-downloadable-import-export"},{"path":"app/code/Magento/Eav/Model/Entity/Attribute/OptionManagement.php","change":"modified","package":"magento/module-eav"},{"path":"app/code/Magento/Eav/i18n/en_US.csv","change":"modified","package":"magento/module-eav"},{"path":"lib/internal/Magento/Framework/File/Uploader.php","change":"modified","package":"magento/framework"}],"stripped":{"tests":["dev/tests/api-functional/testsuite/Magento/Catalog/Api/ProductAttributeOptionUpdateInterfaceTest.php"],"docs":[],"outsideCode":[]},"linesChanged":12,"mergeBatched":true,"excluded":null,"sections":{"description":"Replaced the awkward phrase \"Get new file name if the same is already exists\" with a clearer and grammatically correct version: \"Get a new file name if one already exists.\" This improves readability and user understanding.\nSame for the attribute option response.","stepsToReproduce":"1. pushing an already existing attribute option to the attribute option api endpoint.","expectedResult":null,"actualResult":null,"source":"pr"},"signatures":[],"labels":{"area":["APIs"],"component":["Api"],"priority":"P3","severity":null,"reportedOn":["2.4.x"]},"categories":["Web API"],"triage":{"model":"@cf/cloudflare/clef","requestHash":"f00decea8a6862c6cf172e1eca0c57ccfa827943b98fc64b1093770cc1fcb9d4","isBugfix":0.0715,"changeKind":{"choice":"refactor","probabilities":{"bugfix":0.3449,"feature":0.0129,"refactor":0.355,"tests_only":0.0391,"docs_only":0.2431,"dependency":0.005},"confidence":0.167},"scope":{"score":0.8582,"probabilities":{"0":0.2838,"1":0.5743,"2":0.1419},"confidence":0.1458},"risk":{"score":0.2354,"probabilities":{"0":0.7879,"1":0.1888,"2":0.0233},"confidence":0.4854},"area":{"choice":"catalog","probabilities":{"catalog":0.4783,"checkout":0.0045,"customer":0.0043,"admin":0.0511,"graphql_api":0.3801,"framework":0.0407,"frontend":0.0062,"other":0.0348},"confidence":0.2901},"securityRelevant":0.0047,"reportedVersion":{"choice":"unspecified","probabilities":{"2.4.0":0.005,"2.4.0-p1":0.0042,"2.4.1":0.0036,"2.4.1-p1":0.003,"2.4.2":0.0052,"2.4.2-p1":0.0042,"2.4.2-p2":0.0062,"2.4.3":0.0095,"2.4.3-p1":0.0098,"2.4.3-p2":0.0104,"2.4.3-p3":0.0061,"2.4.4":0.0139,"2.4.4-p1":0.0087,"2.4.4-p10":0.0068,"2.4.4-p11":0.0079,"2.4.4-p12":0.0065,"2.4.4-p13":0.0067,"2.4.4-p14":0.0081,"2.4.4-p15":0.0056,"2.4.4-p16":0.0067,"2.4.4-p17":0.0061,"2.4.4-p18":0.0057,"2.4.4-p2":0.0024,"2.4.4-p3":0.0028,"2.4.4-p4":0.0031,"2.4.4-p5":0.0042,"2.4.4-p6":0.0043,"2.4.4-p7":0.0036,"2.4.4-p8":0.0054,"2.4.4-p9":0.0042,"2.4.5":0.0161,"2.4.5-p1":0.0128,"2.4.5-p10":0.0086,"2.4.5-p11":0.0123,"2.4.5-p12":0.0114,"2.4.5-p13":0.0092,"2.4.5-p14":0.0095,"2.4.5-p15":0.0076,"2.4.5-p16":0.0091,"2.4.5-p17":0.009,"2.4.5-p2":0.0031,"2.4.5-p3":0.0055,"2.4.5-p4":0.0055,"2.4.5-p5":0.0063,"2.4.5-p6":0.0057,"2.4.5-p7":0.0058,"2.4.5-p8":0.0053,"2.4.5-p9":0.005,"2.4.6":0.0266,"2.4.6-p1":0.0176,"2.4.6-p10":0.0101,"2.4.6-p11":0.0131,"2.4.6-p12":0.0126,"2.4.6-p13":0.0122,"2.4.6-p14":0.0108,"2.4.6-p15":0.0099,"2.4.6-p2":0.0039,"2.4.6-p3":0.0075,"2.4.6-p4":0.0084,"2.4.6-p5":0.0071,"2.4.6-p6":0.0099,"2.4.6-p7":0.009,"2.4.6-p8":0.0067,"2.4.6-p9":0.0046,"2.4.7":0.019,"2.4.7-p1":0.0116,"2.4.7-p10":0.0086,"2.4.7-p2":0.007,"2.4.7-p3":0.0131,"2.4.7-p4":0.0176,"2.4.7-p5":0.0132,"2.4.7-p6":0.0168,"2.4.7-p7":0.011,"2.4.7-p8":0.0108,"2.4.7-p9":0.0058,"2.4.8":0.0185,"2.4.8-p1":0.0162,"2.4.8-p2":0.0182,"2.4.8-p3":0.0176,"2.4.8-p4":0.0171,"2.4.8-p5":0.0177,"2.4.9":0.0205,"unspecified":0.242},"confidence":0.0562},"backportWorthy":{"score":0.2878,"probabilities":{"0":0.7769,"1":0.1585,"2":0.0646},"confidence":0.4492}},"curated":{"title":"Attribute option label 'is already exists' response is now 'already exists'","description":"Pushing an already existing attribute option to the attribute option api endpoint, the response is 'Admin store attribute option label \"%1\" is already exists.'. The add and update messages in OptionManagement now say 'already exists', with the same fix in en_US.csv and in comments of Uploader and the import Product files.","categories":["Web API"],"author":"claude-code/opus-5.5","date":"2026-10-06","reviewedBy":null},"tests":{"2.4.8-p5":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-06T10:07:11.151Z","releaseCommit":"870a22c63d9d9b68fa3297962e2d5d5841115814","suites":{"api-functional":{"before":"fail","after":"pass","runAt":"2026-10-06T10:07:11.151Z"}}},"2.4.7-p10":{"before":"fail","after":"pass","adapted":false,"runAt":"2026-10-06T10:56:52.512Z","releaseCommit":"72561bf80652f57cc642a03e2c9a51d74a285b14","suites":{"api-functional":{"before":"fail","after":"pass","runAt":"2026-10-06T10:56:52.512Z"}}}}},"_documentation":"https://magento.watch/api","_description":"Upstream fix magento2-39941 details"}