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