downloads.DownloadQuery
=======================

The `DownloadQuery` type of the `downloads` API defines a set of parameters that can be used to search the downloads manager for a specific set of downloads.

This type is used for example in `downloads.search()` and `downloads.erase()`, as a query object to filter the set of `DownloadItems` to return or erase.

Type
----

Values of this type are objects. They contain the following properties:

`cookieStoreId` Optional

The cookie store ID of the contextual identity in which the download took place. See Work with contextual identities for more information.

`query` Optional

An `array` of `string`s. Include only `DownloadItems` whose `filename` or `url` contains all of the given strings. You can also include terms beginning with a dash (-) — these terms **must not** be contained in the item's `filename` or `url` for it to be included.

`startedBefore` Optional

A `DownloadTime`. Include only `DownloadItems` that started before the given time.

`startedAfter` Optional

A `DownloadTime`. Include only `DownloadItems` that started after the given time.

`endedBefore` Optional

A `DownloadTime`. Include only `DownloadItems` that ended before the given time.

`endedAfter` Optional

A `DownloadTime`. Include only `DownloadItems` that ended after the given time.

`totalBytesGreater` Optional

A `number` representing a number of bytes. Include only `DownloadItems` whose `totalBytes` is greater than the given number.

`totalBytesLess` Optional

A `number` representing a number of bytes. Include only `DownloadItems` whose `totalBytes` is less than the given number.

`filenameRegex` Optional

A `string` representing a regular expression. Include only `DownloadItems` whose `filename` value matches the given regular expression.

`urlRegex` Optional

A `string` representing a regular expression. Include only `DownloadItems` whose `url` value matches the given regular expression.

`limit` Optional

An `integer` representing a number of results. Include only the specified number of `DownloadItems`.

`orderBy` Optional

An `array` of `string`s representing `DownloadItem` properties the search results should be sorted by. For example, including `startTime` then `totalBytes` in the array would sort the `DownloadItems` by their start time, then total bytes — in ascending order. To specify sorting by a property in descending order, prefix it with a hyphen, for example `-startTime`.

`id` Optional

An `integer` representing the ID of the `downloads.DownloadItem` you want to query.

`url` Optional

A `string` representing the absolute URL that the download was initiated from, before any redirects.

`filename` Optional

A string representing the absolute local path of the download file you want to query.

`danger` Optional

A string representing a `downloads.DangerType` — include only `DownloadItems` with this `danger` value.

`mime` Optional

A `string` representing a MIME type. Include only `DownloadItems` with this `mime` value.

`startTime` Optional

A `string` representing an ISO 8601 format time. Include only `DownloadItems` with this `startTime` value.

`endTime` Optional

A `string` representing an ISO 8601 format time. Include only will limited to `DownloadItems` with this `endTime` value.

`state` Optional

A `string` representing a download `downloads.State` (`in_progress`, `interrupted`, or `complete`). Include only `DownloadItems` with this `state` value.

`paused` Optional

A `boolean` that indicates whether a download is paused — i.e. has stopped reading data from the host, but kept the connection open (`true`), or not (`false`). Include only `DownloadItems` with this `paused` value.

`error` Optional

A string representing an `downloads.InterruptReason` — a reason why a download was interrupted. Include only `DownloadItems` with this `error` value.

`bytesReceived` Optional

A `number` representing the number of bytes received so far from the host, without considering file compression. Include only `DownloadItems` with this `bytesReceived` value.

`totalBytes` Optional

A `number` representing the total number of bytes in the downloaded file, without considering file compression. Include only `DownloadItems` with this `totalBytes` value.

`fileSize` Optional

`number`. Number of bytes in the whole file post-decompression, or -1 if unknown. A `number` representing the total number of bytes in the file after decompression. Include only `DownloadItems` with this `fileSize` value.

`exists` Optional

A `boolean` indicating whether a downloaded file still exists (`true`) or not (`false`). Include only `DownloadItems` with this `exists` value.

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**Note:** This API is based on Chromium's `chrome.downloads` API.