> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryrollup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Person

> Someone whose face is in the person's photos, grouped on the iPhone.

```swift theme={null}
public struct Person: Identifiable, Codable, Sendable, Equatable
```

What `Rollup.shared.people(includeAll:)` lists when [`people`](https://docs.tryrollup.com/reference/index-options#people) is on. Faces are grouped on the iPhone and never named or sent anywhere. Show `face` so the person can say who it is, and keep that name in your app.

**id** `String`

Stays the same as photos are added, until the index is rebuilt. When two groups turn out to be one person, the old id still works in `photos(of:)` and `search(_:people:)`.

**photoCount** `Int`

Photos in the index with their face.

**face** `Face`

Their clearest face. Crop `face.photo` to its box for a thumbnail.

**firstSeen, lastSeen** `Date?`

When the first and the latest of those photos were taken.

**ageRange** `AgeRange?`

About how old they look in their latest photo: `under13`, `from13To29`, `from30To49` or `from50`. An estimate that can be wrong.

## Face

```swift theme={null}
public struct Face: Codable, Sendable, Equatable
```

**photo** `String`

The photo's PhotoKit local identifier.

**x, y, width, height** `Double`

The face's box, in fractions of the photo as shown, from its top left corner.

## JSON

```json theme={null}
{ "id": "3", "photoCount": 12, "face": { "photo": "A1B2.../L0/001", "x": 0.4, "y": 0.2, "width": 0.1, "height": 0.15 }, "firstSeen": "2026-01-04T18:20:00Z", "lastSeen": "2026-10-28T12:00:00Z", "ageRange": "from30To49" }
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.