smartcut-dev · Schema

ResultResponse

Complete result. **Coordinates.** Every position (`parts[].x/y`, `cuts[].x1…y2`, `offcuts[].x/y`) is measured on its stock sheet from the origin corner, with the sheet's long side (`l`) along x and its short side (`w`) along y. y = 0 is the origin edge and **y increases upward**, so "top" means high y. On a vertical panel saw the origin edge is the bottom rail the sheet stands on; with `guillotineOptions.verticalPanelSaw` the narrow strips are placed at the top of the sheet (high y) and the waste at the bottom, and the cut `order` works from the top down. **Stacks.** Sheets that share a cutting pattern may be cut together as a stack (`saw.options.stackingMode`). A stack is listed ONCE in `stock`, with `stack` = its number of sheets; `stacks` lists every stack with each sheet's position (1 = top) and its number across the job, and each part cut from a stack carries `stacked: { sheet, of, stack }`. For a label, print "sheet `stacked.sheet` of `stacked.of`, stack `stacked.stack`". What the control cuts together WITHIN a sheet (strips cut in one pass) is per sheet in `metadata.productionTime.sheets[].stacking`, for saws with a cutting-time model.

CompanyDeveloper ToolsAutomationCI/CDAPIs

Properties

Name Type Description
jobId number
calcTime number Calculation time in milliseconds
saw object Saw configuration used. On a mixed (multi-saw) job this is the job's DEFAULT saw — attribute each stock via its `sawId` and the `saws` echo.
saws array The identified saws a mixed job ran with (the request's `saw` array plus any hoisted inline material saws). Present ONLY on mixed jobs.
materials array The materials a mixed job was partitioned by. Present ONLY on mixed jobs.
stock array Stock with layouts
parts array Parts with placement
stacks array What the saw cuts together: one entry per used `stock` entry, in `stock` order, with its depth and every sheet's position in the stack and number in the job. The depths sum to the number of sheets use
stripRepeats array Identical strips across the job's sheets and within one, for an operator who stacks strips by hand (e.g. on a vertical panel saw). Each group names its member strips by `stock[].id` and strip number;
cuts array Cut instructions
offcuts array Every remaining offcut piece. Filter on `retained` for the pieces the saw would take back as stock.
unusableParts array Parts rejected BEFORE optimisation because no available stock can ever hold them (larger than every stock size, or no stock with a matching material/thickness). This is NOT the full list of parts left
metadata object Complete analysis (all internal fields)
View JSON Schema on GitHub

JSON Schema

smartcut-dev-result-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/smartcut-dev/json-schema/smartcut-dev-result-response-schema.json",
  "title": "ResultResponse",
  "description": "Complete result.\n\n**Coordinates.** Every position (`parts[].x/y`, `cuts[].x1…y2`, `offcuts[].x/y`) is measured on its stock sheet from the origin corner, with the sheet's long side (`l`) along x and its short side (`w`) along y. y = 0 is the origin edge and **y increases upward**, so \"top\" means high y. On a vertical panel saw the origin edge is the bottom rail the sheet stands on; with `guillotineOptions.verticalPanelSaw` the narrow strips are placed at the top of the sheet (high y) and the waste at the bottom, and the cut `order` works from the top down.\n\n**Stacks.** Sheets that share a cutting pattern may be cut together as a stack (`saw.options.stackingMode`). A stack is listed ONCE in `stock`, with `stack` = its number of sheets; `stacks` lists every stack with each sheet's position (1 = top) and its number across the job, and each part cut from a stack carries `stacked: { sheet, of, stack }`. For a label, print \"sheet `stacked.sheet` of `stacked.of`, stack `stacked.stack`\". What the control cuts together WITHIN a sheet (strips cut in one pass) is per sheet in `metadata.productionTime.sheets[].stacking`, for saws with a cutting-time model.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_original/smartcut-dev-openapi-openapi.json#/components/schemas/ResultResponse",
  "type": "object",
  "properties": {
    "jobId": {
      "type": "number"
    },
    "calcTime": {
      "type": "number",
      "description": "Calculation time in milliseconds"
    },
    "saw": {
      "$ref": "#/$defs/Saw",
      "description": "Saw configuration used. On a mixed (multi-saw) job this is the job's DEFAULT saw — attribute each stock via its `sawId` and the `saws` echo."
    },
    "saws": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/IdentifiedSaw"
      },
      "description": "The identified saws a mixed job ran with (the request's `saw` array plus any hoisted inline material saws). Present ONLY on mixed jobs."
    },
    "materials": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Material"
      },
      "description": "The materials a mixed job was partitioned by. Present ONLY on mixed jobs."
    },
    "stock": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ResultStock"
      },
      "description": "Stock with layouts"
    },
    "parts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ResultPart"
      },
      "description": "Parts with placement"
    },
    "stacks": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ResultStack"
      },
      "description": "What the saw cuts together: one entry per used `stock` entry, in `stock` order, with its depth and every sheet's position in the stack and number in the job. The depths sum to the number of sheets used. Present ONLY when at least one stack holds two or more sheets."
    },
    "stripRepeats": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ResultStripRepeat"
      },
      "description": "Identical strips across the job's sheets and within one, for an operator who stacks strips by hand (e.g. on a vertical panel saw). Each group names its member strips by `stock[].id` and strip number; each part of a member strip carries `stripGroup`. Present ONLY when at least one strip repeats."
    },
    "cuts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Cut"
      },
      "description": "Cut instructions"
    },
    "offcuts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Offcut"
      },
      "description": "Every remaining offcut piece. Filter on `retained` for the pieces the saw would take back as stock."
    },
    "unusableParts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/UnusablePart"
      },
      "description": "Parts rejected BEFORE optimisation because no available stock can ever hold them (larger than every stock size, or no stock with a matching material/thickness). This is NOT the full list of parts left out of the layout — it is the \"can never fit\" subset. For a completeness check (\"did every part place?\") use metadata.unplacedParts, or compare the count of placed parts to the count requested. unusableParts also appears within metadata.unplacedParts."
    },
    "metadata": {
      "$ref": "#/$defs/Metadata",
      "description": "Complete analysis (all internal fields)"
    }
  },
  "required": [
    "jobId",
    "stock",
    "parts",
    "metadata"
  ],
  "$defs": {
    "Cut": {
      "type": "object",
      "description": "Cut instruction with coordinates",
      "properties": {
        "x1": {
          "type": "number",
          "description": "Start X coordinate of the cut"
        },
        "x2": {
          "type": "number",
          "description": "End X coordinate of the cut"
        },
        "y1": {
          "type": "number",
          "description": "Start Y coordinate of the cut"
        },
        "y2": {
          "type": "number",
          "description": "End Y coordinate of the cut"
        },
        "dimension": {
          "type": "string",
          "enum": [
            "l",
            "w"
          ],
          "description": "Cut dimension (l=horizontal, w=vertical)"
        },
        "position": {
          "type": "string",
          "enum": [
            "top",
            "bottom",
            "left",
            "right",
            "merged"
          ],
          "description": "Cut position relative to segment"
        },
        "isTrim": {
          "type": "boolean",
          "description": "Whether this is a trim cut"
        },
        "order": {
          "type": [
            "number",
            "null"
          ],
          "description": "Position of this cut in its board's cutting sequence. Numbering restarts on every board: to cut a board, take the cuts whose `stock.id` is that board and run them in ascending `order`. Stock trim cuts carry negative values and come first. With `guillotineOptions.verticalPanelSaw` the sequence works from the top of the board down."
        },
        "phase": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "description": "The saw turn this cut is made on, read from the cut's geometry: 0 = the board's first cutting direction (the opening rips), 1 = after the material is turned once, and so on. A head cut counts like any other cut: the section it opens is turned before it is ripped, so that section's first cuts are one turn later. The quantity `guillotineOptions.maxPhase` caps; `stock[].analysis.maxPhase` is the deepest on each board. Null on cuts that carry no turn (efficiency, nesting and roll layouts)."
        },
        "stock": {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "description": "ID of the stock this cut belongs to"
            }
          }
        }
      }
    },
    "Extras": {
      "type": "object",
      "description": "Extras container (V3 format)",
      "properties": {
        "banding": {
          "type": "object",
          "properties": {
            "sides": {
              "$ref": "#/$defs/SideValues"
            }
          },
          "description": "Edge banding"
        },
        "finish": {
          "type": "object",
          "properties": {
            "faces": {
              "type": "object",
              "properties": {
                "a": {
                  "type": "string",
                  "description": "Front face"
                },
                "b": {
                  "type": "string",
                  "description": "Back face"
                }
              }
            },
            "sides": {
              "$ref": "#/$defs/SideValues"
            }
          },
          "description": "Surface finish"
        },
        "planing": {
          "type": "object",
          "properties": {
            "sides": {
              "$ref": "#/$defs/SideValues"
            },
            "faces": {
              "type": "object",
              "properties": {
                "a": {
                  "type": "boolean"
                },
                "b": {
                  "type": "boolean"
                }
              }
            }
          },
          "description": "Planing operations"
        },
        "imageUpload": {
          "type": "object",
          "description": "Image upload data"
        }
      }
    },
    "IdentifiedSaw": {
      "description": "A saw with an id — the array form of `saw` and the `ResultResponse.saws` echo. Materials reference it via `sawId`.",
      "allOf": [
        {
          "$ref": "#/$defs/Saw"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "string",
              "minLength": 1,
              "description": "Identifier materials reference via `sawId`. The FIRST element of the `saw` array is the job's default saw."
            }
          },
          "required": [
            "id"
          ]
        }
      ]
    },
    "Issue": {
      "type": "object",
      "description": "Validation issue for a part",
      "properties": {
        "message": {
          "type": "string",
          "description": "Human-readable error message"
        },
        "type": {
          "type": "string",
          "enum": [
            "error",
            "warning"
          ],
          "description": "Issue severity"
        },
        "category": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "saw",
              "stock",
              "part",
              "group",
              "machining",
              "extras"
            ]
          },
          "description": "Issue category"
        },
        "field": {
          "type": "array",
          "items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "description": "Path to the field with the issue"
        }
      }
    },
    "Machining": {
      "type": [
        "object",
        "null"
      ],
      "description": "Machining operations on a part — the same shape in the request and the result.",
      "properties": {
        "holes": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "description": "X position of the hole centre, from the left edge"
              },
              "y": {
                "type": "number",
                "description": "Y position of the hole centre, from the bottom edge"
              },
              "diameter": {
                "type": "number",
                "description": "Hole diameter"
              },
              "depth": {
                "type": "number",
                "description": "Hole depth. Absent for a through hole"
              },
              "face": {
                "type": "number",
                "enum": [
                  0,
                  1
                ],
                "description": "Face index (0=front, 1=back)"
              },
              "type": {
                "type": "string",
                "enum": [
                  "regular",
                  "hinge",
                  "shelf"
                ],
                "description": "Hole type"
              },
              "edge": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "l1",
                  "l2",
                  "w1",
                  "w2"
                ],
                "description": "Edge the hole is bored into. null for a face hole"
              }
            },
            "required": [
              "x",
              "y",
              "diameter"
            ]
          },
          "description": "Drilled holes"
        },
        "hingeHoles": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "position": {
                "type": "number",
                "description": "Position along the side"
              },
              "side": {
                "type": "string",
                "enum": [
                  "l1",
                  "l2",
                  "w1",
                  "w2"
                ],
                "description": "Side the hinge is placed on"
              },
              "face": {
                "type": "number",
                "enum": [
                  0,
                  1
                ],
                "description": "Face index (0=front, 1=back)"
              },
              "numHoles": {
                "type": "number",
                "description": "Number of holes in the hinge"
              },
              "diameter": {
                "type": "number",
                "description": "Hole diameter"
              },
              "depth": {
                "type": "number",
                "description": "Hole depth"
              },
              "hingeLength": {
                "type": "number",
                "description": "Length of the hinge"
              },
              "distanceFromEdge": {
                "type": "number",
                "description": "Distance from the edge to the hole centre"
              },
              "outerSpacing": {
                "type": "number",
                "description": "Spacing from the hinge ends to the outer holes"
              }
            },
            "required": [
              "position",
              "side"
            ]
          },
          "description": "Hinge hole sets"
        },
        "corners": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "index": {
                "type": "integer",
                "enum": [
                  0,
                  1,
                  2,
                  3
                ],
                "description": "Corner (0=bottom-left, 1=bottom-right, 2=top-right, 3=top-left)"
              },
              "type": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "radius",
                  "bevel"
                ],
                "description": "Corner modification"
              },
              "size": {
                "type": [
                  "number",
                  "null"
                ],
                "description": "Size of the corner modification"
              }
            }
          },
          "description": "Corner modifications"
        },
        "grooves": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "direction": {
                "type": "string",
                "enum": [
                  "l",
                  "w"
                ],
                "description": "Groove direction (l=along the length, w=along the width)"
              },
              "position": {
                "type": "number",
                "description": "Distance from the near edge, perpendicular to the groove"
              },
              "start": {
                "type": "number",
                "description": "Start offset along the groove"
              },
              "length": {
                "type": "number",
                "description": "Groove length. Absent for the full side"
              },
              "width": {
                "type": "number",
                "description": "Groove width"
              },
              "depth": {
                "type": "number",
                "description": "Groove depth"
              },
              "face": {
                "type": "number",
                "enum": [
                  0,
                  1
                ],
                "description": "Face index (0=front, 1=back)"
              }
            }
          },
          "description": "Grooves"
        }
      }
    },
    "Material": {
      "type": "object",
      "description": "A material with a saw association — the unit a MIXED job is partitioned and optimised by. Associate it to a saw with `sawId` OR an inline `saw` (never both); with neither, it runs on the job's default saw.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Material identifier stock/parts reference via their `materialId`. Defaults to `name`."
        },
        "name": {
          "type": "string",
          "description": "Material name. Stock/parts without a `materialId` attach by matching their `material` (and thickness, when `thicknesses` is set)."
        },
        "type": {
          "type": "string",
          "enum": [
            "sheet",
            "linear",
            "roll"
          ],
          "default": "sheet",
          "description": "Stock type of this material — must equal the associated saw's `stockType`."
        },
        "sawId": {
          "type": "string",
          "description": "Reference to an identified saw in the `saw` array. Mutually exclusive with inline `saw`."
        },
        "saw": {
          "$ref": "#/$defs/Saw",
          "description": "Inline saw for this material (hoisted to an identified saw with id = material id). Mutually exclusive with `sawId`."
        },
        "thicknesses": {
          "type": "array",
          "items": {
            "type": "number",
            "minimum": 0
          },
          "description": "Thicknesses this material is available in — used for name-based association."
        },
        "grain": {
          "type": "string",
          "enum": [
            "l",
            "w",
            ""
          ],
          "description": "Grain direction of the material."
        }
      },
      "required": [
        "name"
      ]
    },
    "Metadata": {
      "type": "object",
      "description": "Complete result metadata with all analysis fields",
      "properties": {
        "totalEfficiency": {
          "type": "number",
          "default": 0
        },
        "totalStockArea": {
          "type": "number",
          "default": 0
        },
        "totalStockUsedArea": {
          "type": "number",
          "default": 0
        },
        "totalStockUnusedArea": {
          "type": "number",
          "default": 0
        },
        "totalPartsArea": {
          "type": "number",
          "default": 0
        },
        "totalPartArea": {
          "type": "number",
          "description": "Total area of the placed parts, including every sheet of a stack. Same value as totalPartsArea"
        },
        "totalUnusedPartsArea": {
          "type": "number",
          "default": 0
        },
        "totalOffcutsArea": {
          "type": "number",
          "default": 0
        },
        "totalOffcuts": {
          "type": "number",
          "default": 0
        },
        "totalStockCost": {
          "type": "number",
          "default": 0
        },
        "stockAreaCost": {
          "type": "number",
          "default": 0
        },
        "bandingLengthByType": {
          "type": "object",
          "additionalProperties": {
            "type": "number"
          },
          "default": {},
          "description": "Banding per material type"
        },
        "totalBandingLength": {
          "type": "number",
          "default": 0
        },
        "finishAreaByType": {
          "type": "object",
          "additionalProperties": {
            "type": "number"
          },
          "default": {},
          "description": "Finish area per type"
        },
        "totalFinishArea": {
          "type": "number",
          "default": 0
        },
        "planingAreaByType": {
          "type": "object",
          "additionalProperties": {
            "type": "number"
          },
          "default": {},
          "description": "Planing area per type"
        },
        "totalPlaningArea": {
          "type": "number",
          "default": 0
        },
        "totalStockWeight": {
          "type": "number",
          "description": "Total weight of the stock used, from each stock's weight. 0 when no stock declares a weight"
        },
        "totalPartWeight": {
          "type": "number",
          "description": "Total weight of the placed parts, estimated from each stock's weight by volume. 0 when no stock declares a weight and thickness"
        },
        "totalCutLength": {
          "type": "number",
          "default": 0
        },
        "totalStackedCutLength": {
          "type": "number",
          "default": 0
        },
        "totalCuts": {
          "type": "number",
          "default": 0
        },
        "totalStackedCuts": {
          "type": "number",
          "default": 0
        },
        "maxPhase": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0,
          "description": "Deepest saw turn any board in the job needs — the max of stock[].analysis.maxPhase (root cuts at 0, +1 per direction flip; the quantity guillotineOptions.maxPhase caps). null when no board carries turn-stamped cuts"
        },
        "phaseStep": {
          "type": "object",
          "description": "Present when the optimiser tried a deeper turn cap than the job's (saw.guillotineOptions.adaptiveMaxPhase). Absent when none was tried.",
          "properties": {
            "from": {
              "type": "integer",
              "description": "The cap the job ran at (yours, or the saw profile's default)"
            },
            "to": {
              "type": "integer",
              "description": "The cap used when kept is true; otherwise the deepest cap tried"
            },
            "kept": {
              "type": "boolean",
              "description": "Whether a deeper cap's layout was returned"
            },
            "sheetsSaved": {
              "type": "number",
              "description": "Sheets the returned deeper layout saves (0 when none was kept)"
            },
            "secondsAdded": {
              "type": "number",
              "description": "Predicted cutting seconds the returned deeper layout adds (negative = saves). Absent without a cutting-time model"
            },
            "reason": {
              "type": "string",
              "description": "Why the returned cap won, or why none did: fewer-sheets, same-sheets-faster, same-sheets-better-offcut; more-sheets, more-stock-area, slower, same-time-no-better-offcut, no-time-estimate, hard-gate, no-result. New values may be added"
            },
            "tried": {
              "type": "array",
              "description": "Every deeper cap built, shallowest first",
              "items": {
                "type": "object",
                "properties": {
                  "cap": {
                    "type": "integer"
                  },
                  "sheets": {
                    "type": [
                      "number",
                      "null"
                    ],
                    "description": "Sheets that cap's layout needs (null = no layout)"
                  },
                  "seconds": {
                    "type": "number",
                    "description": "Its predicted cutting seconds; absent without a cutting-time model"
                  },
                  "kept": {
                    "type": "boolean",
                    "description": "Whether it beat the best layout so far"
                  },
                  "reason": {
                    "type": "string"
                  }
                }
              }
            },
            "boards": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Stock ids of the boards cut deeper than `from`"
            },
            "note": {
              "type": "string",
              "description": "The trade in one line"
            }
          }
        },
        "productionTime": {
          "type": "object",
          "description": "The predicted PRODUCTION TIME of the job on the saw, in seconds, priced from the plates its control cuts for the file the saw gets. Present only for a saw with a cutting-time model (today: Mayer `.may`, the PC7000 control); absent otherwise.",
          "properties": {
            "model": {
              "type": "string",
              "description": "The machine time model it was priced with"
            },
            "total": {
              "type": "number",
              "description": "Seconds for the whole job: every board's stack cut once, operator feed included"
            },
            "machine": {
              "type": "number",
              "description": "The machine's share of total"
            },
            "operator": {
              "type": "number",
              "description": "The operator's share of total (bringing each sheet and strip to the saw)"
            },
            "sheets": {
              "type": "array",
              "description": "Per board (per pattern)",
              "items": {
                "type": "object",
                "properties": {
                  "stockId": {
                    "type": "string",
                    "description": "The board — `stock[].id`"
                  },
                  "seconds": {
                    "type": "number",
                    "description": "One pass of the board's stack"
                  },
                  "stackDepth": {
                    "type": "integer",
                    "description": "Sheets cut together as one stack"
                  },
                  "stripStacks": {
                    "type": "integer",
                    "description": "Strips (or columns of a strip) the control cuts together with an identical one — a pass cutting k counts k − 1"
                  },
                  "plates": {
                    "type": "integer",
                    "description": "Plates the control cuts: the sheet, then each strip or column brought back to the saw"
                  },
                  "stacking": {
                    "type": "object",
                    "description": "What the saw cuts together on this board. Absent where it could not be traced.",
                    "properties": {
                      "sheetStack": {
                        "type": "object",
                        "properties": {
                          "depth": {
                            "type": "integer",
                            "description": "Sheets cut together (1 = cut alone)"
                          },
                          "secondsSaved": {
                            "type": "number",
                            "description": "Seconds the stack saves against cutting its sheets one at a time"
                          }
                        }
                      },
                      "strips": {
                        "type": "array",
                        "description": "The board's strips in written order, each as the band it is ripped as (board frame, like `parts`)",
                        "items": {
                          "type": "object",
                          "properties": {
                            "autoId": {
                              "type": "string",
                              "description": "The strip's key"
                            },
                            "x": {
                              "type": "number"
                            },
                            "y": {
                              "type": "number"
                            },
                            "l": {
                              "type": "number"
                            },
                            "w": {
                              "type": "number"
                            }
                          }
                        }
                      },
                      "passes": {
                        "type": "array",
                        "description": "Every saw pass after the sheet, in cutting order — each strip or column brought back to the saw",
                        "items": {
                          "type": "object",
                          "properties": {
                            "level": {
                              "type": "integer",
                              "description": "1 = a strip; 2 = a column of a strip"
                            },
                            "strips": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "Per unit cut in the pass, the key of its strip"
                            },
                            "rects": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "x": {
                                    "type": "number"
                                  },
                                  "y": {
                                    "type": "number"
                                  },
                                  "l": {
                                    "type": "number"
                                  },
                                  "w": {
                                    "type": "number"
                                  }
                                }
                              },
                              "description": "Per unit cut in the pass, its rectangle"
                            }
                          }
                        }
                      },
                      "stripStacks": {
                        "type": "array",
                        "description": "The passes that cut several identical strips (or columns) together",
                        "items": {
                          "type": "object",
                          "properties": {
                            "pass": {
                              "type": "integer",
                              "description": "Index into passes"
                            },
                            "strips": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "The keys of the strips cut together"
                            },
                            "depth": {
                              "type": "integer",
                              "description": "How many are cut together"
                            },
                            "secondsSaved": {
                              "type": "number",
                              "description": "Seconds saved against cutting them one at a time"
                            }
                          }
                        }
                      },
                      "sawPasses": {
                        "type": "object",
                        "properties": {
                          "before": {
                            "type": "integer",
                            "description": "Saw passes after the sheet if every strip and column were cut alone"
                          },
                          "after": {
                            "type": "integer",
                            "description": "Saw passes after the sheet as the control cuts it"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "totalBladeArea": {
          "type": "number",
          "default": 0
        },
        "totalTrimArea": {
          "type": "number",
          "default": 0
        },
        "hasMachining": {
          "type": "boolean",
          "default": false
     

# --- truncated at 32 KB (68 KB total) ---
# Full source: https://artifacts.apis.io/smartcut-dev/json-schema/smartcut-dev-result-response-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/smartcut-dev-result-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.