Skip to main content
Use properties for values known during capture. Use annotate() for values learned later, such as review state, workflow labels, or pipeline versions.
An annotation targets exactly one asset or one generation. Sending null clears that key for the same source. Normal strings, numbers, booleans, lists, objects, and nulls need no wrapper. Use timestamp() only when the value should be interpreted as time. The catalog is advisory: a single odd value does not block capture. Analysis reports values that cannot be read as the field’s selected type.