Edit a dataset item
Edit one dataset item by appending a revision under a new committed version. Nothing is overwritten and nothing is removed: the previous revision stays readable at every earlier ?version=.
This is a merge, not a replace. A field the request omits keeps its current value; a field the request sends replaces that field wholesale. There is no deep merge inside the JSON buckets — sending inputs replaces the whole inputs object, which is what lets a caller remove a key from it. Note that an omitted field and a field sent as null are different things: null clears the field, except inputs, which cannot be cleared.
A no-op writes nothing. If the resulting content is identical to the item’s current content, nothing is written, no new version is created, and the response is still 200 with the unchanged item. null and empty are normalised before the comparison, so clearing an already-empty field is a no-op too.
base_version is required, for an optimistic-concurrency check: the edit is refused with 409 if any revision of this item has landed above that version. An older base_version is still accepted if this item has not changed since it. A retry of an edit whose response was lost therefore gets a 409; re-read the item to see that it was applied.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Dataset UUID
Dataset item UUID
Body
Partial update of one dataset item. Send only the fields you want to change: an omitted field keeps its current value, while a field sent as null clears it (except inputs). An unknown field is a 400. A field that is sent replaces that field wholesale — there is no deep merge inside the JSON buckets.
Optimistic-concurrency check: the version the caller believes it is editing. The edit is refused with 409 if any revision of this item has landed above that version — not "if this is not the dataset's newest version", so an edit to an item that is merely old is not rejected.
Replaces the whole inputs object. Not deep-merged, so this is how a key is removed from it.
Replaces the whole expected_outputs object.
Replaces the whole metadata object.
Replaces the whole extras object.
Name of the source for this dataset item.
ID of the item in the source.
Response
The item as it reads at the version this edit committed, and that version. For a no-op, the unchanged item and the current version it was compared against. dataset_version.version is safe as base_version only for this item; re-read before editing others.