Calculations Upload And Quote Json
calculations_upload_and_quote_jsonDestructive
JSON-body twin of /upload-and-quote for clients that can only pass strings (MCP): the CAD file — and optional drawing / RFQ — ride as base64 (or data: URI) strings. Best for small single-part STEP files; base64 inflates ~33% and rides inside the call, so use the presign flow for large assemblies. Same find-or-create-by-part_number idempotency, billing, and enqueue semantics as the multipart route.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| engine | No | Pricing engine selector; retained for back-compat and always normalized to the sole engine. | arcnm |
| region | No | Pricing region override; defaults to the costing environment's region when omitted. | |
| currency | No | ISO 4217 currency code for the quote; defaults to the costing environment's currency when omitted. | |
| language | No | BCP 47 language for the calculation's captured context (e.g. 'de', 'en'). Part of the calculation's cache identity. | de |
| lot_size | No | Number of identical parts produced per batch (1 to 1,000,000,000). | |
| folder_id | No | Optional workspace folder to file the created part into. | |
| on_conflict | No | How to resolve a part_number that already exists: keep_folder (add a revision, leave the part where it is — the historical behaviour), move (add a revision and re-file into folder_id), new_part (create a separate part under a distinct number), or skip (upload nothing, create no calculation, meter nothing). The outcome is always reported in ``filing``. | keep_folder |
| part_number | Yes | Natural-key part number; reused to attach a new revision if the part already exists. | |
| cad_file_b64 | Yes | Base64 (or a data: URI) of the 3D CAD file (e.g. STEP). Required. | |
| cad_filename | Yes | CAD filename including extension, e.g. bracket.step — used for format detection. | |
| material_ref | No | Free-form material reference (URN, Werkstoffnummer, AISI/SAE code, trade name, or your SKU). Unresolvable values are rejected with 422 material_unresolved plus ranked candidates. Omit to price the material read from the part's drawing (or the environment default). | |
| nest_item_id | No | Price this calculation's material on its part's line of a job nest — the `id` of a line (`items[].id`) of a job nest that has solved it. The material is then the line's share of the sheets the job nest cut it from together with other parts, less its share of what their skeleton and reusable rests earn back; everything else is priced as usual. The line must be of your organization, of this costing environment and of this part revision, and its job nest must have solved it; otherwise the request is rejected with 422 `nest_item_unresolved`, `details.reason` saying why. It cannot be combined with `stock_format_id` or with customer-supplied material. An upload creates a new part revision, so the upload forms reject every line. A line of the sheets an assembly shares among its own components prices that assembly only: naming one is rejected as `not_found`, and a re-run of such a component prices it on its own sheet. Omit it to price the part on its own sheet. | |
| rfq_file_b64 | No | Optional base64 (or data: URI) of an RFQ text file. | |
| rfq_filename | No | RFQ filename including extension. | |
| annual_volume | No | Expected yearly quantity used to amortize setup cost (1 to 1,000,000,000). | |
| sheet_gauge_mm | No | Sheet thickness in millimetres — required when the CAD file is a DXF flat pattern (a 2D cutting file carries no thickness); ignored for STEP. | |
| stock_format_id | No | Price this calculation on one stock format — the `id` of a format from `GET /stock-formats`. An id names the format, not only the version it came from: when the format has been changed since, the version current on the day the calculation is created is used. An id your organization cannot price with today (unknown, retired or hidden) is rejected with 422 `stock_format_unresolved`. When the part cannot be cut from that format — too small, not bought in the part's thickness or material, or one the machine cannot load — or is not cut from sheet at all (milled, turned or bought finished), the calculation is priced as if none had been chosen, and `analytics.pipeline_notes` says why (`stock_format_pin_unavailable`). Omit it to price on the format that uses the least material per part. | |
| cad_content_type | No | MIME type of the CAD file, when known. | |
| drawing_file_b64 | No | Optional base64 (or data: URI) of a 2D drawing (PDF/PNG/JPEG). | |
| drawing_filename | No | Drawing filename including extension. | |
| rfq_content_type | No | MIME type of the RFQ file, when known. | |
| material_grade_id | No | UUID of a resolved material grade; takes precedence over material_ref when both are supplied. | |
| provided_stock_kind | No | Shape of the provided stock; 'near_net_profile' scopes the plan. | none |
| drawing_content_type | No | MIME type of the drawing file, when known. | |
| material_is_provided | No | True when the customer supplies the raw material (beigestellt). | |
| costing_environment_id | No | UUID of the costing environment to price against. Omit to use your organization's default environment. | |
| costing_environment_ids | No | Price the part in several environments at once, in comparison order. The file is uploaded once; each environment becomes one calculation and counts as one against the plan quota. The response then carries ``batch_id`` and ``environment_runs``. Mutually exclusive with ``costing_environment_id``. |