ℹ️
What is a Holon?

A Holon is a self-contained data object with an ID, type, metadata, and an arbitrary key-value property bag. See Holons & Data Model for the full conceptual overview.

Save Holon

POST/data/SaveHolon

Persists a holon. Creates a new record if no id is provided; updates the existing record if id is present.

Request body

FieldTypeDescription
holonrequiredobjectThe Holon object to persist (see schema below)
providerTypestringOverride the default provider for this write
setGloballybooleanIf true, also sets as the global default provider

Holon schema

json
{
  "id":          "3fa85f64-…",   // omit to auto-generate
  "name":        "My Holon",
  "description": "…",
  "holonType":   "Custom",
  "metaData":    { "key": "value" },
  "createdByAvatarId": "…",
  "parentHolonId":     "…"   // optional — nests inside a parent holon
}

Load Holon

GET/data/LoadHolon/{id}

Loads a single holon by its GUID. Optionally pass ?providerType=HoloOASIS to target a specific provider.

Load All Holons

GET/data/LoadAllHolons

Returns all holons across the default provider. For large datasets, use Search with filters instead.

Load Holons for Parent

GET/data/LoadHolonsForParent/{parentId}

Returns all child holons nested under the given parent holon ID.

Delete Holon

DELETE/data/DeleteHolon/{id}

Soft-deletes the holon. Pass ?hardDelete=true to permanently remove (Admin only).

Save Multiple Holons

POST/data/SaveHolons

Batch-saves an array of holons in a single request. Body: { "holons": […], "providerType": "…" }. Returns an array of saved holons with their assigned IDs.

💡
OApp data storage pattern

Store each OApp's game objects, levels, and player state as holons with a shared parentHolonId representing the OApp itself. This makes it trivial to load all data for a given OApp and to migrate it between providers via HyperDrive.