{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://lr.adobe.io/schemas/lightroom/asset.json",
  "title": "Lightroom Asset",
  "description": "Schema for an Adobe Lightroom asset. Assets represent individual photos or videos stored in a customer's Lightroom cloud catalog. Each asset has metadata including capture date, import source, location, and develop settings.",
  "type": "object",
  "required": [
    "id",
    "type",
    "subtype"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique identifier for the asset (UUID format)"
    },
    "type": {
      "type": "string",
      "description": "Resource type identifier",
      "const": "asset"
    },
    "subtype": {
      "type": "string",
      "description": "Asset media type",
      "enum": [
        "image",
        "video"
      ]
    },
    "created": {
      "type": "string",
      "format": "date-time",
      "description": "Server-side timestamp when the asset was created"
    },
    "updated": {
      "type": "string",
      "format": "date-time",
      "description": "Server-side timestamp when the asset was last updated"
    },
    "revision_ids": {
      "type": "array",
      "description": "List of revision identifiers tracking edit history",
      "items": {
        "type": "string"
      }
    },
    "payload": {
      "type": "object",
      "description": "Asset metadata payload",
      "properties": {
        "captureDate": {
          "type": "string",
          "format": "date-time",
          "description": "Date and time the photo or video was captured"
        },
        "userCreated": {
          "type": "string",
          "format": "date-time",
          "description": "User-side timestamp when the asset was created"
        },
        "userUpdated": {
          "type": "string",
          "format": "date-time",
          "description": "User-side timestamp when the asset was last updated"
        },
        "importSource": {
          "$ref": "#/$defs/ImportSource"
        },
        "develop": {
          "$ref": "#/$defs/DevelopSettings"
        },
        "xmp": {
          "type": "object",
          "description": "Embedded XMP metadata from the original file",
          "additionalProperties": true
        },
        "location": {
          "$ref": "#/$defs/Location"
        },
        "rating": {
          "type": "integer",
          "description": "User-assigned star rating",
          "minimum": 0,
          "maximum": 5
        },
        "flag": {
          "type": "string",
          "description": "Flag status of the asset",
          "enum": [
            "flagged",
            "rejected",
            "unflagged"
          ]
        },
        "label": {
          "type": "string",
          "description": "Color label applied to the asset",
          "examples": [
            "Red",
            "Yellow",
            "Green",
            "Blue",
            "Purple"
          ]
        }
      }
    },
    "links": {
      "$ref": "#/$defs/Links"
    }
  },
  "$defs": {
    "ImportSource": {
      "type": "object",
      "description": "Information about how the asset was imported into Lightroom",
      "properties": {
        "fileName": {
          "type": "string",
          "description": "Original file name at time of import"
        },
        "fileSize": {
          "type": "integer",
          "description": "Original file size in bytes",
          "minimum": 0
        },
        "mimeType": {
          "type": "string",
          "description": "MIME type of the original file",
          "examples": [
            "image/jpeg",
            "image/png",
            "image/tiff",
            "image/dng",
            "image/x-adobe-dng",
            "video/mp4"
          ]
        },
        "importedOnDevice": {
          "type": "string",
          "description": "Name or identifier of the device used for import"
        },
        "importedBy": {
          "type": "string",
          "description": "Application that performed the import"
        },
        "importTimestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp when the asset was imported"
        }
      }
    },
    "DevelopSettings": {
      "type": "object",
      "description": "Non-destructive develop settings applied to the asset",
      "properties": {
        "crsVersion": {
          "type": "string",
          "description": "Camera Raw settings version"
        },
        "processVersion": {
          "type": "string",
          "description": "Process version for the develop engine"
        },
        "whiteBalance": {
          "type": "string",
          "description": "White balance mode"
        },
        "temperature": {
          "type": "integer",
          "description": "Color temperature in Kelvin"
        },
        "tint": {
          "type": "integer",
          "description": "Tint adjustment"
        },
        "exposure": {
          "type": "number",
          "description": "Exposure adjustment in stops"
        },
        "contrast": {
          "type": "integer",
          "description": "Contrast adjustment"
        },
        "highlights": {
          "type": "integer",
          "description": "Highlights recovery"
        },
        "shadows": {
          "type": "integer",
          "description": "Shadow recovery"
        },
        "whites": {
          "type": "integer",
          "description": "White point adjustment"
        },
        "blacks": {
          "type": "integer",
          "description": "Black point adjustment"
        },
        "clarity": {
          "type": "integer",
          "description": "Clarity (midtone contrast)"
        },
        "vibrance": {
          "type": "integer",
          "description": "Vibrance adjustment"
        },
        "saturation": {
          "type": "integer",
          "description": "Saturation adjustment"
        }
      }
    },
    "Location": {
      "type": "object",
      "description": "GPS location data for the asset",
      "properties": {
        "latitude": {
          "type": "number",
          "description": "GPS latitude in decimal degrees",
          "minimum": -90,
          "maximum": 90
        },
        "longitude": {
          "type": "number",
          "description": "GPS longitude in decimal degrees",
          "minimum": -180,
          "maximum": 180
        },
        "altitude": {
          "type": "number",
          "description": "GPS altitude in meters"
        },
        "direction": {
          "type": "number",
          "description": "Direction the camera was facing in degrees",
          "minimum": 0,
          "maximum": 360
        },
        "city": {
          "type": "string",
          "description": "City name from reverse geocoding"
        },
        "state": {
          "type": "string",
          "description": "State or province from reverse geocoding"
        },
        "country": {
          "type": "string",
          "description": "Country name from reverse geocoding"
        },
        "isoCountryCode": {
          "type": "string",
          "description": "ISO 3166-1 alpha-2 country code",
          "pattern": "^[A-Z]{2}$"
        }
      }
    },
    "Links": {
      "type": "object",
      "description": "HATEOAS navigation links",
      "properties": {
        "self": {
          "$ref": "#/$defs/Link"
        },
        "master": {
          "$ref": "#/$defs/Link"
        },
        "xmp": {
          "$ref": "#/$defs/Link"
        },
        "renditions": {
          "$ref": "#/$defs/Link"
        }
      },
      "additionalProperties": {
        "$ref": "#/$defs/Link"
      }
    },
    "Link": {
      "type": "object",
      "properties": {
        "href": {
          "type": "string",
          "description": "URL of the linked resource"
        }
      },
      "required": [
        "href"
      ]
    }
  }
}
