{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "$id": "chrome://browser/content/backup/BackupManifest.1.schema.json",
  "title": "BackupManifest",
  "description": "A schema for the backup-manifest.json file for profile backups created by the BackupService",
  "definitions": {
    "metadataType": {
      "title": "Backup Metadata",
      "description": "Metadata about a particular backup.",
      "type": "object",
      "properties": {
        "date": {
          "type": "string",
          "format": "date-time",
          "description": "Date and time that the backup was created"
        },
        "appName": {
          "type": "string",
          "description": "Name of the application that the backup was created for."
        },
        "appVersion": {
          "type": "string",
          "description": "Full version string for the app instance that the backup was created on"
        },
        "buildID": {
          "type": "string",
          "description": "Build ID for the app instance that the backup was created on"
        },
        "profileName": {
          "type": "string",
          "description": "The name given to the profile that was backed up"
        },
        "machineName": {
          "type": "string",
          "description": "The name of the machine that the backup was created on"
        },
        "osName": {
          "type": "string",
          "description": "The OS name that the backup was created on"
        },
        "osVersion": {
          "type": "string",
          "description": "The OS version that the backup was created on"
        },
        "accountID": {
          "type": "string",
          "description": "The ID for the account that the user profile was signed into when backing up. Optional."
        },
        "accountEmail": {
          "type": "string",
          "description": "The email address for the account that the user profile was signed into when backing up. Optional."
        },
        "legacyClientID": {
          "type": "string",
          "description": "The legacy telemetry client ID for the profile that the backup was created on."
        },
        "profileGroupID": {
          "type": "string",
          "description": "The ID for the profile group that the backup was created on. Optional."
        }
      },
      "required": [
        "date",
        "appName",
        "appVersion",
        "buildID",
        "profileName",
        "machineName",
        "osName",
        "osVersion",
        "legacyClientID"
      ]
    }
  },

  "type": "object",
  "properties": {
    "version": {
      "type": "integer",
      "description": "Version of the backup manifest structure"
    },
    "meta": { "$ref": "#/definitions/metadataType" },
    "resources": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": ["version", "resources", "meta"]
}
