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:

  1. Queries UsdProfileRegistry::GetSchemaImpliedCapabilities() for every applied API schema on every descendant prim (including the root) and merges the results using most-conservative-class-wins.

  2. Iterates stage.GetUsedLayers(), identifies each layer’s file format type, and merges any impliesCapabilities declared by that format plugin (via UsdProfileRegistry::GetFileFormatImpliedCapabilities()). This ensures that referencing a .mtlx layer, for example, automatically contributes usd.core.mtlx.fileFormat to 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().