Verify Browser Types
Type definitions used throughout the Verify Browser SDK.
CaptureMetadata
interface CaptureMetadata {
when: string; // ISO 8601 timestamp of when the photo/video was captured
parameters: PhotoMetadataInfo | VideoMetadataInfo; // Detailed camera settings and device information
}Capture metadata extracted from the C2PA manifest. Contains device info and camera settings at capture time.
Used by:VerifiableFile.captureMetadata()- Returns capture metadata from the C2PA manifest
PhotoMetadataInfo
interface PhotoMetadataInfo {
deviceMake: string; // Device manufacturer (e.g., "Apple")
deviceModel: string; // Device model (e.g., "iPhone 15 Pro")
softwareVersion: string; // iOS version (e.g., "17.4.1")
xResolution: number; // Horizontal resolution in pixels
yResolution: number; // Vertical resolution in pixels
orientation: number; // EXIF orientation value
iso: string; // ISO sensitivity setting
exposureTime: number; // Exposure time in microseconds
depthOfField: number; // Depth of field in millimeters
focalLength: number; // Focal length in millimeters
authenticityData: AuthenticityData; // Device security status
depthData?: DepthData; // Depth map information (optional)
filmStyle?: FilmStyleInfo; // Film style applied at capture (optional)
trustedTimestamp?: bigint; // Timestamp extracted from GPS data (Unix timestamp in milliseconds, optional)
location?: LocationInfo; // Geographic location where the photo was captured (optional)
}Detailed metadata for photos captured with the camera.
VideoMetadataInfo
interface VideoMetadataInfo {
deviceMake: string; // Device manufacturer (e.g., "Apple")
deviceModel: string; // Device model (e.g., "iPhone 15 Pro")
softwareVersion: string; // iOS version (e.g., "17.4.1")
format: string; // Video container format (e.g., "mov")
hasAudio: boolean; // Whether the video includes an audio track
durationSeconds: number; // Video duration in seconds
fileSizeBytes: number; // File size in bytes
width: number; // Video width in pixels
height: number; // Video height in pixels
rotationDegrees: number; // Video rotation (0, 90, 180, or 270)
frameRate: number; // Video frame rate (fps)
videoCodec?: string; // Video codec identifier (optional)
audioCodec?: string; // Audio codec identifier (optional)
audioSampleRate?: number; // Audio sample rate in Hz (optional)
audioChannels?: number; // Number of audio channels (optional)
authenticityData: AuthenticityData; // Device security status
filmStyle?: FilmStyleInfo; // Film style applied at capture (optional)
trustedTimestamp?: bigint; // Timestamp extracted from GPS data (Unix timestamp in milliseconds, optional)
location?: LocationInfo; // Geographic location where the photo was captured (optional)
}Detailed metadata for videos recorded with the camera.
AuthenticityStatus
enum AuthenticityStatus {
Unknown,
NoManifest,
InvalidManifest,
Bindings,
Proof,
}Enum representing the authenticity status of a file based on its C2PA manifest contents.
Used by:VerifiableFile.authenticityStatus()- Determines the file's authenticity status
AuthenticityData
interface AuthenticityData {
isJailBroken: boolean; // Whether the device was jailbroken at capture time
isLocationSpoofingAvailable: boolean; // Whether location spoofing was detected
isLocationAvailable?: boolean; // Whether location was successfully retrieved at capture time (optional)
locationRetrievalStatus?: string; // Reason location was unavailable, or "success" (optional)
}Device security status information captured at the time of photo/video creation.
isLocationAvailable—trueif location access was granted and coordinates were successfully retrieved at capture time.falseif location was attempted but could not be obtained. Absent if location access wasn't requested.
DepthData
interface DepthData {
width: number; // Width of the depth map in pixels
height: number; // Height of the depth map in pixels
pixelFormat: string; // Pixel format (e.g., "kCVPixelFormatType_DepthFloat32")
statistics: DepthDataStatistics; // Statistical information about depth values
accuracy: string; // Accuracy level (e.g., "relative", "absolute")
}Depth map information captured alongside a photo (only present in photos captured with depth data enabled).
DepthDataStatistics
interface DepthDataStatistics {
min: string; // Minimum depth value
max: string; // Maximum depth value
mean: string; // Mean depth value
stdDev: string; // Standard deviation
validPixelCount: number; // Number of pixels with valid depth data
sampleStride: number; // Stride used when sampling for statistics
}Statistical information about depth values in a depth map.
FilmStyleInfo
interface FilmStyleInfo {
name: string; // Film style name (e.g., "mellow", "nostalgic", "bw", or a custom name)
source: string; // How the style was defined: "builtin", "override", or "custom"
recipe: string; // JSON-encoded array of FilmStyleEffect objects applied at capture
}Film style (filter) information recorded at capture time. Present when a non-default film style was applied.
builtin— A standard preset (mellow,nostalgic,bw) used without modification.override— A built-in preset whose recipe was overridden viafilmStyleOverrides.custom— An app-defined style registered viacustomFilmStyles.
The recipe field is a JSON string that can be parsed into a FilmStyleRecipe (an array of FilmStyleEffect objects).
LocationInfo
interface LocationInfo {
latitude: string; // Latitude in decimal degrees (e.g., "37.7749")
longitude: string; // Longitude in decimal degrees (e.g., "-122.4194")
altitude?: string; // Altitude in meters above sea level (optional)
accuracy: string; // Horizontal accuracy radius in meters
altitudeAccuracy?: string; // Vertical accuracy in meters (optional)
}GPS location captured at the time of photo/video creation. Coordinates and accuracy are stored as strings to preserve original device precision without floating-point rounding.
Used by:PhotoMetadataInfo.location- Location where the photo was capturedVideoMetadataInfo.location- Location where the video was recorded