AOIs

An AOI (Area of Interest) is the container the rest of the SatMRV workflow attaches to — it covers one or more of your Fields, and everything downstream (stratification data orders, stratification zones, sample plans, samples) is scoped to one. This page covers AOI CRUD and pricing. See ./OVERVIEW.mdx for the base URL, auth, and response envelope shared across all of SatMRV, and for how AOIs fit into the wider workflow.

Endpoints

MethodPathPurpose
GETaois/List AOIs
POSTaois/Create an AOI
GETaois/{id}/Retrieve a single AOI
PUT / PATCHaois/{id}/Update an AOI
DELETEaois/{id}/Soft-delete an AOI (returns 204)
GETaois/{id}/price/Look up pricing for an AOI

All paths above are relative to https://backend.spacenus.de/api/v1.2/sat-mrv/.

Permissions

Every AOI endpoint also requires your company to have an active stratification subscription — a company without one is rejected regardless of which permission slugs its role holds.

ActionRequired permission
List / Retrieve / Priceaoi.view
Createaoi.create
Update / Partial updateaoi.edit
Deleteaoi.delete

Creating an AOI

POST https://backend.spacenus.de/api/v1.2/sat-mrv/aois/
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json

{
  "name": "North Block AOI",
  "description": "Stratification pilot for the north block",
  "field_uuids": ["FIELD_UUID_1", "FIELD_UUID_2"]
}
FieldTypeRequiredNotes
namestringNo
descriptionstringNo
field_uuidsarray of strings (UUIDs), write-onlyYesThe Fields this AOI covers

A successful create returns HTTP 200 (the shared envelope normalizes the underlying 201 to 200 — see ./OVERVIEW.mdx):

{
  "status": "success",
  "message": "AOI created successfully.",
  "data": {
    "aoi_uuid": "AOI_UUID",
    "name": "North Block AOI",
    "description": "Stratification pilot for the north block",
    "aoi_fields": [
      {"field_uuid": "FIELD_UUID_1"},
      {"field_uuid": "FIELD_UUID_2"}
    ],
    "is_map_requested": false
  }
}

Exact message wording isn't guaranteed byte-for-byte — treat status and data as the stable contract.

Response fields

Beyond the standard nested company/created_by fields present on every SatMRV resource:

FieldNotes
aoi_uuidServer-generated identifier for the AOI
aoi_fieldsNested, read-only list of the Fields linked to this AOI
is_map_requestedRead-only boolean

List responses (GET aois/) additionally include two read-only counts per AOI: total_saved_sample_plan_maps and total_saved_stratification_maps.

Pricing lookup

GET aois/{id}/price/ tells you what a stratification/SOC order would cost for this AOI.

GET https://backend.spacenus.de/api/v1.2/sat-mrv/aois/AOI_UUID/price/
Authorization: Bearer YOUR_TOKEN

A successful lookup returns HTTP 200:

{
  "status": "success",
  "message": "...",
  "data": {
    "area": 12.4,
    "prices": [
      {"map_type": "STR", "total_price": 37.2, "price_per_unit": 3, "aoi_area": 12.4},
      {"map_type": "SOC", "total_price": 62.0, "price_per_unit": 5, "aoi_area": 12.4}
    ]
  }
}

If your company has no subscription price configured for stratification, you instead get HTTP 404:

{
  "message": "You do not have a subscription for stratification service."
}

Any other lookup failure also returns HTTP 404, with a generic error message.

"Already ordered" discount, not a pricing bug. If a stratification data order already exists for this AOI under your company, total_price and price_per_unit in the price response are forced to 0 — you've already paid for that order, so this is intentional, not an error. Don't be surprised if a price lookup on an AOI you've already ordered for comes back free.

Status codes

StatusMeaning here
200List, retrieve, update, price, and create (create's underlying 201 is normalized to 200)
204Delete succeeded (soft delete)
400Request body failed validation
403Missing the required permission slug, or your company has no active stratification subscription
404AOI not found, or (price lookup) no subscription price configured / a generic lookup failure

What's next

Once you have an AOI, order the data it needs to be stratified — see ./STRATIFICATION_DATA_ORDERS.mdx — then move on to the stratification workflow to produce zones and a sample plan.