PhotographyWorkspaceDto
| Field | Required | Description |
|---|---|---|
revision | Yes | string |
shoots | Yes | array |
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.
{
"properties": {
"revision": {
"format": "uuid",
"nullable": true,
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"type": "string"
},
"shoots": {
"items": {
"additionalProperties": false,
"properties": {
"albumId": {
"description": "Owned source album; null retains an unavailable existing shoot",
"format": "uuid",
"nullable": true,
"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"
},
"assetCount": {
"maximum": 9007199254740991,
"minimum": 0,
"nullable": true,
"type": "integer"
},
"client": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"coverAssetId": {
"format": "uuid",
"nullable": true,
"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"
},
"date": {
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"type": "string"
},
"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"
},
"name": {
"maxLength": 200,
"minLength": 1,
"type": "string"
},
"stage": {
"enum": [
"Imported",
"Selected",
"Edited",
"Proofing",
"Delivered"
],
"type": "string"
},
"type": {
"enum": [
"Family portrait",
"Wedding",
"Portrait",
"Editorial",
"Commercial",
"Event",
"Personal"
],
"type": "string"
},
"unavailable": {
"type": "boolean"
}
},
"required": [
"id",
"albumId",
"name",
"client",
"type",
"date",
"stage",
"unavailable",
"coverAssetId",
"assetCount"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"revision",
"shoots"
],
"type": "object"
}© 2026 Frameleaf Inc. All rights reserved.
Frameleaf and the Frameleaf logo are Trademarks of Frameleaf Inc.