Skip to content

List, tag, rename, and delete point clouds

You are viewing in-progress documentation for v2 (Beta). Switch to the stable version for the current production release.

Point clouds are the heaviest data in v2 and carry the tightest count quotas, so knowing what you have — and removing what you do not need — matters more here than for other resources.

  1. An API key: my-api-key.

Use the - wildcard in place of a domain id to see everything you own:

GET domains/-/pointclouds
curl -X 'GET' \
'https://api-v2-prod-nyvjyh5ywa-uw.a.run.app/domains/-/pointclouds?size=5&sort_by=created_on&sort_order=descending' \
-H 'accept: application/json' \
-H 'api-key: my-api-key'

The envelope is current_page, page_size, total_items, and point_clouds. Pagination is page (zero-indexed) and size (1–1000, default 100).

The SDK returns the page as a plain list of PointCloud objects — the envelope fields (total_items, current_page) are not surfaced, so page through with page / size when one page is not enough.

Drop the wildcard for a single domain, and narrow with type, source, or tag:

GET pointclouds?type=als
curl -X 'GET' \
'https://api-v2-prod-nyvjyh5ywa-uw.a.run.app/domains/your-domain-id/pointclouds?type=als' \
-H 'accept: application/json' \
-H 'api-key: my-api-key'
ParameterValues
typeals, tls
source3dep, upload
tagany tag on the cloud
sort_bycreated_on, modified_on, name
sort_orderascending, descending
page, sizezero-indexed page, 1–1000 per page

PATCH edits metadata only — name, description, and tags. tags replaces the whole list rather than appending to it:

PATCH the point cloud
curl -X 'PATCH' \
'https://api-v2-prod-nyvjyh5ywa-uw.a.run.app/domains/your-domain-id/pointclouds/your-point-cloud-id' \
-H 'accept: application/json' \
-H 'api-key: my-api-key' \
-H 'Content-Type: application/json' \
-d '{
"name": "Blackfoot ALS 2021 (MT_Statewide_P3_4_B21)",
"tags": ["blackfoot", "3dep", "pinned", "documented"]
}'

A metadata edit never moves the checksum. That is deliberate, and it is what makes the staleness check below meaningful: the checksum tracks content, so renaming a cloud does not make every grid derived from it look stale.

Check whether a derived grid has gone stale

Section titled “Check whether a derived grid has gone stale”

A grid built from a point cloud records the checksum it was built from, under source.source_point_cloud_checksum. Compare it against the cloud’s current checksum:

Compare the recorded checksum against the current one
"""Tell whether a grid was built from the point cloud as it exists today.
The API does not flag, warn, or block on staleness — this comparison is yours
to make.
"""
import fastfuels_sdk.v2 as ff
ff.set_api_key("my-api-key")
grid = ff.get_grid("your-domain-id", "your-chm-grid-id")
source = grid.to_dict()["source"]
built_from = source["source_point_cloud_checksum"]
point_cloud = ff.get_point_cloud("your-domain-id", source["source_point_cloud_id"])
print(f"grid was built from: {built_from}")
print(f"point cloud is now: {point_cloud.checksum}")
if built_from != point_cloud.checksum:
print("STALE — the point cloud's content changed after this grid was built.")
else:
print("Current.")
grid was built from: 690b4bf260244d8db52e1eaa6888ad49
point cloud is now: 690b4bf260244d8db52e1eaa6888ad49
Current.
DELETE the point cloud
curl -X 'DELETE' \
'https://api-v2-prod-nyvjyh5ywa-uw.a.run.app/domains/your-domain-id/pointclouds/your-point-cloud-id' \
-H 'accept: application/json' \
-H 'api-key: my-api-key' \
-o /dev/null -w 'HTTP %{http_code}\n'

A 204, and the stored points are gone.

Two consequences worth knowing:

  • Derived grids are not cascaded. A CHM built from this cloud keeps working; it holds its own raster data. What it loses is the ability to resolve source.source_point_cloud_id — the checksum it recorded now refers to something that no longer exists.
  • Deleting the domain is different. A domain holding point clouds returns a 412 unless you pass force=true, which deletes the clouds with it.
  • sort_order=desc. Returns a 422; use descending.
  • Expecting tags to append. PATCH replaces the list. Send the full set.
  • Expecting PATCH to change the data. Content is immutable — there is no endpoint that edits points.
  • Assuming a metadata edit invalidates derived grids. It does not, by design.
  • Deleting a cloud to free storage and expecting derived grids to shrink. They hold their own data and are unaffected.