Guides
Bulk Operations
Most collection endpoints — Job.Structure.Nodes,
Job.Structure.Members, the load primitives, and so on — expose two
shapes:
- Single:
Nodes.PostAsync(NodeCreate body)— one entity per call - Bulk:
Nodes.Bulk.PostAsync(List<NodeCreate> body)— many entities per call
Differences
| Single | Bulk | |
|---|---|---|
| Round trips | One per item | One per batch |
| Validation | Each item is validated as the call arrives | The full batch is validated up front, before any items are created |
| Failure response | Throws on the first failing item | Returns a *BulkResult with Succeeded and Errors lists |
| Partial commit on validation failure | Items submitted before the failure are already created | Nothing is created unless every item validates |
| Partial success | Not applicable | Opt-in via ?continueOnError=true |
Example: creating 100 nodes
Bulk endpoints accept a List<XCreate> and return an XBulkResult
with the created entities under Succeeded and any failures under
Errors. BulkError.Index is the position in the input list, so you
can match an error back to the body you sent.
The same pattern applies to Job.Structure.Members,
Job.Structure.Sections, and the load primitives — every collection
endpoint has a .Bulk counterpart.
Partial success with continueOnError
A bulk POST is all-or-nothing by default — if any item fails
validation, nothing is created and the call returns errors. Pass
continueOnError=true to commit every item that validates and report
the rest in Errors:
When to use bulk
- Creating or updating more than one entity in a single script or automated job.
- Importing or replicating a model from another source.
- Anywhere you'd otherwise loop a single-item call.
Last modified on

