AnalyticsInsightsDto
| Field | Required | Description |
|---|---|---|
capturesByYear | Yes | Items per local capture year, all time |
coverage | Yes | See definition below |
focalLengths | Yes | Every bucket, in order; adds up to summary.items |
hdr | Yes | Null when no video stream has been read, so HDR cannot be told |
hiddenItems | Yes | Items this session keeps hidden (Locked people and tags, sensitive content). They are left out of every breakdown here, which adds up to summary.items minus hiddenItems (summary.photos and summary.videos likewise) |
lenses | Yes | Items per lens model, then every other lens, then no lens |
livePhotos | Yes | Photos with a Live Photo motion part |
orientation | Yes | Every bucket; adds up to summary.items. Panorama is 2:1 or wider |
peopleAndPlaces | Yes | See definition below |
photoFormats | Yes | Every format; adds up to summary.photos, and RAW equals summary.raw |
punchcard | Yes | All 168 weekday and hour cells of the local capture time |
records | Yes | See definition below |
videoResolutions | Yes | Every bucket; adds up to summary.videos |
Complete definition
required lists fields that must be present. nullable allows a null value; it does not make the field optional. Response enums retain exact wire values for compatibility.
Field definitions: AnalyticsYearCountDto, AnalyticsCoverageDto, AnalyticsFocalLengthDto, AnalyticsHdrDto, AnalyticsNamedCountDto, AnalyticsOrientationDto, AnalyticsPeopleAndPlacesDto, AnalyticsPhotoFormatDto, AnalyticsPunchcardCellDto, AnalyticsRecordsDto, AnalyticsVideoResolutionDto
{
"properties": {
"capturesByYear": {
"description": "Items per local capture year, all time",
"items": {
"$ref": "#/components/schemas/AnalyticsYearCountDto"
},
"type": "array"
},
"coverage": {
"$ref": "#/components/schemas/AnalyticsCoverageDto"
},
"focalLengths": {
"description": "Every bucket, in order; adds up to summary.items",
"items": {
"$ref": "#/components/schemas/AnalyticsFocalLengthDto"
},
"type": "array"
},
"hdr": {
"allOf": [
{
"$ref": "#/components/schemas/AnalyticsHdrDto"
}
],
"description": "Null when no video stream has been read, so HDR cannot be told",
"nullable": true
},
"hiddenItems": {
"description": "Items this session keeps hidden (Locked people and tags, sensitive content). They are left out of every breakdown here, which adds up to summary.items minus hiddenItems (summary.photos and summary.videos likewise)",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"lenses": {
"description": "Items per lens model, then every other lens, then no lens",
"items": {
"$ref": "#/components/schemas/AnalyticsNamedCountDto"
},
"type": "array"
},
"livePhotos": {
"description": "Photos with a Live Photo motion part",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"orientation": {
"description": "Every bucket; adds up to summary.items. Panorama is 2:1 or wider",
"items": {
"$ref": "#/components/schemas/AnalyticsOrientationDto"
},
"type": "array"
},
"peopleAndPlaces": {
"allOf": [
{
"$ref": "#/components/schemas/AnalyticsPeopleAndPlacesDto"
}
],
"nullable": true
},
"photoFormats": {
"description": "Every format; adds up to summary.photos, and RAW equals summary.raw",
"items": {
"$ref": "#/components/schemas/AnalyticsPhotoFormatDto"
},
"type": "array"
},
"punchcard": {
"description": "All 168 weekday and hour cells of the local capture time",
"items": {
"$ref": "#/components/schemas/AnalyticsPunchcardCellDto"
},
"type": "array"
},
"records": {
"$ref": "#/components/schemas/AnalyticsRecordsDto"
},
"videoResolutions": {
"description": "Every bucket; adds up to summary.videos",
"items": {
"$ref": "#/components/schemas/AnalyticsVideoResolutionDto"
},
"type": "array"
}
},
"required": [
"capturesByYear",
"coverage",
"focalLengths",
"hdr",
"hiddenItems",
"lenses",
"livePhotos",
"orientation",
"peopleAndPlaces",
"photoFormats",
"punchcard",
"records",
"videoResolutions"
],
"type": "object"
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.