ClassificationRuleResponseDto
| Field | Required | Description |
|---|---|---|
action | Yes | See definition below |
albumId | Yes | string |
albumName | Yes | string |
archive | Yes | boolean |
archiveConsentAt | Yes | string |
counts | Yes | See definition below |
createdAt | Yes | string |
enabled | Yes | boolean |
id | Yes | string |
lastAppliedAt | Yes | string |
mediaType | Yes | See definition below |
personIds | Yes | Match any of these people |
tag | Yes | See definition below |
tagIds | Yes | Match any of these tags, or a tag beneath one of them |
takenAfter | Yes | Taken on or after this day (YYYY-MM-DD) |
takenBefore | Yes | Taken on or before this day (YYYY-MM-DD) |
threshold | Yes | The confidence a visual phrase has to reach |
updatedAt | Yes | string |
visualQueries | Yes | Visual category phrases compared with each item |
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: ClassificationRuleAction, ClassificationRuleCountsDto, ClassificationMediaType, ClassificationTagDto
{
"properties": {
"action": {
"$ref": "#/components/schemas/ClassificationRuleAction"
},
"albumId": {
"type": "string"
},
"albumName": {
"type": "string"
},
"archive": {
"type": "boolean"
},
"archiveConsentAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"counts": {
"$ref": "#/components/schemas/ClassificationRuleCountsDto"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"enabled": {
"type": "boolean"
},
"id": {
"type": "string"
},
"lastAppliedAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"mediaType": {
"$ref": "#/components/schemas/ClassificationMediaType"
},
"personIds": {
"description": "Match any of these people",
"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"
},
"maxItems": 50,
"type": "array"
},
"tag": {
"allOf": [
{
"$ref": "#/components/schemas/ClassificationTagDto"
}
],
"nullable": true
},
"tagIds": {
"description": "Match any of these tags, or a tag beneath one of them",
"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"
},
"maxItems": 50,
"type": "array"
},
"takenAfter": {
"description": "Taken on or after this day (YYYY-MM-DD)",
"nullable": true,
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"takenBefore": {
"description": "Taken on or before this day (YYYY-MM-DD)",
"nullable": true,
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
},
"threshold": {
"description": "The confidence a visual phrase has to reach",
"format": "double",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"visualQueries": {
"description": "Visual category phrases compared with each item",
"items": {
"maxLength": 120,
"minLength": 1,
"type": "string"
},
"maxItems": 10,
"type": "array"
}
},
"required": [
"action",
"albumId",
"albumName",
"archive",
"archiveConsentAt",
"counts",
"createdAt",
"enabled",
"id",
"lastAppliedAt",
"mediaType",
"personIds",
"tag",
"tagIds",
"takenAfter",
"takenBefore",
"threshold",
"updatedAt",
"visualQueries"
],
"type": "object"
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.