# Upload a source file into the content directory The request body is the file itself; the target name rides the query string because names carry subdirectory slashes. The bytes are written beside the target and renamed into place, so a partial upload is never visible under an analyzable name, and the file is in the listing — and submittable — the moment this answers. Uploads never overwrite: 409 when the name is taken. 400 for no name, an absolute or escaping path, a non-analyzable extension, or a path segment a file already occupies. 413 for an upload larger than the VOD settings' max_upload_bytes. Endpoint: POST /vod/files Version: 2.0.0 Security: engineBasic ## Query parameters: - `file` (string, required) Where to store the upload, relative to the content directory, with an analyzable extension (.mp4, .m4v, .mov, .f4v). Subdirectories are created as needed. ## Response 201 fields (application/json): - `file` (string, required) Path relative to the content directory, with forward slashes — post it back verbatim as a job's file. - `size_bytes` (integer, required) File size in bytes. - `modified_at` (string, required) Last modification time, RFC 3339 with a UTC offset. ## Response 400 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. ## Response 409 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. ## Response 413 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. ## Response 503 fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem. ## Response default fields (application/problem+json): - `type` (string) URI identifying the problem type. - `title` (string, required) Short, human-readable summary of the problem type. - `status` (integer, required) The HTTP status code, repeated from the response line. - `detail` (string) Human-readable explanation specific to this occurrence. - `instance` (string) URI identifying this specific occurrence of the problem.