Hi folks!

This is an announcement for a change to the response of the wbeditentity API module, which is a breaking change for MediaInfo entities (Structured Data on Commons), a significant change for Lexeme entities (lexicographical data), a minor change for Property entities, and a no-op for Item entities.

The wbeditentity API module, which can be used to edit any part of a Wikibase Entity, has long included a part of the edited data in its response. However, this response data was incomplete: it included e.g. Labels, Statements, Sitelinks, but not the datatype of a Property or the Lemmas of a Lexeme. Additionally, Statements were always returned under the key "claims", even though MediaInfo entities generally use the key "statements". On or around February 10, we will deploy a code change that will make wbeditentity return the entity data using the standard serialization format of an entity type, the same that is used by wbgetentities and Special:EntityData. This means that the response will now contain all the parts of an Entity, and also that, for MediaInfo entities, the Statements will now be returned under "statements". (These Statements will also be missing the "datatype", just like the MediaInfo data from wbgetentities and Special:EntityData – see T246809.)

To avoid breaking MediaInfo API users immediately, we are temporarily adding Statements under the key "claims" as well – that is, the change on February 10 is only significant, not yet breaking, and MediaInfo API users can use either the "claims" or the "statements". On or around March 3, we will remove this compatibility code, and MediaInfo API users will have to use "statements" if they want to look at the Statements of the returned entity data.

It’s also worth mentioning here what the wbeditentity response data represents. The API returns the Entity data as edited by your API request, and the revision ID of the page that the change was saved under. This is not necessarily the Entity data of that revision ID: if Wikibase patched any edit conflicts between the base revision ID that your request specified (baserevid parameter) and the actual latest revision ID, then those changes are not included in the response. For example, if you load an Item with revision ID X and labels “a” and “b” in different languages, and make a wbeditentity request with baserevid=X to change the label “a” to “A”, but in the meantime someone else had already changed the label “b” to “B” and saved this as revision Y, then the API response for your request will have a last revision ID ("lastrevid") of Z, and this revision Z will have labels “A” and “B” if you get it from Special:EntityData, but the API response for your request will have labels “A” and “b” (the result of applying your edit to the base revision). If you need the actual latest Entity data after your edit, make a separate request to Special:EntityData or wbgetentities. (This is nothing new, and unaffected by the change being announced here, but we thought it was still worth mentioning.)

If you have any issue or question, feel free to leave a comment at T271105.

Cheers,
Lucas

--
Lucas Werkmeister (he/er)
Full Stack Developer

Wikimedia Deutschland e. V. | Tempelhofer Ufer 23-24 | 10963 Berlin
Phone: +49 (0)30 219 158 26-0
https://wikimedia.de

Imagine a world in which every single human being can freely share in the sum of all knowledge. Help us to achieve our vision!
https://spenden.wikimedia.de

Wikimedia Deutschland - Gesellschaft zur Förderung Freien Wissens e. V. Eingetragen im Vereinsregister des Amtsgerichts Berlin-Charlottenburg unter der Nummer 23855 B. Als gemeinnützig anerkannt durch das Finanzamt für Körperschaften I Berlin, Steuernummer 27/029/42207.