Skip to content

AssetResponseDto

Endpoints · All schemas

FieldRequiredDescription
checksumYesBase64-encoded file checksum. SHA-256 (44 chars) for assets uploaded after the SHA-256 transition; SHA-1 (28 chars) for legacy assets. Use the asset `checksumAlgorithm` field to disambiguate when length-based detection is insufficient.
createdAtYesThe UTC timestamp when the asset was originally uploaded to Frameleaf.
duplicateIdNoDuplicate group ID
durationYesVideo/gif duration in milliseconds (null for static images)
exifInfoNoSee definition below
fileCreatedAtYesThe actual UTC timestamp when the file was created/captured, preserving timezone information. This is the authoritative timestamp for chronological sorting within timeline groups. Combined with timezone data, this can be used to determine the exact moment the photo was taken.
fileModifiedAtYesThe UTC timestamp when the file was last modified on the filesystem. This reflects the last time the physical file was changed, which may be different from when the photo was originally taken.
hasMetadataYesWhether asset has metadata
heightYesAsset height
idYesAsset ID
isArchivedYesIs archived
isEditedYesIs edited
isFavoriteYesIs favorite
isOfflineYesIs offline
isTrashedYesIs trashed
libraryIdNoLibrary ID
livePhotoVideoIdNoLive photo video ID
localDateTimeYesThe local date and time when the photo/video was taken, derived from EXIF metadata. This represents the photographer's local time regardless of timezone, stored as a timezone-agnostic timestamp. Used for timeline grouping by "local" days and months.
originNopresent on your own asset when partner sharing copied it from another library (GET /assets/{id})
originalFileNameYesOriginal file name
originalMimeTypeNoOriginal MIME type
originalPathYesOriginal file path
ownerNoSee definition below
ownerIdYesOwner user ID
peopleNoarray
resizedNoIs resized
stackNoSee definition below
tagsNoarray
thumbhashYesThumbhash for thumbnail generation (base64) also used as the c query param for thumbnail cache busting.
typeYesSee definition below
updatedAtYesThe UTC timestamp when the asset record was last updated in the database. This is automatically maintained by the database and reflects when any field in the asset was last modified.
visibilityYesSee definition below
widthYesAsset width

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: ExifResponseDto, PartnerOriginDto, UserResponseDto, PersonResponseDto, AssetStackResponseDto, TagResponseDto, AssetTypeEnum, AssetVisibility

{
  "properties": {
    "checksum": {
      "description": "Base64-encoded file checksum. SHA-256 (44 chars) for assets uploaded after the SHA-256 transition; SHA-1 (28 chars) for legacy assets. Use the asset `checksumAlgorithm` field to disambiguate when length-based detection is insufficient.",
      "type": "string"
    },
    "createdAt": {
      "description": "The UTC timestamp when the asset was originally uploaded to Frameleaf.",
      "format": "date-time",
      "type": "string"
    },
    "duplicateId": {
      "description": "Duplicate group ID",
      "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"
    },
    "duration": {
      "description": "Video/gif duration in milliseconds (null for static images)",
      "maximum": 2147483647,
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "exifInfo": {
      "$ref": "#/components/schemas/ExifResponseDto"
    },
    "fileCreatedAt": {
      "description": "The actual UTC timestamp when the file was created/captured, preserving timezone information. This is the authoritative timestamp for chronological sorting within timeline groups. Combined with timezone data, this can be used to determine the exact moment the photo was taken.",
      "format": "date-time",
      "type": "string"
    },
    "fileModifiedAt": {
      "description": "The UTC timestamp when the file was last modified on the filesystem. This reflects the last time the physical file was changed, which may be different from when the photo was originally taken.",
      "format": "date-time",
      "type": "string"
    },
    "hasMetadata": {
      "description": "Whether asset has metadata",
      "type": "boolean"
    },
    "height": {
      "description": "Asset height",
      "maximum": 9007199254740991,
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    },
    "id": {
      "description": "Asset 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"
    },
    "isArchived": {
      "description": "Is archived",
      "type": "boolean"
    },
    "isEdited": {
      "description": "Is edited",
      "type": "boolean"
    },
    "isFavorite": {
      "description": "Is favorite",
      "type": "boolean"
    },
    "isOffline": {
      "description": "Is offline",
      "type": "boolean"
    },
    "isTrashed": {
      "description": "Is trashed",
      "type": "boolean"
    },
    "libraryId": {
      "description": "Library ID",
      "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"
    },
    "livePhotoVideoId": {
      "description": "Live photo video ID",
      "nullable": true,
      "type": "string"
    },
    "localDateTime": {
      "description": "The local date and time when the photo/video was taken, derived from EXIF metadata. This represents the photographer's local time regardless of timezone, stored as a timezone-agnostic timestamp. Used for timeline grouping by \"local\" days and months.",
      "format": "date-time",
      "type": "string"
    },
    "origin": {
      "$ref": "#/components/schemas/PartnerOriginDto",
      "description": "present on your own asset when partner sharing copied it from another library (GET /assets/{id})"
    },
    "originalFileName": {
      "description": "Original file name",
      "type": "string"
    },
    "originalMimeType": {
      "description": "Original MIME type",
      "type": "string"
    },
    "originalPath": {
      "description": "Original file path",
      "type": "string"
    },
    "owner": {
      "$ref": "#/components/schemas/UserResponseDto"
    },
    "ownerId": {
      "description": "Owner user 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"
    },
    "people": {
      "items": {
        "$ref": "#/components/schemas/PersonResponseDto"
      },
      "type": "array"
    },
    "resized": {
      "description": "Is resized",
      "type": "boolean"
    },
    "stack": {
      "allOf": [
        {
          "$ref": "#/components/schemas/AssetStackResponseDto"
        }
      ],
      "nullable": true
    },
    "tags": {
      "items": {
        "$ref": "#/components/schemas/TagResponseDto"
      },
      "type": "array"
    },
    "thumbhash": {
      "description": "Thumbhash for thumbnail generation (base64) also used as the c query param for thumbnail cache busting.",
      "nullable": true,
      "type": "string"
    },
    "type": {
      "$ref": "#/components/schemas/AssetTypeEnum"
    },
    "updatedAt": {
      "description": "The UTC timestamp when the asset record was last updated in the database. This is automatically maintained by the database and reflects when any field in the asset was last modified.",
      "format": "date-time",
      "type": "string"
    },
    "visibility": {
      "$ref": "#/components/schemas/AssetVisibility"
    },
    "width": {
      "description": "Asset width",
      "maximum": 9007199254740991,
      "minimum": 0,
      "nullable": true,
      "type": "integer"
    }
  },
  "required": [
    "checksum",
    "createdAt",
    "duration",
    "fileCreatedAt",
    "fileModifiedAt",
    "hasMetadata",
    "height",
    "id",
    "isArchived",
    "isEdited",
    "isFavorite",
    "isOffline",
    "isTrashed",
    "localDateTime",
    "originalFileName",
    "originalPath",
    "ownerId",
    "thumbhash",
    "type",
    "updatedAt",
    "visibility",
    "width"
  ],
  "type": "object"
}