{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/nuix/main/json-schema/nuix-create-configuration-request-schema.json",
  "title": "createConfigurationRequest",
  "x-generated": "2026-10-21",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/nuix-collection-configuration-api-openapi.yml#/components/schemas/createConfigurationRequest",
  "type": "object",
  "properties": {
    "baseConfigId": {
      "type": "integer",
      "description": "Id of an existing Collection Configuration to use as the basis for a new Collection Configuration, or -1 to create a new Collection Configuration from scratch"
    },
    "newConfigName": {
      "type": "string",
      "description": "New Collection Configuration name"
    },
    "description": {
      "type": "string",
      "description": "New Collection Configuration description"
    },
    "category": {
      "type": "string",
      "description": "Optional. A Category associated with this Collection Configuration (a GET call can filter by Category)"
    },
    "tasks": {
      "type": "array",
      "description": "Array of new tasks to add to the new collection configuration.  At least one task must be specified.",
      "items": {
        "$ref": "#/$defs/TaskToCreate"
      }
    }
  },
  "$defs": {
    "DateCriteria": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "One of `From` or `Last`.\n\n`From` specifies absolute start/end dates.\n\n`Last` specifies last number of days back from the current date",
          "enum": [
            "From",
            "Last"
          ]
        },
        "useGMT": {
          "type": "boolean",
          "description": "`true` specifies GMT for time, `false` specifies local time"
        },
        "startDate": {
          "type": "string",
          "description": "inclusive start date in the format `yyyy-mm-ddThh:mm:ss` (only used if type = `From`)"
        },
        "endDate": {
          "type": "string",
          "description": "inclusive end date in the format `yyyy-mm-ddThh:mm:ss` (only used if type = `From`)"
        },
        "numDays": {
          "type": "integer",
          "description": "number of days back from the current date (only used if type = `Last`)"
        },
        "checkCreation": {
          "type": "boolean",
          "description": "When `true`, apply date criteria to creation date"
        },
        "checkModification": {
          "type": "boolean",
          "description": "When `true` apply date criteria to modification date"
        },
        "checkAccess": {
          "type": "boolean",
          "description": "When `true`, apply date criteria to access date"
        }
      }
    },
    "Evidence": {
      "type": "object",
      "properties": {
        "destination": {
          "type": "string",
          "description": "destination where evidence is to be saved"
        },
        "credentials": {
          "type": "boolean",
          "description": "Set to `true` if credentials are supplied to access the destination"
        },
        "createFileSafe": {
          "type": "boolean",
          "description": "Set to `true` to create a FileSafe, `false` save native copies of the files"
        },
        "compression": {
          "type": "string",
          "description": "Compression setting for saved data.  One of `None`, `Medium`, `High` (used only if createFileSafe = `true`)",
          "enum": [
            "None",
            "Medium",
            "High"
          ]
        },
        "segmentSize": {
          "type": "integer",
          "description": "size of each FileSafe segment (used only if createFileSafe = `true`)"
        },
        "segmentSizeUnit": {
          "type": "string",
          "description": "unit of measure which applies to segmentSize.  One of `KB`, `MB`, or `GB` (used only if createFileSafe = `true`)",
          "enum": [
            "KB",
            "MB",
            "GB"
          ]
        },
        "overwrite": {
          "type": "boolean",
          "description": "whether to overwrite existing files at the destination (used only if createFileSafe = `false`)"
        },
        "maintainFullPath": {
          "type": "boolean",
          "description": "whether to maintain the full path of the file at the destination (used only if createFieSafe = false)"
        },
        "validateCollection": {
          "type": "boolean",
          "description": "whether to validate the entire FileSafe after collection is completed"
        }
      }
    },
    "Extension": {
      "type": "object",
      "description": "Describes a File Extension",
      "properties": {
        "extension": {
          "type": "string",
          "description": "file type extension (do not include the preceding dot)"
        },
        "collectAll": {
          "type": "boolean",
          "description": "If `true`, collect this file type regardless of keyword search"
        }
      }
    },
    "FileType": {
      "type": "object",
      "description": "describes the file type filters used in the collection (this object is optional)",
      "properties": {
        "analyzeSignatures": {
          "type": "boolean",
          "description": "when `true`, read the beginning of each file to determine file type.  When `false` use filename extension only to determine file type."
        },
        "mode": {
          "type": "string",
          "description": "One of `Include` or `Exclude` - include or exclude the file types listed in the `extensions` array",
          "enum": [
            "Include",
            "Exclude"
          ]
        },
        "extensions": {
          "type": "array",
          "description": "array of one or more file type extensions",
          "items": {
            "$ref": "#/$defs/Extension"
          }
        }
      }
    },
    "Hash": {
      "type": "object",
      "properties": {
        "hashValue": {
          "type": "string",
          "description": "32-character MD5 hash value"
        },
        "fileSize": {
          "type": "number",
          "description": "Optional file size.\n\nIf provided, will be used to match before calculating hash"
        },
        "microHash": {
          "type": "string",
          "description": "Optional MD5 hash value of the first 64 KB of a file.\n\nUsed to match before calculating a full hash"
        }
      }
    },
    "Keyword": {
      "type": "object",
      "properties": {
        "expressionName": {
          "type": "string",
          "description": "human-readable description of the search expression"
        },
        "expression": {
          "type": "string",
          "description": "search expression"
        },
        "caseSensitive": {
          "type": "boolean",
          "description": "When `true` specifies the search should be case-sensitive"
        },
        "regExpression": {
          "type": "boolean",
          "description": "When `true` specifies the `expression` is interpreted as a Regular Expression"
        }
      }
    },
    "TaskToCreate": {
      "type": "object",
      "properties": {
        "parentConfigId": {
          "type": "integer",
          "description": "optional, id of the parent Collection Configuration which holds the task to be copied. If omitted, the task is created from given parameters."
        },
        "taskNum": {
          "type": "integer",
          "description": "optional, id of the task to be copied (within the parent conf specified above).  Required if `parentConfigId` is specified."
        },
        "taskType": {
          "type": "string",
          "description": "type of task\\: one of `Collect`, `Relocate`, `Deploy`, or `Launch` (currently only `Collect` and `Relocate` are supported).\n\n**Note\\:** If copying an existing task, the `taskType` cannot be changed in the new task.",
          "enum": [
            "Collect",
            "Relocate",
            "Deploy",
            "Launch"
          ]
        },
        "label": {
          "type": "string",
          "description": "optional, user-defined label for this job.\n\nCan be used as search criteria for jobs"
        },
        "impersonation": {
          "type": "string",
          "description": "None or Logged on User",
          "enum": [
            "None",
            "Logged on User"
          ]
        },
        "Evidence": {
          "$ref": "#/$defs/Evidence"
        },
        "FileType": {
          "$ref": "#/$defs/FileType"
        },
        "DateRange": {
          "type": "object",
          "properties": {
            "dates": {
              "type": "array",
              "description": "array of one or more date criteria",
              "items": {
                "$ref": "#/$defs/DateCriteria"
              }
            }
          }
        },
        "AdvancedSearch": {
          "type": "object",
          "properties": {
            "keywords": {
              "type": "array",
              "description": "array of keywords",
              "items": {
                "$ref": "#/$defs/Keyword"
              }
            }
          }
        },
        "Hash": {
          "type": "object",
          "properties": {
            "hashType": {
              "type": "string",
              "description": "always MD5",
              "enum": [
                "MD5"
              ]
            },
            "hashes": {
              "type": "array",
              "description": "array of hashes",
              "items": {
                "$ref": "#/$defs/Hash"
              }
            }
          }
        },
        "Volatile": {
          "type": "object",
          "description": "Describes a volatile configuration",
          "properties": {
            "collectVolatile": {
              "type": "boolean",
              "description": "Whether to collect volatile information,  When `false` the remaining fields are ignored"
            },
            "collectHandles": {
              "type": "boolean",
              "description": "Whether to collect handles as part of the collection (collectVolatile must be `true`)"
            },
            "collectionScreenShots": {
              "type": "boolean",
              "description": "Whether to capture screen shots of all windows (requires impersonation, collectVolatile must be `true`)"
            },
            "screenShotFormat": {
              "type": "string",
              "description": "The graphic file format to save screen shot images.  One of `PNG` or `JPG` (collectScreenShots must be `true`)",
              "enum": [
                "PNG",
                "JPG"
              ]
            }
          }
        },
        "RAM": {
          "type": "object",
          "description": "Describes RAM collection",
          "properties": {
            "collectRAM": {
              "type": "boolean",
              "description": "When `true` saves a bit-for-bit image of the RAM"
            }
          }
        },
        "SmartMover": {
          "type": "object",
          "description": "For a `Deploy` or `Relocate` task.  Specifies the copying or moving of files from one ECC Client to another",
          "properties": {
            "destinationFolder": {
              "type": "string",
              "description": "folder on the destination computer where evidence is to be copied"
            },
            "destComputerName": {
              "type": "string",
              "description": "name of the destination computer"
            },
            "destComputerId": {
              "type": "string",
              "description": "GUID of the destination computer"
            },
            "moveOrCopy": {
              "type": "string",
              "description": "Move or Copy.\n\nMove to delete evidence from the source after the copy is complete",
              "enum": [
                "Move",
                "Copy"
              ]
            },
            "relocateData": {
              "type": "boolean",
              "description": "true to relocate the evidence (data)"
            },
            "relocateLogs": {
              "type": "boolean",
              "description": "true to relocate the logs"
            }
          }
        }
      }
    }
  }
}