<!--
{
  "availability" : [
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "USDKit",
  "identifier" : "/documentation/USDKit/USDLayer/Spec",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "USDKit"
    ],
    "preciseIdentifier" : "s:6USDKit8USDLayerV4SpecV"
  },
  "title" : "USDLayer.Spec"
}
-->

# USDLayer.Spec

A handle to a single spec stored in a layer.

```
struct Spec
```

## Overview

`Spec` is the untyped base used when retrieving a spec from a layer
without knowing its concrete type. All concrete spec types
(`USDPrim.Spec`, `USDPrim.Property.Spec`, etc.) conform to the
nested [`USDLayer.Spec.MetadataCollection`](/documentation/USDKit/USDLayer/Spec/MetadataCollection) and [`USDLayer.Spec.FieldCollection`](/documentation/USDKit/USDLayer/Spec/FieldCollection) protocols
for shared metadata and field operations.

## Topics

### Protocols

[`protocol FieldCollection`](/documentation/USDKit/USDLayer/Spec/FieldCollection)

Low-level read/write access to spec fields. Fields are the raw data
backing both metadata and structural information on a spec.

[`protocol MetadataCollection`](/documentation/USDKit/USDLayer/Spec/MetadataCollection)

Read/write access to metadata stored on a spec.

### Initializers

[`init()`](/documentation/USDKit/USDLayer/Spec/init())

Creates an empty (invalid) spec handle.

[`init(USDPrim.Property.Spec)`](/documentation/USDKit/USDLayer/Spec/init(_:)-2y5gq)

Widens a `USDPrim.Property.Spec` into an untyped [`USDLayer.Spec`](/documentation/USDKit/USDLayer/Spec).

[`init(USDPrim.Relationship.Spec)`](/documentation/USDKit/USDLayer/Spec/init(_:)-3kl4b)

Widens a `USDPrim.Relationship.Spec` into an untyped [`USDLayer.Spec`](/documentation/USDKit/USDLayer/Spec).

[`init(USDPrim.VariantSetSpec)`](/documentation/USDKit/USDLayer/Spec/init(_:)-5d7my)

Widens a `USDPrim.VariantSetSpec` into an untyped [`USDLayer.Spec`](/documentation/USDKit/USDLayer/Spec).

[`init(USDPrim.Attribute.Spec)`](/documentation/USDKit/USDLayer/Spec/init(_:)-5g16z)

Widens a `USDPrim.Attribute.Spec` into an untyped [`USDLayer.Spec`](/documentation/USDKit/USDLayer/Spec).

[`init(USDPrim.PseudoRootSpec)`](/documentation/USDKit/USDLayer/Spec/init(_:)-67qus)

Widens a `USDPrim.PseudoRootSpec` into an untyped [`USDLayer.Spec`](/documentation/USDKit/USDLayer/Spec).

[`init(USDPrim.Spec)`](/documentation/USDKit/USDLayer/Spec/init(_:)-7ecdx)

Widens a `USDPrim.Spec` into an untyped [`USDLayer.Spec`](/documentation/USDKit/USDLayer/Spec).

[`init(USDPrim.VariantSpec)`](/documentation/USDKit/USDLayer/Spec/init(_:)-7vtld)

Widens a `USDPrim.VariantSpec` into an untyped [`USDLayer.Spec`](/documentation/USDKit/USDLayer/Spec).

## Relationships

### Conforms To

[`Escapable`](/documentation/Swift/Escapable)

[`Copyable`](/documentation/Swift/Copyable)

[`MetadataCollection`](/documentation/USDKit/USDLayer/Spec/MetadataCollection)

[`Equatable`](/documentation/Swift/Equatable)

[`FieldCollection`](/documentation/USDKit/USDLayer/Spec/FieldCollection)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)