Get Custom Ingredient Version Changes
Return a structural diff of version_id relative to compared_to (defaults to its parent).
before holds values at the comparison point; after holds values
at the subject version. Only changed top-level fields appear in
data.field_changes; an empty map means the two states are
equivalent. Each changed field also carries a data.field_relevance
entry classifying its downstream label impact (ADR 0008 D7):
label_affecting, availability_affecting, or
non_label_affecting. Diffing a version against itself returns 400.
Path Parameters
Subject version ULID — the version whose changes are being described. 26-character Crockford Base32, globally unique within the custom ingredient's history.
^[0-9A-HJKMNP-TV-Z]{26}$26 <= length <= 26Query Parameters
Comparison-point version ULID — the baseline the subject is described against. Optional; defaults to the parent of version_id (i.e. 'what changed at this version?'). Pass an arbitrary ULID for free-form comparison. When version_id is the initial commit, omitting compared_to produces the full added view of the version.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://api.bettermenu.live/studio/custom-ingredients/string/versions/stringstringstringstringst/changes"{
"data": {
"field_changes": {
"property1": {
"field_changes": {
"property1": {},
"property2": {}
},
"context": {}
},
"property2": {
"field_changes": {
"property1": {},
"property2": {}
},
"context": {}
}
},
"field_relevance": {
"property1": "label_affecting",
"property2": "label_affecting"
}
},
"meta": {
"version": "string",
"request_id": "string",
"timestamp": "string"
}
}{
"type": "https://api.bettermenu.live/errors/recipe_not_found",
"title": "Recipe Not Found",
"status": 400,
"detail": "Recipe rcpe_abc123 does not exist",
"code": "recipe_not_found",
"retryable": true,
"instance": "/api/v1/recipes/rcpe_abc123",
"trace_id": "req_xyz789",
"errors": [
{}
],
"invalid_ids": [
"f_abc123",
"f_xyz789"
]
}{
"type": "https://api.bettermenu.live/errors/recipe_not_found",
"title": "Recipe Not Found",
"status": 400,
"detail": "Recipe rcpe_abc123 does not exist",
"code": "recipe_not_found",
"retryable": true,
"instance": "/api/v1/recipes/rcpe_abc123",
"trace_id": "req_xyz789",
"errors": [
{}
],
"invalid_ids": [
"f_abc123",
"f_xyz789"
]
}{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string",
"input": null,
"ctx": {}
}
]
}