---
title: USDPrim.Spec
framework: usdkit
role: symbol
role_heading: Structure
path: usdkit/usdprim/spec
---

# USDPrim.Spec

A handle to a prim definition stored in a layer.

## Declaration

```swift
struct Spec
```

## Overview

Overview USDPrim.Spec is a struct but acts as a handle into data owned by a USDLayer, much like USDPrim is a handle into a USDStage. Mutations write through to the layer rather than to the spec value itself, so property setters and methods on this type are non-mutating.

## Topics

### Initializers

- [init()](usdkit/usdprim/spec/init().md)
- [init(_:)](usdkit/usdprim/spec/init(_:)-7yaap.md)
- [init(_:)](usdkit/usdprim/spec/init(_:)-9poa6.md)
- [init(layer:primPath:)](usdkit/usdprim/spec/init(layer:primpath:).md)
- [init(parentLayer:name:specifier:typeName:)](usdkit/usdprim/spec/init(parentlayer:name:specifier:typename:).md)
- [init(parentPrimSpec:name:specifier:typeName:)](usdkit/usdprim/spec/init(parentprimspec:name:specifier:typename:).md)

### Instance Properties

- [active](usdkit/usdprim/spec/active.md)
- [assetInfo](usdkit/usdprim/spec/assetinfo.md)
- [attributes](usdkit/usdprim/spec/attributes.md)
- [children](usdkit/usdprim/spec/children.md)
- [childrenOrder](usdkit/usdprim/spec/childrenorder.md)
- [comment](usdkit/usdprim/spec/comment.md)
- [customData](usdkit/usdprim/spec/customdata.md)
- [documentation](usdkit/usdprim/spec/documentation.md)
- [inherits](usdkit/usdprim/spec/inherits.md)
- [instanceable](usdkit/usdprim/spec/instanceable.md)
- [kind](usdkit/usdprim/spec/kind.md)
- [name](usdkit/usdprim/spec/name.md)
- [parent](usdkit/usdprim/spec/parent.md)
- [payloads](usdkit/usdprim/spec/payloads.md)
- [permission](usdkit/usdprim/spec/permission.md)
- [prefix](usdkit/usdprim/spec/prefix.md)
- [prefixSubstitutions](usdkit/usdprim/spec/prefixsubstitutions.md)
- [properties](usdkit/usdprim/spec/properties.md)
- [propertyOrder](usdkit/usdprim/spec/propertyorder.md)
- [pseudoRoot](usdkit/usdprim/spec/pseudoroot.md)
- [references](usdkit/usdprim/spec/references.md)
- [relationships](usdkit/usdprim/spec/relationships.md)
- [relocates](usdkit/usdprim/spec/relocates.md)
- [specializes](usdkit/usdprim/spec/specializes.md)
- [specifier](usdkit/usdprim/spec/specifier.md)
- [suffix](usdkit/usdprim/spec/suffix.md)
- [suffixSubstitutions](usdkit/usdprim/spec/suffixsubstitutions.md)
- [symmetricPeer](usdkit/usdprim/spec/symmetricpeer.md)
- [symmetryArguments](usdkit/usdprim/spec/symmetryarguments.md)
- [symmetryFunction](usdkit/usdprim/spec/symmetryfunction.md)
- [typeName](usdkit/usdprim/spec/typename.md)
- [variantSelections](usdkit/usdprim/spec/variantselections.md)
- [variantSetNames](usdkit/usdprim/spec/variantsetnames.md)
- [variantSets](usdkit/usdprim/spec/variantsets.md)

### Instance Methods

- [appendChild(_:)](usdkit/usdprim/spec/appendchild(_:).md)
- [attribute(at:)](usdkit/usdprim/spec/attribute(at:).md)
- [blockVariantSelection(for:)](usdkit/usdprim/spec/blockvariantselection(for:).md)
- [clearAssetInfo(_:)](usdkit/usdprim/spec/clearassetinfo(_:).md)
- [clearCustomData(_:)](usdkit/usdprim/spec/clearcustomdata(_:).md)
- [clearInherits()](usdkit/usdprim/spec/clearinherits().md)
- [clearPayloads()](usdkit/usdprim/spec/clearpayloads().md)
- [clearReferences()](usdkit/usdprim/spec/clearreferences().md)
- [clearRelocates()](usdkit/usdprim/spec/clearrelocates().md)
- [clearSpecializes()](usdkit/usdprim/spec/clearspecializes().md)
- [clearSymmetryArgument(_:)](usdkit/usdprim/spec/clearsymmetryargument(_:).md)
- [clearVariantSelection(for:)](usdkit/usdprim/spec/clearvariantselection(for:).md)
- [insertChild(_:at:)](usdkit/usdprim/spec/insertchild(_:at:).md)
- [prim(at:)](usdkit/usdprim/spec/prim(at:).md)
- [property(at:)](usdkit/usdprim/spec/property(at:).md)
- [relationship(at:)](usdkit/usdprim/spec/relationship(at:).md)
- [removeChild(_:)](usdkit/usdprim/spec/removechild(_:).md)
- [removeProperty(_:)](usdkit/usdprim/spec/removeproperty(_:).md)
- [removeVariantSet(_:)](usdkit/usdprim/spec/removevariantset(_:).md)
- [rename(to:)](usdkit/usdprim/spec/rename(to:).md)
- [setAssetInfo(_:to:)](usdkit/usdprim/spec/setassetinfo(_:to:).md)
- [setCustomData(_:to:)](usdkit/usdprim/spec/setcustomdata(_:to:).md)
- [setSymmetryArgument(_:to:)](usdkit/usdprim/spec/setsymmetryargument(_:to:).md)
- [setVariantSelection(for:to:)](usdkit/usdprim/spec/setvariantselection(for:to:).md)
- [spec(at:)](usdkit/usdprim/spec/spec(at:).md)
- [variantNames(in:)](usdkit/usdprim/spec/variantnames(in:).md)
- [variantSelection(for:)](usdkit/usdprim/spec/variantselection(for:).md)

### Type Methods

- [isValidName(_:)](usdkit/usdprim/spec/isvalidname(_:).md)

## Relationships

### Conforms To

- [Copyable](swift/copyable.md)
- [Equatable](swift/equatable.md)
- [Escapable](swift/escapable.md)
- [USDLayer.Spec.FieldCollection](usdkit/usdlayer/spec/fieldcollection.md)
- [USDLayer.Spec.MetadataCollection](usdkit/usdlayer/spec/metadatacollection.md)

## See Also

### Working with scene-description specs

- [USDPrim.PseudoRootSpec](usdkit/usdprim/pseudorootspec.md)
