---
title: "Update Linear Ancillary Geometry"
method: PUT
path: "/v1/ancillaries/linear/{item_id}/geometry"
tags: ["ancillaries"]
---

# Update Linear Ancillary Geometry

`PUT /v1/ancillaries/linear/{item_id}/geometry`

## Request

- Base URL: `https://api.shapemaker.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.shapemaker.io/v1/ancillaries/linear/{item_id}/geometry`
- Auth: OAuth 2
  - Password
  - Token URL: `/v1/auth`

This endpoint saves a geometry and overwrites the item's width, depth
and weight with the result. Clusters and groups built from the item, also
through other groups, are recalculated, a group's members making room for
one that grew, and the sites placing any of them get new equivalent rows.

## Path parameters

- `item_id` integer, required

## Request body

- LinearAncillaryGeometryUpdateInput
  - `name` string, required
  - `geometry` union, required
    - SingleFeederGeometry
      - `kind` 'single_feeder'
      - `diameterMm` number, required
      - `weightKgPerM` number, required
      - `customForceCoefficient` number, nullable
    - FeederClusterGeometry: A bundle of one single feeder from the library, defined with the ancillary groups.
      - `kind` 'feeder_cluster'
      - `feederId` integer, required
      - `gapMm` number
      - `arrangement` union, required
        - RectangularArrangement
          - `shape` 'rectangular'
          - `rows` integer, required
          - `cols` integer, required
          - `cells` array[], required
            - unknown[]
              - …
        - CircularArrangement
          - `shape` 'circular'
          - `count` integer, required
      - `customForceCoefficient` number, nullable
    - FeederLayoutGeometry: A feeder group: a feeder cluster put together from single feeders and other clusters in the library, each placed across the group's section.
      - `kind` 'feeder_layout'
      - `members` ClusterMember[], required
        - `itemId` integer, required
        - `fromLeftMm` number
        - `fromFloorMm` number
        - `clampWeightKgPerM` number
      - `customForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
    - CableTrayGeometry: A route kind: the empty tray. What it holds is placed on each site.
      - `kind` 'cable_tray'
      - `trayWidthMm` number, required
      - `trayDepthMm` number
      - `trayWeightKgPerM` number
      - `solidityRatio` number
      - `sideSolidityRatio` number
      - `customForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
    - RungsOnlyGeometry: A route kind: rungs on equally spaced brackets, the feeders clamped to them.
      - `kind` 'rungs_only'
      - `rungLengthMm` number, required
      - `rung` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rungSpacingMm` number, required
      - `rungForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `customWeightKgPerM` number, nullable
    - CableLadderGeometry: A route kind: a ladder the feeders run on, its stiles outside the rungs.
      - `kind` 'cable_ladder'
      - `rungLengthMm` number, required
      - `rungSpacingMm` number, required
      - `stile` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rung` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `stileForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `rungForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `customWeightKgPerM` number, nullable
    - LadderGeometryInput: An access ladder: stiles outside the rungs, or rungs alone fixed to the structure, with an optional cage and fall arrest.
      - `kind` 'ladder'
      - `ladderType` 'standard' | 'rungs_only' | 'cage', required
      - `rungLengthMm` number, required
      - `stile` union
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rung` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rungSpacingMm` number, required
      - `stileForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `rungForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `cage` LadderCage: Each hoop leaves the outside of a stile, runs straight out to the cage width (diameter_mm), rounds the back in a semicircle and returns to the other stile. depth_mm runs from the rungs to the back of the cage, at least half the width.
        - `diameterMm` number, required
        - `depthMm` number, required
        - `hoopSpacingMm` number, required
        - `hoopWidthMm` number, required
        - `hoopThicknessMm` number, required
        - `verticalBarCount` integer, required
        - `verticalBarWidthMm` number, required
        - `verticalBarThicknessMm` number, required
      - `fallArrest` LadderFallArrest
        - `section` union, required
          - WireRopeSection
            - `shape` 'wire_rope'
            - `diameterMm` number, required
          - ChannelSection: A fall arrest rail: its web lies against the rungs, its flanges point at the climber.
            - `shape` 'channel'
            - `webMm` number, required
            - `flangeMm` number, required
            - `thicknessMm` number, required
        - `forceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
          - `front` number, nullable
          - `side` number, nullable
      - `customWeightKgPerM` number, nullable

## Response `200`

Successful Response

- LinearAncillaryView
  - `id` integer, required
  - `name` string, required
  - `type` 'single_feeder' | 'feeder_cluster' | 'route' | 'ladder', required
  - `createdBy` string, required
  - `widthMm` number, required
  - `depthMm` number, required
  - `weightKgPerM` number, required
  - `geometry` union, required
    - SingleFeederGeometry
      - `kind` 'single_feeder'
      - `diameterMm` number, required
      - `weightKgPerM` number, required
      - `customForceCoefficient` number, nullable
    - FeederClusterGeometry: A bundle of one single feeder from the library, defined with the ancillary groups.
      - `kind` 'feeder_cluster'
      - `feederId` integer, required
      - `gapMm` number
      - `arrangement` union, required
        - RectangularArrangement
          - `shape` 'rectangular'
          - `rows` integer, required
          - `cols` integer, required
          - `cells` array[], required
            - unknown[]
              - …
        - CircularArrangement
          - `shape` 'circular'
          - `count` integer, required
      - `customForceCoefficient` number, nullable
    - FeederLayoutGeometry: A feeder group: a feeder cluster put together from single feeders and other clusters in the library, each placed across the group's section.
      - `kind` 'feeder_layout'
      - `members` ClusterMember[], required
        - `itemId` integer, required
        - `fromLeftMm` number
        - `fromFloorMm` number
        - `clampWeightKgPerM` number
      - `customForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
    - CableTrayGeometry: A route kind: the empty tray. What it holds is placed on each site.
      - `kind` 'cable_tray'
      - `trayWidthMm` number, required
      - `trayDepthMm` number
      - `trayWeightKgPerM` number
      - `solidityRatio` number
      - `sideSolidityRatio` number
      - `customForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
    - RungsOnlyGeometry: A route kind: rungs on equally spaced brackets, the feeders clamped to them.
      - `kind` 'rungs_only'
      - `rungLengthMm` number, required
      - `rung` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rungSpacingMm` number, required
      - `rungForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `customWeightKgPerM` number, nullable
    - CableLadderGeometry: A route kind: a ladder the feeders run on, its stiles outside the rungs.
      - `kind` 'cable_ladder'
      - `rungLengthMm` number, required
      - `rungSpacingMm` number, required
      - `stile` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rung` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `stileForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `rungForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `customWeightKgPerM` number, nullable
    - LadderGeometryOutput: An access ladder: stiles outside the rungs, or rungs alone fixed to the structure, with an optional cage and fall arrest.
      - `kind` 'ladder'
      - `ladderType` 'standard' | 'rungs_only' | 'cage', required
      - `rungLengthMm` number, required
      - `stile` union
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rung` union, required
        - RoundBarSection
          - `shape` 'round_bar'
          - `diameterMm` number, required
        - FlatBarSection: width_mm faces the front wind, depth_mm the side wind.
          - `shape` 'flat_bar'
          - `widthMm` number, required
          - `depthMm` number, required
        - AngleSection
          - `shape` 'angle'
          - `widthMm` number, required
          - `depthMm` number, required
          - `thicknessMm` number, required
      - `rungSpacingMm` number, required
      - `stileForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `rungForceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
        - `front` number, nullable
        - `side` number, nullable
      - `cage` LadderCage: Each hoop leaves the outside of a stile, runs straight out to the cage width (diameter_mm), rounds the back in a semicircle and returns to the other stile. depth_mm runs from the rungs to the back of the cage, at least half the width.
        - `diameterMm` number, required
        - `depthMm` number, required
        - `hoopSpacingMm` number, required
        - `hoopWidthMm` number, required
        - `hoopThicknessMm` number, required
        - `verticalBarCount` integer, required
        - `verticalBarWidthMm` number, required
        - `verticalBarThicknessMm` number, required
      - `fallArrest` LadderFallArrest
        - `section` union, required
          - WireRopeSection
            - `shape` 'wire_rope'
            - `diameterMm` number, required
          - ChannelSection: A fall arrest rail: its web lies against the rungs, its flanges point at the climber.
            - `shape` 'channel'
            - `webMm` number, required
            - `flangeMm` number, required
            - `thicknessMm` number, required
        - `forceCoefficients` CustomForceCoefficients: Custom force coefficients on a member's width (W, front wind) and depth (D, side wind). Blank ones follow the site's design standard.
          - `front` number, nullable
          - `side` number, nullable
      - `customWeightKgPerM` number, nullable
  - `calculation` LinearAncillaryCalculationResult, required
    - `widthMm` number, required
    - `depthMm` number, required
    - `weightKgPerM` number, required
    - `iceProfile` IceProfile, required: Iced projections and ice volume of one metre of the ancillary, as polynomials of the ice thickness so each analysis evaluates them at its own local thickness. The ice volume is the smallest of the candidates.
      - `frontMm` IcePolynomial, required: c0 + c1·t + c2·t², t being the radial ice thickness in mm.
        - `c0` number
        - `c1` number
        - `c2` number
      - `sideMm` IcePolynomial, required: c0 + c1·t + c2·t², t being the radial ice thickness in mm.
        - `c0` number
        - `c1` number
        - `c2` number
      - `iceVolumeMm3PerM` IcePolynomial[], required
        - `c0` number
        - `c1` number
        - `c2` number
    - `feeders` FeederPoint[]
      - `xMm` number, required
      - `yMm` number, required
      - `diameterMm` number, required
    - `extentWidthMm` number
    - `extentDepthMm` number
    - `pitchMm` number, nullable
    - `rungsPerM` number, nullable
    - `solidityRatio` number, nullable
    - `calculatedWeightKgPerM` number, nullable
    - `drawing` LinearDrawing
      - `widthMm` number, required
      - `heightMm` number, required
      - `shapes` LinearDrawingShape[], required
        - `kind` 'circle' | 'rect' | 'polygon' | 'polyline', required
        - `tone` 'stile' | 'rung' | 'cage' | 'cage_bar' | 'fall_arrest', required
        - `xMm` number, required
        - `yMm` number, required
        - `widthMm` number, required
        - `heightMm` number, required
        - `rotationDeg` number
        - `strokeMm` number, nullable
        - `ringsMm` array[]
          - array[]
            - unknown[]
              - …
      - `dimensions` LinearDrawingDimension[]
        - `side` 'bottom' | 'left' | 'right', required
        - `tier` integer
        - `startXMm` number, required
        - `startYMm` number, required
        - `endXMm` number, required
        - `endYMm` number, required
      - `notes` LinearDrawingNote[]
        - `xMm` number, required
        - `yMm` number, required
        - `text` string, required
    - `frontView` LinearDrawing
      - `widthMm` number, required
      - `heightMm` number, required
      - `shapes` LinearDrawingShape[], required
        - `kind` 'circle' | 'rect' | 'polygon' | 'polyline', required
        - `tone` 'stile' | 'rung' | 'cage' | 'cage_bar' | 'fall_arrest', required
        - `xMm` number, required
        - `yMm` number, required
        - `widthMm` number, required
        - `heightMm` number, required
        - `rotationDeg` number
        - `strokeMm` number, nullable
        - `ringsMm` array[]
          - array[]
            - unknown[]
              - …
      - `dimensions` LinearDrawingDimension[]
        - `side` 'bottom' | 'left' | 'right', required
        - `tier` integer
        - `startXMm` number, required
        - `startYMm` number, required
        - `endXMm` number, required
        - `endYMm` number, required
      - `notes` LinearDrawingNote[]
        - `xMm` number, required
        - `yMm` number, required
        - `text` string, required
  - `usedByIds` integer[], required
  - `isSiteCopy` boolean, required

## Other responses

- `400`: Bad Request
- `422`: Validation Error

---

[API](https://skmtc.dev/shapemaker/apis/shapemaker-api.md) - [All operations](https://skmtc.dev/shapemaker/apis/shapemaker-api/llms.txt) - [OpenAPI document](https://skmtc.dev/shapemaker/apis/shapemaker-api/revisions/b8461cf1236c?raw)
