---
title: "Add Shelter Definition"
method: POST
path: "/v1/shelter-definitions"
tags: ["shelter-definitions"]
---

# Add Shelter Definition

`POST /v1/shelter-definitions`

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

This endpoint adds a shelter type to the organization's library. Omitted
dimensions fall back to the reference shelter (2.75 x 2.33 m footprint,
2.4 m walls, 0.75 m duopitch roof, single-leaf door in a gable end).

## Request body

- ShelterDefinitionCreateInput
  - `name` string, nullable
  - `widthM` number, nullable
  - `depthM` number, nullable
  - `heightM` number, nullable
  - `roofHeightM` number, nullable
  - `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, nullable

## Response `201`

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
- `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)
