addedInput schema / properties / options / properties / mitrePairing
Added value: +{
+ "default": false,
+ "description": "Pair parts of one section whose facing ends (`parts[].ends`) can share ONE saw cut. Off by default: a request without it is solved exactly as before. On, a plan with pairs is returned only when it ranks strictly better than the unpaired plan by the packer's own ranking (parts placed first, then material — or price with `minimizeCost`); otherwise the unpaired plan comes back. Pairs only, no chains of three or more.",
+ "type": "boolean"
+}
addedInput schema / properties / parts / items / properties / depth
Added value: +{
+ "description": "Mitre pairing only: the side of the bar the `angle` of `ends` is seen on. Required with `ends` (a 1D part has no cross-section to take it from). Unit-agnostic: pick one unit (mm, inch, …) for every length in the request and every length in the response is in that same unit. Nothing is converted server-side.",
+ "exclusiveMinimum": 0,
+ "type": "number"
+}
addedInput schema / properties / parts / items / properties / ends
Added value: +{
+ "description": "The angled ends of a part, read only with `options.mitrePairing`. Two parts of one section whose facing ends lie in one plane (after a turn `flip` allows) can be cut with ONE saw cut between them: the triangle between the long and the short point is not wasted. Without `mitrePairing` the ends are not used (a warning says so) and the part packs as its `length`.",
+ "properties": {
+ "end": {
+ "description": "One end cut of a part, in degrees from square (0 = a square end), signed. The part is measured long point to long point (`length` is its overall length). A part whose two end cuts would cross inside its section (shorter than its leads) cannot be made: a 400 `invalid_request` naming `parts[i].ends` says how long it must at least be.",
+ "properties": {
+ "angle": {
+ "description": "The face angle: the mitre or plumb cut as seen on the `depth` side (wood: on `sh` as entered).",
+ "exclusiveMaximum": 90,
+ "exclusiveMinimum": -90,
+ "type": "number"
+ },
+ "bevel": {
+ "default": 0,
+ "description": "The edge angle: the bevel as seen on the `thickness` side (wood: on `sw` as entered). A compound cut has both.",
+ "exclusiveMaximum": 90,
+ "exclusiveMinimum": -90,
+ "type": "number"
+ }
+ },
+ "required": [
+ "angle"
+ ],
+ "type": "object"
+ },
+ "start": {
+ "description": "One end cut of a part, in degrees from square (0 = a square end), signed. The part is measured long point to long point (`length` is its overall length). A part whose two end cuts would cross inside its section (shorter than its leads) cannot be made: a 400 `invalid_request` naming `parts[i].ends` says how long it must at least be.",
+ "properties": {
+ "angle": {
+ "description": "The face angle: the mitre or plumb cut as seen on the `depth` side (wood: on `sh` as entered).",
+ "exclusiveMaximum": 90,
+ "exclusiveMinimum": -90,
+ "type": "number"
+ },
+ "bevel": {
+ "default": 0,
+ "description": "The edge angle: the bevel as seen on the `thickness` side (wood: on `sw` as entered). A compound cut has both.",
+ "exclusiveMaximum": 90,
+ "exclusiveMinimum": -90,
+ "type": "number"
+ }
+ },
+ "required": [
+ "angle"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / parts / items / properties / flip
Added value: +{
+ "default": "none",
+ "description": "Mitre pairing only: which 180° turns of the part on the bar are allowed, so its angled end can meet a neighbour's. `none` (default — a profiled moulding or one-sided stock), `face` (end for end, the crown or top edge stays up — roof members), `edge` (end for end over the edge — flat stock, frames), `any`.",
+ "enum": [
+ "none",
+ "face",
+ "edge",
+ "any"
+ ],
+ "type": "string"
+}
addedInput schema / properties / parts / items / properties / thickness
Added value: +{
+ "description": "Mitre pairing only: the other side, the one the `bevel` is seen on. Required with `ends`. Unit-agnostic: pick one unit (mm, inch, …) for every length in the request and every length in the response is in that same unit. Nothing is converted server-side.",
+ "exclusiveMinimum": 0,
+ "type": "number"
+}
addedOutput schema / properties / cutPlan / items / properties / angle
Added value: +{
+ "type": "number"
+}
addedOutput schema / properties / cutPlan / items / properties / bevel
Added value: +{
+ "type": "number"
+}
addedOutput schema / properties / metrics / properties / sharedCuts
Added value: +{
+ "type": "integer"
+}
addedOutput schema / properties / rods / items / properties / parts / items / properties / flipped
Added value: +{
+ "enum": [
+ "face",
+ "edge",
+ "roll"
+ ],
+ "type": "string"
+}
addedOutput schema / properties / rods / items / properties / parts / items / properties / sharedCut
Added value: +{
+ "properties": {
+ "angle": {
+ "type": "number"
+ },
+ "bevel": {
+ "type": "number"
+ },
+ "kerfAlongAxis": {
+ "type": "number"
+ },
+ "lead": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "angle",
+ "bevel",
+ "kerfAlongAxis",
+ "lead"
+ ],
+ "type": "object"
+}