---
title: "Create or update a reporting unit."
method: PUT
path: "/reportingUnit"
---

# Create or update a reporting unit.

`PUT /reportingUnit`

## Request

- Base URL: `https://app.chloris.earth/api`
- URL: `https://app.chloris.earth/api/reportingUnit`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/chloris/apis/chloris-platform-api/docs/reportingUnit/put.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- ReportingUnit
  - `organizationId` string: organization ID
  - `reportingUnitId` string: reporting unit UUID
  - `controlReportingUnitId` string: control reporting unit id
  - `tags` string[]: The list of tags to organize this site into.
  - `label` string: label
  - `description` string: This is a description of a reportingUnit
  - `resolution` integer: The desired resolution of the outputs. Valid options are 30 and 10 (meters).
  - `periodChangeStartYear` integer: The start of the period of interest
  - `periodChangeEndYear` integer: The end of the period of interest (inclusive)
  - `forestBaselineYear` integer: The year of the forest baseline (periodChangeStartYear will be used if not provided)
  - `boundaryPath` string: boundary path
  - `controlBoundaryPath` string: control boundary path, only valid for initial creation.

## Response `200`

Success

- ReportingUnitEntry: A reporting unit entry
  - `organizationId` string: organization ID
  - `reportingUnitId` string: reporting unit uuid7
  - `branchId` string: If the entry is an aggregate branch (i.e. a tag), this is the branch ID
  - `controlReportingUnitId` string: The reporting unit ID of the control site
  - `controlForReportingUnitId` string: The reporting unit ID of the site this is a control for
  - `tags` string[]: A list of tags associated with the reporting unit. Acts as a key way to organize and aggregate reporting units.
  - `label` string: The label / name of the reporting unit.
  - `description` string: A description of the reporting unit.
  - `createdAt` string: When the entry was created (ISO8601)
  - `updatedAt` string: When the entry was last updated (ISO8601)
  - `analysisSubmittedAt` string: When the entry was submitted for processing (ISO8601)
  - `analysisCompletedAt` string: When the entry analysis was lasy updated (ISO8601)
  - `qualityControlledAt` string: When the entry was QC approved, without this the analysis is considered preliminary and should not be used (ISO8601)
  - `deletedAt` string: When the entry was archived (ISO8601)
  - `refundedAt` string: When the entry's usage was refunded (ISO8601)
  - `usersNotifiedAt` string: When the users were notified the site is ready, only happens once (ISO8601)
  - `webhookNotifiedAt` string: When the registered webhook was notified successfully last. Can be used to recover from dropped webhook events. (ISO8601)
  - `periodChangeStartYear` integer: The start of the period of interest
  - `periodChangeEndYear` integer: The end of the period of interest (inclusive)
  - `boundaryPath` string: The path to the geojson boundary for this site
  - `hidden` boolean: Whether the entry is hidden by default in the frontend and excluded from aggregation stats. Useful for control sites.
  - `controlReportingUnit` ReportingUnitEntry (recursive)
  - `areaKm2` number: The vector area of the reporting unit in square kilometers.
  - `analyzedAreaKm2` number: The raster area of the reporting unit in square kilometers to be used when computing densities.
  - `pointX` number: The representative circle X (long) coord, guaranteed to intersect the boundary
  - `pointY` number: The representative circle Y (lat) coord, guaranteed to intersect the boundary
  - `pointR` number: The representative circle R coord, such that the circle fully contains the boundary
  - `srcOrganizationId` string: The organization ID of the source organization for this reporting unit, used only if it was copied between environments / organizations.
  - `dataPath` string: The path to the data files for this reporting unit, used only if it was copied between environments / organizations.
  - `periodChangeStartYearStock` number: The stock value for the start of the period of interest
  - `periodChangeStartYearStockError` number: The stock error for the start of the period of interest
  - `periodChangeEndYearStock` number: The stock value for the end of the period of interest
  - `periodChangeEndYearStockError` number: The stock error for the end of the period of interest
  - `periodChange` number: The change in stock over the period of interest
  - `periodChangeError` number: The error in the change in stock over the period of interest
  - `periodChangePercent` number: The percent change in stock over the period of interest compared to the start.
  - `periodChangeGain` number: The gain in stock over the period of interest
  - `periodChangeGainError` number: The error in the gain in stock over the period of interest
  - `periodChangeLoss` number: The loss in stock over the period of interest
  - `periodChangeLossError` number: The error in the loss in stock over the period of interest
  - `dryrun` boolean: Whether the entry was created as a dryrun, prevents it from being processed and marks it as deletedAt 3 hours in the future.
  - `calibratedTo` string: The reporting unit ID of the site this is calibrated to.
  - `calibratedFrom` string: The reporting unit ID of the site this is calibrated from.
  - `mangrove` boolean: Whether or not the reporting unit is a mangrove site.

## Other responses

- `403`: Forbidden

---

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