ClaimsAPI
ClaimsAPI attaches two tiers of profile data to a
prim, stored as sub-dictionaries in the prim’s customData metadata under the
key profilesInfo:
Capability usage (DCC-authored): which USD capabilities this prim relies on, each annotated with a degradation class:
hard— load-bearing; a consumer that lacks this capability will produce incorrect results.soft— the prim degrades gracefully if the capability is absent.enhancement— the capability improves quality but its absence is acceptable.
Capability usages can be authored manually via SetCapabilityUsage(), or
derived automatically by calling PopulateCapabilityUsages().
The automatic path does two things in one call:
Queries
UsdProfileRegistry::GetSchemaImpliedCapabilities()for every applied API schema on every descendant prim (including the root) and merges the results using most-conservative-class-wins.Iterates
stage.GetUsedLayers(), identifies each layer’s file format type, and merges anyimpliesCapabilitiesdeclared by that format plugin (viaUsdProfileRegistry::GetFileFormatImpliedCapabilities()). This ensures that referencing a.mtlxlayer, for example, automatically contributesusd.core.mtlx.fileFormatto the prim’s capability usages.
The merged result is written to this prim’s capabilityUsages metadata.
This is the recommended approach for pipeline post-processes and DCC save hooks.
See Schema-Implied Capabilities for how API schemas declare their implied capabilities, and Using ClaimsAPI for end-to-end workflow examples.
Profile compatibility (pipeline-authored): which profiles (tagged nodes in
the UsdProfileRegistry DAG) this prim is compatible with, plus an optional
per-profile exception set listing capabilities that are intentionally out of
compliance.
A compatibility declaration without exceptions is an unqualified assertion that the prim satisfies every capability in the profile’s transitive closure. A declaration with exceptions is an audited degradation record: the prim satisfies the profile except for the listed capabilities, which are present but failing audit.
This tier is authored by a pipeline conformance step or platform-compatibility audit tool.
Querying Compatibility
Use IsCompatibleWith() for the common single-profile check. It calls
UsdProfileRegistry::CoversCapabilities() with the stored capability usages
as the required set and the stored exception list for that profile:
status, results = api.IsCompatibleWith("studio.vfx.26.08")
if status == PR.QueryStatus.ValidPath:
print("fully compatible")
For bulk raw access, use GetProfilesInfo() / SetProfilesInfo().