---
title: "Update Shelter Definition"
method: PUT
path: "/v1/shelter-definitions/{definition_id}"
tags: ["shelter-definitions"]
---

# Update Shelter Definition

`PUT /v1/shelter-definitions/{definition_id}`

## 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/shelter-definitions/{definition_id}`
- Auth: OAuth 2
  - Password
  - Token URL: `/v1/auth`

This endpoint updates a shelter type. Every site the type stands on picks
the change up, exactly like editing a discrete ancillary in the library.

## Path parameters

- `definition_id` integer, required

## Request body

- ShelterDefinitionUpdateInput
  - `name` string, required
  - `widthM` number, required
  - `depthM` number, required
  - `heightM` number, required
  - `roofHeightM` number, required
  - `doorWall` 'FRONT' | 'BACK' | 'LEFT' | 'RIGHT': Which shelter wall the door, or the feeder tray, sits in. Named from the shelter's own shape rather than the site: the duopitch ridge runs along the width axis, so FRONT and BACK are the gable ends and LEFT and RIGHT are the long eave walls. In shelter-local axes (x along the width, y along the depth), the wall each name refers to is: - FRONT: the +x gable end - BACK: the -x gable end - LEFT: the -y long wall - RIGHT: the +y long wall shelter_wall_axes in app/modules/geometry_definitions/shelter/position.py is the single source of these directions; keep the two in step. Alembic does not detect changes in enums, so the enum constraint has to be manually migrated when changing this enum
  - `doorOffsetM` number, nullable
  - `doorWidthM` number, nullable
  - `trayWall` 'FRONT' | 'BACK' | 'LEFT' | 'RIGHT': Which shelter wall the door, or the feeder tray, sits in. Named from the shelter's own shape rather than the site: the duopitch ridge runs along the width axis, so FRONT and BACK are the gable ends and LEFT and RIGHT are the long eave walls. In shelter-local axes (x along the width, y along the depth), the wall each name refers to is: - FRONT: the +x gable end - BACK: the -x gable end - LEFT: the -y long wall - RIGHT: the +y long wall shelter_wall_axes in app/modules/geometry_definitions/shelter/position.py is the single source of these directions; keep the two in step. Alembic does not detect changes in enums, so the enum constraint has to be manually migrated when changing this enum
  - `trayOffsetM` number, nullable
  - `partitionOffsetM` number, nullable
  - `partitionDoorWidthM` number, nullable
  - `partitionDoorOffsetM` number, nullable
  - `partitionHasDoor` boolean

## Response `200`

Successful Response

- ShelterDefinitionView
  - `id` integer, required
  - `name` string, required
  - `createdBy` string, required
  - `widthM` number, required
  - `depthM` number, required
  - `heightM` number, required
  - `roofHeightM` number, required
  - `doorWall` 'FRONT' | 'BACK' | 'LEFT' | 'RIGHT': Which shelter wall the door, or the feeder tray, sits in. Named from the shelter's own shape rather than the site: the duopitch ridge runs along the width axis, so FRONT and BACK are the gable ends and LEFT and RIGHT are the long eave walls. In shelter-local axes (x along the width, y along the depth), the wall each name refers to is: - FRONT: the +x gable end - BACK: the -x gable end - LEFT: the -y long wall - RIGHT: the +y long wall shelter_wall_axes in app/modules/geometry_definitions/shelter/position.py is the single source of these directions; keep the two in step. Alembic does not detect changes in enums, so the enum constraint has to be manually migrated when changing this enum
  - `doorOffsetM` number, nullable
  - `doorWidthM` number, nullable
  - `trayWall` 'FRONT' | 'BACK' | 'LEFT' | 'RIGHT': Which shelter wall the door, or the feeder tray, sits in. Named from the shelter's own shape rather than the site: the duopitch ridge runs along the width axis, so FRONT and BACK are the gable ends and LEFT and RIGHT are the long eave walls. In shelter-local axes (x along the width, y along the depth), the wall each name refers to is: - FRONT: the +x gable end - BACK: the -x gable end - LEFT: the -y long wall - RIGHT: the +y long wall shelter_wall_axes in app/modules/geometry_definitions/shelter/position.py is the single source of these directions; keep the two in step. Alembic does not detect changes in enums, so the enum constraint has to be manually migrated when changing this enum
  - `trayOffsetM` number, nullable
  - `partitionOffsetM` number, nullable
  - `partitionDoorWidthM` number, nullable
  - `partitionDoorOffsetM` number, nullable
  - `partitionHasDoor` boolean

## Other responses

- `400`: Bad Request
- `404`: Not found
- `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)
