Ban creating manual objects using bulk endpoints
The philosophy we follow regarding bulk endpoints has been historically inconsistent. Should bulk element/classification/… endpoints allow creating items without a worker version or worker run ("manual" objects)? Sometimes, we said yes, sometimes no. There are pros and cons to both answers.
- Allowing manual objects in bulk makes the bulk endpoints consistent with their non-bulk counterparts
- Allowing manual objects can reduce the amount of API requests when someone has a legitimate reason to submit a lot of manual items
- Blocking manual objects can prompt API users to ask why we block them in a good ol' case of XY problem, causing us to realize they are making a mistake and should be using a worker version/worker run for their custom script, turn it into a worker, or something similar
- Blocking manual objects can make API users realize they made a mistake when they did intend to use a worker version/run; updating/deleting manual data can be much harder to do after the fact as we do not have user IDs or creation dates on all objects
- Blocking manual objects can occasionally open the door to further query optimizations (less
NULL
values to deal with!)
#1387 (closed) has recently opened that can of worms again. On Whereby, @babadie made the Executive Decision™ that No, we should not allow manual objects in bulk endpoints.
We need to list, for each bulk endpoint, whether or not it is possible to create objects without any worker run nor worker version, whether or not that is documented, and whether or not that is in use in any critical code.