My content type won’t create
You’re callingdefine_content_type and getting an error.
Good to know:
- A company can have multiple independent trees (different roots). They don’t interact.
- Content types are company-scoped, not workspace-scoped.
- You cannot reparent a node. To move it, delete it with
undefine_content_typeand recreate it under the new parent. Deleting cascades: see What happens when I delete something? below.
My attribute won’t save
You’re callingdefine_attribute and getting an error.
Good to know:
- If you omit
label, it’s auto-generated fromname:fiscal_yearbecomes"Fiscal Year". - 7 attribute types are available:
text,number,date,boolean,select,multi-select,rich-text.
My classification was rejected
You’re callingclassify on a file and getting an error.
Reclassification: what’s allowed
When a file is already classified and you callclassify with a different path in the same tree, the result depends on the relationship:
A file can be classified under multiple trees at the same time (e.g. one
contract:nda classification and one regulation:gdpr classification).
My value was rejected
You’re callingset_value and getting a 422.
To remove a value, use
clear_value. Passing null to set_value is rejected with 422.
What happens when I delete something?
Deleting things in Facets cascades. Here’s exactly what gets removed:
All deletions are irreversible.
What can I filter on?
Not all attribute types support filtering viaGET /api/v3/files?attribute=.
Multi-select containment
When filtering on amulti-select attribute, the filter uses containment: jurisdiction:FR matches files with ["FR", "DE"], ["FR"], or any list containing "FR".
Date shortcuts and ambiguity
LightOn expands partial dates into ranges:effective_date:2025→ any date in 2025 (Jan 1 – Dec 31)effective_date:2025-03→ any date in March 2025effective_date:2025-03-01→ exact date
2025 is ambiguous: it could be a year, a number, or text. LightOn searches across all typed columns with an OR. Use full YYYY-MM-DD format for exact date matches.
How does inheritance work?
Attribute inheritance is resolved at query time, not stored. When you read a file’s facets, LightOn walks up the tree and collects attributes from each ancestor withinherit_attributes: true.
Batch behavior
When you send a JSON array of actions, LightOn processes them in order and fails fast on the first error:- Actions before the failure are committed.
- Actions after the failure are skipped.
- BM25 reindex is scheduled once per batch, not per action.
adopt, define_content_type, define_attribute, undefine_*) are idempotent and safe to replay.