tl;dr: MediaWiki\Rest\Handler\EditHandler::mapActionModuleResult transforms any non-Success into HTTP 409.
The following REST API request tries to add {{Object location|51.48305|-0.25}}, but fails with HTTP 409.
await fetch("https://commons.wikimedia.beta.wmflabs.org/w/rest.php/v1/page/File:Test%20153.jpg", {
"credentials": "include",
"headers": {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11.1; rv:85.0) Gecko/20100101 Firefox/85.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Authorization": "Bearer xxx",
"Content-Type": "application/json"
},
"referrer": "http://localhost:8184/",
"body": "{\"source\":\"== {{int:filedesc}} ==\\n{{Information\\n|description={{en|1=this is test}}, {{fr|1=c'est un test}}\\n|source={{own}}\\n|author=[[User:Maxbetton|Maxbetton]]\\n|date={{According to Exif data|2021-01-22}}\\n}}\\n{{Object location|51.48305|-0.25}}\\n\\n{{Location|51.48494|-0.24882}}\\n\\n== {{int:license-header}} ==\\n{{self|cc-by-sa-4.0}}\\n\\n{{Uploaded from Mobile|platform=Android|version=3.0.0-debug-issue-2810-Option_to_remove_a_new_language_description_while_uploading~bad65e3e1}}\\n{{Uncategorized|year=2021|month=January|day=22}}\",\"comment\":\"{{Object location}}\",\"latest\":{\"id\":229701,\"timestamp\":\"2021-01-31T22:57:00Z\"}}",
"method": "PUT",
"mode": "cors"
});According to https://www.mediawiki.org/wiki/API:REST_API/Reference#Update_page this would imply that the specified latest.id refers to an outdated revision. However, I've obtained this latest.id immediately before from https://commons.wikimedia.beta.wmflabs.org/w/rest.php/v1/page/File:Test%20153.jpg
await fetch("https://commons.wikimedia.beta.wmflabs.org/w/rest.php/v1/page/File:Test%20153.jpg", {
"credentials": "omit",
"headers": {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11.1; rv:85.0) Gecko/20100101 Firefox/85.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5"
},
"referrer": "http://localhost:8184/",
"method": "GET",
"mode": "cors"
});
// =>
{
"id": 102379,
"key": "File:Test_153.jpg",
"title": "File:Test 153.jpg",
"latest": {
"id": 229701,
"timestamp": "2021-01-31T22:57:00Z"
},
"content_model": "wikitext",
"license": {
"url": "//creativecommons.org/licenses/by-sa/3.0/",
"title": "Creative Commons Attribution-Share Alike 3.0"
},
"source": "== {{int:filedesc}} ==\n{{Information\n|description={{en|1=this is test}}, {{fr|1=c'est un test}}\n|source={{own}}\n|author=[[User:Maxbetton|Maxbetton]]\n|date={{According to Exif data|2021-01-22}}\n}}\n{{Location|51.48494|-0.24882}}\n\n== {{int:license-header}} ==\n{{self|cc-by-sa-4.0}}\n\n{{Uploaded from Mobile|platform=Android|version=3.0.0-debug-issue-2810-Option_to_remove_a_new_language_description_while_uploading~bad65e3e1}}\n{{Uncategorized|year=2021|month=January|day=22}}"
}When attempting to perform the edit manually, I was prompted to enter a CAPTCHA presumably due to https://commons.wikimedia.beta.wmflabs.org/wiki/Template:Object_location containing four external links.
It seems that the following code is any non Success result in a HTTP 409 Conflict -- https://github.com/wikimedia/mediawiki/blob/264adbdf49413054a10a6e39311b8b0ede715e49/includes/Rest/Handler/EditHandler.php#L90-L94
This leaves API consumers puzzled and hides the underlying problem of the failed edit.