DuplicateReviewGroupDto
| Field | Required | Description |
|---|---|---|
assets | Yes | The photos of the group this session may see |
blockedReason | Yes | See definition below |
duplicateId | Yes | Duplicate group ID |
editable | Yes | Whether this session may decide the group |
hiddenMemberCount | Yes | Photos of the group this session does not see |
kind | Yes | See definition below |
otherOwnerNames | No | Display names of the other accounts owning photos of a group blocked by another owner |
qualities | Yes | array |
suggestedKeepAssetIds | Yes | The suggested keeper, from resolution, format and original provenance. Never set for a burst |
totalBytes | Yes | Size of the originals shown, in bytes |
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: AssetResponseDto, DuplicateGroupBlock, DuplicateGroupKind, DuplicateReviewQualityDto
{
"properties": {
"assets": {
"description": "The photos of the group this session may see",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
},
"blockedReason": {
"allOf": [
{
"$ref": "#/components/schemas/DuplicateGroupBlock"
}
],
"nullable": true
},
"duplicateId": {
"description": "Duplicate group ID",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
},
"editable": {
"description": "Whether this session may decide the group",
"type": "boolean"
},
"hiddenMemberCount": {
"description": "Photos of the group this session does not see",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"kind": {
"$ref": "#/components/schemas/DuplicateGroupKind"
},
"otherOwnerNames": {
"description": "Display names of the other accounts owning photos of a group blocked by another owner",
"items": {
"type": "string"
},
"type": "array"
},
"qualities": {
"items": {
"$ref": "#/components/schemas/DuplicateReviewQualityDto"
},
"type": "array"
},
"suggestedKeepAssetIds": {
"description": "The suggested keeper, from resolution, format and original provenance. Never set for a burst",
"items": {
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$",
"type": "string"
},
"type": "array"
},
"totalBytes": {
"description": "Size of the originals shown, in bytes",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
}
},
"required": [
"assets",
"blockedReason",
"duplicateId",
"editable",
"hiddenMemberCount",
"kind",
"qualities",
"suggestedKeepAssetIds",
"totalBytes"
],
"type": "object"
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.