# info.description
DT API specification for the Menu and Project endpoints.

# paths./api/menu/.get.description
Returns the hierarchical navigation menu for the user's currently selected project (User.current_project). If the user has a stored menu selection for this project, the corresponding item is marked with `active: true` and its parents are marked with `cssClass: expanded`.

# paths./api/menu/.post.description
Creates the hierarchical navigation menu for the user's currently selected project (User.current_project). Returns **409 Conflict** if a menu already exists (use **PUT** to replace). Write access requires DT read/write rights (or staff/superuser). Menu nesting is limited to **4** levels.

# paths./api/menu/.post.responses.400.description
Validation error / No current project selected

# paths./api/menu/.put.description
Replaces the entire menu for the user's currently selected project (User.current_project). Implementation deletes all existing menu items for the project and recreates them from the request payload. Menu nesting is limited to **4** levels. Write access requires DT read/write rights (or staff/superuser).

# paths./api/menu/.put.responses.400.description
Validation error / No current project selected

# paths./api/menu/.delete.description
Deletes all menu items for the user's currently selected project (User.current_project). Write access requires DT read/write rights (or staff/superuser).

# paths./api/menu/project/{id}/.get.description
Returns the hierarchical navigation menu for the given project id. If the user is authenticated and has a stored selection for this project, the corresponding item is marked with `active: true` and its parents are marked with `cssClass: expanded`.

# paths./api/menu/project/{id}/.post.description
Creates the hierarchical navigation menu for the given project id. Returns **409 Conflict** if the project already has a menu (use **PUT** to replace it). Write access requires an authenticated user with DT read/write rights (or staff/superuser). Menu nesting is limited to **4** levels.

# paths./api/menu/project/{id}/.put.description
Replaces the entire menu for the given project id. Implementation deletes all existing menu items for the project and recreates them from the request payload. Menu nesting is limited to **4** levels. Write access requires an authenticated user with DT read/write rights (or staff/superuser).

# paths./api/menu/project/{id}/delete/.delete.description
Deletes all menu items (MenuProjectItem) for the given project id.

# paths./api/menu/selection/.get.description
Returns the user's last selected menu item for a given project. Provide `projectId` as a query parameter; if omitted, the user's `current_project` is used when available.

# paths./api/menu/selection/.get.parameters[].description
Project id to get the selection for. Optional if the user has `current_project` set.

# paths./api/menu/selection/.post.description
Persists the last selected menu item for the given project so subsequent calls to `Menu_get` can reflect the active path. Returns a simple status.

# paths./api/organisation/.post.description
Create a new organisation (staff/superuser only).

# paths./api/organisation/{id}/.put.description
Update an organisation by id (staff/superuser). PUT and PATCH both support partial updates.

# paths./api/organisation/{id}/.patch.description
Update an organisation by id (staff/superuser). PUT and PATCH both support partial updates.

# paths./api/organisation/{id}/.delete.description
Delete an organisation by id (staff/superuser).

# paths./api/organisation/list/.get.description
List all organisations (authenticated users).

# paths./api/project/.post.description
Create a new project (staff/superuser only).

# paths./api/project/{id}/.put.description
Update a project by id (staff/superuser).

# paths./api/project/{id}/.patch.description
Update a project by id (staff/superuser).

# paths./api/project/{id}/.delete.description
Delete a project by id (staff/superuser).

# paths./api/project/list/.get.description
List projects visible to the current user.

# paths./api/project/selection/.get.description
Returns the current user's selected project (User.current_project).

# paths./api/project/selection/.post.description
Sets the current user's selected project (User.current_project) to the provided project id. The user must be allowed to access the project.

# paths./api/user/.get.description
Returns the profile of the authenticated requesting user.

# paths./service/api/raster/tiff/{id}/data/histogram.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/data/histogram.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/data/histogram.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
The maximum value for the color mapping.

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
The minimum value for the color mapping.

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
The value to map as no data (often made transparent).

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
The color palette to map the band values (named Matplotlib colormaps or palettable palettes). `cmap` alias supported.

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
This is either ``linear`` (the default) or ``discrete``. If a palette is specified, ``linear`` uses a piecewise linear interpolation, and ``discrete`` uses exact colors from the palette with the range of the data mapped into the specified number of colors (e.g., a palette with two colors will split exactly halfway between the min and max values).

# paths./service/api/raster/tiff/{id}/data/pixel.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.description
Return the region tile binary from world coordinates in given EPSG.

Note
----
Use the `units` query parameter to inidicate the projection of the given
coordinates. This can be different than the `projection` parameter used
to open the tile source. `units` defaults to `EPSG:4326` for geospatial
images, otherwise, must use `pixels`.

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
Image format (jpeg | png | tiff | tiled | jfif | heif | avif | bmp | dib | pcx | eps | gif | jpeg2000 | mpo | ppm | sgi | tga | webp | xbm | jpg | jp2 | tif)

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
The maximum value for the color mapping.

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
The minimum value for the color mapping.

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
The value to map as no data (often made transparent).

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
The color palette to map the band values (named Matplotlib colormaps or palettable palettes). `cmap` alias supported.

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
This is either ``linear`` (the default) or ``discrete``. If a palette is specified, ``linear`` uses a piecewise linear interpolation, and ``discrete`` uses exact colors from the palette with the range of the data mapped into the specified number of colors (e.g., a palette with two colors will split exactly halfway between the min and max values).

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/data/region.{fmt}.get.parameters[].description
The projection/units of the region coordinates.

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
Image format (jpeg | png | tiff | tiled | jfif | heif | avif | bmp | dib | pcx | eps | gif | jpeg2000 | mpo | ppm | sgi | tga | webp | xbm | jpg | jp2 | tif)

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
The maximum value for the color mapping.

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
The minimum value for the color mapping.

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
The value to map as no data (often made transparent).

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
The color palette to map the band values (named Matplotlib colormaps or palettable palettes). `cmap` alias supported.

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
This is either ``linear`` (the default) or ``discrete``. If a palette is specified, ``linear`` uses a piecewise linear interpolation, and ``discrete`` uses exact colors from the palette with the range of the data mapped into the specified number of colors (e.g., a palette with two colors will split exactly halfway between the min and max values).

# paths./service/api/raster/tiff/{id}/data/thumbnail.{fmt}.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/info/band.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/info/band.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/info/band.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/info/bands.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/info/bands.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/info/bands.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/info/frames.get.summary
Retrieve all channels/bands for each frame. This is used to generate a UI to control how the image is displayed.

# paths./service/api/raster/tiff/{id}/info/frames.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/info/frames.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/info/frames.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/info/metadata.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/info/metadata.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/info/metadata.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/info/metadata_internal.get.summary
Returns additional known metadata about the tile source.

# paths./service/api/raster/tiff/{id}/info/metadata_internal.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/info/metadata_internal.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/info/metadata_internal.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/info/tiffdump.get.summary
Returns tifftools tiffdump JSON. This will raise a `ValidationError` if the image is not a Tiff.

# paths./service/api/raster/tiff/{id}/info/tiffdump.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
Image format (jpeg | png | tiff | tiled | jfif | heif | avif | bmp | dib | pcx | eps | gif | jpeg2000 | mpo | ppm | sgi | tga | webp | xbm | jpg | jp2 | tif)

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The maximum value for the color mapping.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The minimum value for the color mapping.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The value to map as no data (often made transparent).

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The color palette to map the band values (named Matplotlib colormaps or palettable palettes). `cmap` alias supported.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
This is either ``linear`` (the default) or ``discrete``. If a palette is specified, ``linear`` uses a piecewise linear interpolation, and ``discrete`` uses exact colors from the palette with the range of the data mapped into the specified number of colors (e.g., a palette with two colors will split exactly halfway between the min and max values).

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The 0-based X position of the tile on the specified Z level.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The 0-based Y position of the tile on the specified Z level.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}.{fmt}.get.parameters[].description
The Z level of the tile. May range from [0, levels], where 0 is the lowest resolution, single tile for the whole source.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}/corners.get.summary
Returns bounds of a tile for a given x, y, z index.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}/corners.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}/corners.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}/corners.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}/corners.get.parameters[].description
The 0-based X position of the tile on the specified Z level.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}/corners.get.parameters[].description
The 0-based Y position of the tile on the specified Z level.

# paths./service/api/raster/tiff/{id}/tiles/{z}/{x}/{y}/corners.get.parameters[].description
The Z level of the tile. May range from [0, levels], where 0 is the lowest resolution, single tile for the whole source.

# paths./service/api/raster/tiff/{id}/tiles/metadata.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/api/raster/tiff/{id}/tiles/metadata.get.parameters[].description
The projection in which to open the image (try `EPSG:3857`).

# paths./service/api/raster/tiff/{id}/tiles/metadata.get.parameters[].description
The source to use when opening the image. Use the `large-image/sources` endpoint to list the available sources.

# paths./service/controlled-properties.get.description
API endpoint that allows projects to be viewed or edited.

# paths./service/controlled-properties.post.description
API endpoint that allows projects to be viewed or edited.

# paths./service/controlled-properties/{id}.get.description
API endpoint that allows projects to be viewed or edited.

# paths./service/controlled-properties/{id}.get.parameters[].description
A unique integer value identifying this controlled property.

# paths./service/controlled-properties/{id}.put.description
API endpoint that allows projects to be viewed or edited.

# paths./service/controlled-properties/{id}.put.parameters[].description
A unique integer value identifying this controlled property.

# paths./service/controlled-properties/{id}.patch.description
API endpoint that allows projects to be viewed or edited.

# paths./service/controlled-properties/{id}.patch.parameters[].description
A unique integer value identifying this controlled property.

# paths./service/controlled-properties/{id}.delete.description
API endpoint that allows projects to be viewed or edited.

# paths./service/controlled-properties/{id}.delete.parameters[].description
A unique integer value identifying this controlled property.

# paths./service/device-models.get.description
API endpoint that allows device models to be viewed or edited.

# paths./service/device-models.post.description
API endpoint that allows device models to be viewed or edited.

# paths./service/device-models/{id}.get.description
API endpoint that allows device models to be viewed or edited.

# paths./service/device-models/{id}.get.parameters[].description
A unique integer value identifying this device model.

# paths./service/device-models/{id}.put.description
API endpoint that allows device models to be viewed or edited.

# paths./service/device-models/{id}.put.parameters[].description
A unique integer value identifying this device model.

# paths./service/device-models/{id}.patch.description
API endpoint that allows device models to be viewed or edited.

# paths./service/device-models/{id}.patch.parameters[].description
A unique integer value identifying this device model.

# paths./service/device-models/{id}.delete.description
API endpoint that allows device models to be viewed or edited.

# paths./service/device-models/{id}.delete.parameters[].description
A unique integer value identifying this device model.

# paths./service/device/{device_id}/{from_date}/{to_date}/historic/data.get.description
API endpoint that allows viewing device historic data filtered by device_id.
parameter: from -> iso from date e.g., 2025-03-12
parameter: to -> iso to date e.g., 2025-10-12

# paths./service/device/{device_id}/{from_date}/{to_date}/historic/data/.get.description
API endpoint that allows viewing device historic data filtered by device_id.
parameter: from -> iso from date e.g., 2025-03-12
parameter: to -> iso to date e.g., 2025-10-12

# paths./service/device/{device_id}/{from_date}/{to_date}/historic/data/.get.parameters[].description
A unique integer value identifying this observed data.

# paths./service/device/{device_id}/aggregate/{from_date}/{to_date}/{agg.get.description
Retrieves aggregated historical observed data for a specific device within a date range.

This method fetches device data based on the provided device ID and date range,
applying the specified aggregation type to return time-series data points.
The aggregation type determines how the data is grouped and averaged over time intervals.

:param request: The HTTP request object containing metadata and headers.
:param device_id: The unique identifier of the device for which to retrieve data.
:param from_date: The start date of the time range in ISO format (e.g., '2025-03-12').
:param to_date: The end date of the time range in ISO format (e.g., '2025-10-12').
:param agg_type: The aggregation resolution type (e.g., 'hourly', 'daily', 'weekly').
    For the moment it defaults to 'average' aggregation.
:return: Response object containing a list of dictionaries with 'observed_at' and 'value' keys.

# paths./service/device/{device_id}/data/ingest/{id}.delete.parameters[].description
A unique integer value identifying this ingestion job.

# paths./service/device/{device_id}/live/data.get.description
API endpoint that allows viewing of device live data filtered by device_id.

# paths./service/device/{device_id}/live/data/{id}.get.description
API endpoint that allows viewing of device live data filtered by device_id.

# paths./service/device/{device_id}/live/data/{id}.get.parameters[].description
A unique integer value identifying this observed data.

# paths./service/devices.get.description
API endpoint that allows devices to be viewed or edited.

# paths./service/devices.post.description
API endpoint that allows devices to be viewed or edited.

# paths./service/devices/{id}.get.description
API endpoint that allows devices to be viewed or edited.

# paths./service/devices/{id}.get.parameters[].description
A unique integer value identifying this device.

# paths./service/devices/{id}.put.description
API endpoint that allows devices to be viewed or edited.

# paths./service/devices/{id}.put.parameters[].description
A unique integer value identifying this device.

# paths./service/devices/{id}.patch.description
API endpoint that allows devices to be viewed or edited.

# paths./service/devices/{id}.patch.parameters[].description
A unique integer value identifying this device.

# paths./service/devices/{id}.delete.description
API endpoint that allows devices to be viewed or edited.

# paths./service/devices/{id}.delete.parameters[].description
A unique integer value identifying this device.

# paths./service/entities.get.description
API endpoint that allows Entities to be viewed or edited.

# paths./service/entities.post.description
API endpoint that allows Entities to be viewed or edited.

# paths./service/entities/{id}.get.description
API endpoint that allows Entities to be viewed or edited.

# paths./service/entities/{id}.get.parameters[].description
A unique integer value identifying this entity.

# paths./service/entities/{id}.put.description
API endpoint that allows Entities to be viewed or edited.

# paths./service/entities/{id}.put.parameters[].description
A unique integer value identifying this entity.

# paths./service/entities/{id}.patch.description
API endpoint that allows Entities to be viewed or edited.

# paths./service/entities/{id}.patch.parameters[].description
A unique integer value identifying this entity.

# paths./service/entities/{id}.delete.description
API endpoint that allows Entities to be viewed or edited.

# paths./service/entities/{id}.delete.parameters[].description
A unique integer value identifying this entity.

# paths./service/entity/{entity_id}/devices.get.description
API endpoint that allows viewing and editing devices associated with a specific entity.

This viewset provides CRUD operations for devices filtered by entity_id. The entity_id
is extracted from the URL parameters and used to retrieve only the devices that belong
to that specific entity.

# paths./service/entity/{entity_id}/devices.post.description
API endpoint that allows viewing and editing devices associated with a specific entity.

This viewset provides CRUD operations for devices filtered by entity_id. The entity_id
is extracted from the URL parameters and used to retrieve only the devices that belong
to that specific entity.

# paths./service/entity/{entity_id}/devices/{id}.get.description
API endpoint that allows viewing and editing devices associated with a specific entity.

This viewset provides CRUD operations for devices filtered by entity_id. The entity_id
is extracted from the URL parameters and used to retrieve only the devices that belong
to that specific entity.

# paths./service/entity/{entity_id}/devices/{id}.get.parameters[].description
A unique integer value identifying this device.

# paths./service/entity/{entity_id}/devices/{id}.put.description
API endpoint that allows viewing and editing devices associated with a specific entity.

This viewset provides CRUD operations for devices filtered by entity_id. The entity_id
is extracted from the URL parameters and used to retrieve only the devices that belong
to that specific entity.

# paths./service/entity/{entity_id}/devices/{id}.put.parameters[].description
A unique integer value identifying this device.

# paths./service/entity/{entity_id}/devices/{id}.patch.description
API endpoint that allows viewing and editing devices associated with a specific entity.

This viewset provides CRUD operations for devices filtered by entity_id. The entity_id
is extracted from the URL parameters and used to retrieve only the devices that belong
to that specific entity.

# paths./service/entity/{entity_id}/devices/{id}.patch.parameters[].description
A unique integer value identifying this device.

# paths./service/entity/{entity_id}/devices/{id}.delete.description
API endpoint that allows viewing and editing devices associated with a specific entity.

This viewset provides CRUD operations for devices filtered by entity_id. The entity_id
is extracted from the URL parameters and used to retrieve only the devices that belong
to that specific entity.

# paths./service/entity/{entity_id}/devices/{id}.delete.parameters[].description
A unique integer value identifying this device.

# paths./service/rasters.get.description
API endpoint that allows projects to be viewed or edited.

# paths./service/rasters.post.description
API endpoint that allows projects to be viewed or edited.

# paths./service/rasters/{id}.get.description
API endpoint that allows projects to be viewed or edited.

# paths./service/rasters/{id}.get.parameters[].description
A unique integer value identifying this raster file.

# paths./service/rasters/{id}.put.description
API endpoint that allows projects to be viewed or edited.

# paths./service/rasters/{id}.put.parameters[].description
A unique integer value identifying this raster file.

# paths./service/rasters/{id}.patch.description
API endpoint that allows projects to be viewed or edited.

# paths./service/rasters/{id}.patch.parameters[].description
A unique integer value identifying this raster file.

# paths./service/rasters/{id}.delete.description
API endpoint that allows projects to be viewed or edited.

# paths./service/rasters/{id}.delete.parameters[].description
A unique integer value identifying this raster file.

# paths./service/shapefile/{shapefile_id}/line.get.description
API endpoint that allows viewing and editing shapefile polygons.

# paths./service/shapefile/{shapefile_id}/line/{id}.get.description
API endpoint that allows viewing and editing shapefile polygons.

# paths./service/shapefile/{shapefile_id}/line/{id}.get.parameters[].description
A unique integer value identifying this line data.

# paths./service/shapefile/{shapefile_id}/multiline.get.description
API endpoint that allows viewing and editing shapefile polygons.

# paths./service/shapefile/{shapefile_id}/multiline/{id}.get.description
API endpoint that allows viewing and editing shapefile polygons.

# paths./service/shapefile/{shapefile_id}/multiline/{id}.get.parameters[].description
A unique integer value identifying this line data.

# paths./service/shapefile/{shapefile_id}/multipolygon.get.description
API endpoint that allows viewing and editing shapefile multi polygons.

# paths./service/shapefile/{shapefile_id}/multipolygon/{id}.get.description
API endpoint that allows viewing and editing shapefile multi polygons.

# paths./service/shapefile/{shapefile_id}/multipolygon/{id}.get.parameters[].description
A unique integer value identifying this polygon data.

# paths./service/shapefile/{shapefile_id}/point.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/{shapefile_id}/point/{id}.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/{shapefile_id}/point/{id}.get.parameters[].description
A unique integer value identifying this point data.

# paths./service/shapefile/{shapefile_id}/polygon.get.description
API endpoint that allows viewing and editing shapefile polygons.

# paths./service/shapefile/{shapefile_id}/polygon/{id}.get.description
API endpoint that allows viewing and editing shapefile polygons.

# paths./service/shapefile/{shapefile_id}/polygon/{id}.get.parameters[].description
A unique integer value identifying this polygon data.

# paths./service/shapefile/features{shapefile_id}/multipolygon.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features{shapefile_id}/multipolygon/{id}.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features{shapefile_id}/multipolygon/{id}.get.parameters[].description
A unique integer value identifying this polygon data.

# paths./service/shapefile/features/{shapefile_id}/linestring.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/linestring/{id}.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/linestring/{id}.get.parameters[].description
A unique integer value identifying this line data.

# paths./service/shapefile/features/{shapefile_id}/multilinestring.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/multilinestring/{id}.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/multilinestring/{id}.get.parameters[].description
A unique integer value identifying this line data.

# paths./service/shapefile/features/{shapefile_id}/point.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/point/{id}.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/point/{id}.get.parameters[].description
A unique integer value identifying this point data.

# paths./service/shapefile/features/{shapefile_id}/polygon.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/polygon/{id}.get.description
API endpoint that allows viewing and editing shapefile Points.

# paths./service/shapefile/features/{shapefile_id}/polygon/{id}.get.parameters[].description
A unique integer value identifying this polygon data.

# paths./service/shapefiles.get.description
API endpoint that allows projects to be viewed or edited.

# paths./service/shapefiles.post.description
API endpoint that allows projects to be viewed or edited.

# paths./service/shapefiles/{id}.get.description
API endpoint that allows projects to be viewed or edited.

# paths./service/shapefiles/{id}.get.parameters[].description
A unique integer value identifying this shape file.

# paths./service/shapefiles/{id}.put.description
API endpoint that allows projects to be viewed or edited.

# paths./service/shapefiles/{id}.put.parameters[].description
A unique integer value identifying this shape file.

# paths./service/shapefiles/{id}.patch.description
API endpoint that allows projects to be viewed or edited.

# paths./service/shapefiles/{id}.patch.parameters[].description
A unique integer value identifying this shape file.

# paths./service/shapefiles/{id}.delete.description
API endpoint that allows projects to be viewed or edited.

# paths./service/shapefiles/{id}.delete.parameters[].description
A unique integer value identifying this shape file.

# paths./service/variable-type.get.description
API endpoint that allows global variables to be viewed or edited.

# paths./service/variable-type.post.description
API endpoint that allows global variables to be viewed or edited.

# paths./service/variable-type/{id}.get.description
API endpoint that allows global variables to be viewed or edited.

# paths./service/variable-type/{id}.get.parameters[].description
A unique integer value identifying this variable type.

# paths./service/variable-type/{id}.put.description
API endpoint that allows global variables to be viewed or edited.

# paths./service/variable-type/{id}.put.parameters[].description
A unique integer value identifying this variable type.

# paths./service/variable-type/{id}.patch.description
API endpoint that allows global variables to be viewed or edited.

# paths./service/variable-type/{id}.patch.parameters[].description
A unique integer value identifying this variable type.

# paths./service/variable-type/{id}.delete.description
API endpoint that allows global variables to be viewed or edited.

# paths./service/variable-type/{id}.delete.parameters[].description
A unique integer value identifying this variable type.

# components.schemas.CategoryEnum.description
* `sensor` - Sensor
* `actuator` - Actuator
* `meter` - Meter
* `hvac` - HVAC
* `network` - Network
* `implement` - Implement
* `irr-system` - irrSystem
* `irr-section` - irrSection
* `end-gun` - Endgun
* `other` - Other

# components.schemas.DeviceClassEnum.description
* `C0` - Class 0
* `C1` - Class 1
* `C2` - Class 2
* `na` - Not Applicable

# components.schemas.IngestionJobStatusEnum.description
* `queued` - Queued
* `processing` - Processing
* `completed` - Completed
* `failed` - Failed

# components.schemas.MenuItemInRequest.description
Input shape for creating/updating a project's menu.

The API accepts a hierarchical structure (children under `items`).
Sibling ordering is controlled by `order` (optional). If omitted, items are
ordered by their position in the input list.

# components.schemas.MenuItemInRequest.properties.type.description
Item type, e.g. 'link', 'group', 'command'.

# components.schemas.MenuItemOut.properties.type.description
Item type, e.g. 'link', 'command', 'divider'.

# components.schemas.MenuSelectionGetOut.properties.menuItemId.description
Last selected menu item id for that project (null if none stored).

# components.schemas.MenuSelectionInRequest.properties.menuItemId.description
Id of the clicked or selected menu item.

# components.schemas.NameEnum.description
* `temperature` - Temperature
* `co2` - CO2
* `humidity` - Humidity
* `light` - Light
* `motion` - Motion
* `fillingLevel` - Filling Level
* `occupancy` - Occupancy
* `power` - Power
* `pressure` - Pressure
* `smoke` - Smoke
* `energy` - Energy
* `airPollution` - Air Pollution
* `noiseLevel` - Noise Level
* `weatherConditions` - Weather Conditions
* `precipitation` - Precipitation
* `windSpeed` - Wind Speed
* `windDirection` - Wind Direction
* `atmosphericPressure` - Atmospheric Pressure
* `solarRadiation` - Solar Radiation
* `depth` - Depth
* `pH` - pH
* `conductivity` - Conductivity
* `conductance` - Conductance
* `tss` - TSS
* `tds` - TDS
* `turbidity` - Turbidity
* `salinity` - Salinity
* `orp` - ORP
* `cdom` - CDOM
* `waterPollution` - Water Pollution
* `location` - Location
* `speed` - Speed
* `heading` - Heading
* `weight` - Weight
* `waterConsumption` - Water Consumption
* `gasConsumption` - Gas Consumption
* `electricityConsumption` - Electricity Consumption
* `soilMoisture` - Soil Moisture
* `trafficFlow` - Traffic Flow
* `eatingActivity` - Eating Activity
* `milking` - Milking
* `movementActivity` - Movement Activity

# components.schemas.Organisation.description
Organisation CRUD serializer.

The Organisation model derives its `slug` from `name` in `save()`. We validate that the
derived slug is unique (and fits in the DB field) to avoid DB IntegrityErrors (HTTP 500).

# components.schemas.OrganisationRequest.description
Organisation CRUD serializer.

The Organisation model derives its `slug` from `name` in `save()`. We validate that the
derived slug is unique (and fits in the DB field) to avoid DB IntegrityErrors (HTTP 500).

# components.schemas.PatchedOrganisationRequest.description
Organisation CRUD serializer.

The Organisation model derives its `slug` from `name` in `save()`. We validate that the
derived slug is unique (and fits in the DB field) to avoid DB IntegrityErrors (HTTP 500).

# components.schemas.PatchedProjectRequest.properties.abbreviation.description
An abbreviation of the project, up to 12 characters long, that will represent the project in all relevant pages.

# components.schemas.Project.properties.abbreviation.description
An abbreviation of the project, up to 12 characters long, that will represent the project in all relevant pages.

# components.schemas.ProjectRequest.properties.abbreviation.description
An abbreviation of the project, up to 12 characters long, that will represent the project in all relevant pages.

# components.schemas.ProjectStatusEnum.description
* `Active` - Active
* `Draft` - Draft
* `Inactive` - Inactive