<!--
{
  "availability" : [
    "iOS: 16.0.0 -",
    "iPadOS: 16.0.0 -",
    "macCatalyst: 16.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PassKit",
  "identifier" : "/documentation/PassKit/PKIdentityDocumentDescriptor",
  "metadataVersion" : "0.1.0",
  "role" : "Protocol",
  "symbol" : {
    "kind" : "Protocol",
    "modules" : [
      "PassKit (Apple Pay and Wallet)"
    ],
    "preciseIdentifier" : "c:objc(pl)PKIdentityDocumentDescriptor"
  },
  "title" : "PKIdentityDocumentDescriptor"
}
-->

# PKIdentityDocumentDescriptor

A type that describes the structure and behavior of an identity document.

```
protocol PKIdentityDocumentDescriptor : NSObjectProtocol
```

## Overview

A descriptor object describes the type of document that your app can request or check whether a document is available to request. For example, you use a [`PKIdentityDriversLicenseDescriptor`](/documentation/PassKit/PKIdentityDriversLicenseDescriptor) to request information from a user’s driver’s license (or equivalent document).

> Note:
> Different document types behave differently, requiring different properties or response formats. Don’t define your own implementation of this protocol or subclass an existing implementation.

## Topics

### Inspecting elements

[`var elements: [PKIdentityElement]`](/documentation/PassKit/PKIdentityDocumentDescriptor/elements)

A list of identity elements to request.

[`var issuerIdentifiers: [Data]`](/documentation/PassKit/PKIdentityDocumentDescriptor/issuerIdentifiers)

A list of X.509 authority key identifiers your app accepts.

[`class PKIdentityElement`](/documentation/PassKit/PKIdentityElement)

An object that represents the elements an app requests from identity documents.

### Adding an identity element

[`func addElements([PKIdentityElement], intentToStore: PKIdentityIntentToStore)`](/documentation/PassKit/PKIdentityDocumentDescriptor/addElements(_:intentToStore:))

Adds a list of identity element and defines the way an app, or it’s server, stores the elements.

[`class PKIdentityIntentToStore`](/documentation/PassKit/PKIdentityIntentToStore)

An object that represents your intention to store an identity element or values derived from an identity element.

### Getting an elements intent

[`func intentToStore(element: PKIdentityElement) -> PKIdentityIntentToStore?`](/documentation/PassKit/PKIdentityDocumentDescriptor/intentToStore(element:))

Gets the intent to store for an identity element you specify.

## Relationships

### Conforming Types

[`PKIdentityAnyOfDescriptor`](/documentation/PassKit/PKIdentityAnyOfDescriptor)

[`PKIdentityNationalIDCardDescriptor`](/documentation/PassKit/PKIdentityNationalIDCardDescriptor)

[`PKIdentityDriversLicenseDescriptor`](/documentation/PassKit/PKIdentityDriversLicenseDescriptor)

[`PKIdentityPhotoIDDescriptor`](/documentation/PassKit/PKIdentityPhotoIDDescriptor)

### Inherits From

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

---

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)