v1.24.7
This patch contains a new optional field for Batch Query API requests: common_input
.
This field allows factoring out common top-level keys in an input object, which can greatly reduce request sizes in some cases.
Here is an example:
{
"inputs": {
"A": {
"user": "alice",
"action": "write",
},
"B": {
"user": "bob"
},
"C": {
"user": "eve"
}
},
"common_input": {
"action": "read",
"object": "id1234"
}
}
The above request using common_input
is equivalent to sending this request:
{
"inputs": {
"A": {
"user": "alice",
"action": "write",
"object": "id1234"
},
"B": {
"user": "bob",
"action": "read",
"object": "id1234"
},
"C": {
"user": "eve",
"action": "read",
"object": "id1234"
}
}
}
Conflict resolution
In cases where the types are both JSON Objects, the objects' top-level keys will be merged non-recursively.
In the event of a conflict where both common_input
and the per-query input have the same key, the per-query input's key/value pair is used, as shown in the earlier example where common_input
provides the "action": "read"
key/value pair, and query "A"
provides "action": "write"
for the same top-level key/value pair.
In cases where the common_input
's type conflicts with that of the per-query input, the per-query input value is used.
Example:
{
"inputs": {
"A": [1, 2, 3]
},
"common_input": {
"foo": "bar"
}
}
The above example is equivalent to the following request, because the input type overrides:
{
"inputs": {
"A": [1, 2, 3]
}
}