# listFiles

The Files list, newest first: `uploads` (imports (status, type, file name, rows, who and when; the id is the `fileProcessingTaskId` for getUploadReport) and `downloads` (standalone exports) the id is the `dataExportId` for getExportReport). `filterTree` is a BULK_TASK filter tree, the same `{ id, operator, conditions: [{ id, fieldId, value }], groups }` shape every filter takes. Uploads only: `{"id":"r","operator":"AND","groups":[],"conditions":[{"id":"u","fieldId":"hasFileProcessingTask","value":true}]}`. Downloads only: conditions `hasDataExport` true AND `hasFileProcessingTask` false. Both: an OR group of the two presence conditions. Add `fileName` (text) to search names, `fileProcessingTaskType` / `dataExportType` (["CONTACTS"|"PROPERTIES"|"SKIPTRACES"|"PROPERTY_SIGNALS"]) for a type. Page with limit/offset.

- Call: `POST https://server.goliathdata.com/api/v1/call` with `{ "operationId": "listFiles", "variables": {...} }`
- Scope: `READ`
- Type: query
- Idempotency: a read; rejects `Idempotency-Key`
- Rate-limited: no
- Result cap: `limit` is clamped to 100, without an error

## Variables

- `filterTree`: `JSON` (default `{id: "root", operator: "AND", conditions: [], groups: []}`)
- `limit`: `Int` (default `25`)
- `offset`: `Int` (default `0`)

## Response (data, an example)

```json
{
  "filterQuery": {
    "applyFilesFilter": {
      "uploads": [
        {
          "id": "<ID>",
          "status": "CREATED",
          "type": "PROPERTIES",
          "createdAt": "2026-01-01T00:00:00.000Z",
          "createdByUser": {
            "id": "<ID>",
            "firstName": "…",
            "lastName": "…"
          },
          "file": {
            "id": "<ID>",
            "fileName": "…"
          },
          "totalRows": 0,
          "producedRecordsCount": 0,
          "dataExport": {
            "id": "<ID>",
            "status": "PROCESSING",
            "fileName": "…"
          }
        }
      ],
      "downloads": [
        {
          "id": "<ID>",
          "fileName": "…",
          "status": "PROCESSING",
          "type": "CONTACTS",
          "numRows": 0,
          "createdAt": "2026-01-01T00:00:00.000Z",
          "createdByUser": {
            "id": "<ID>",
            "firstName": "…",
            "lastName": "…"
          }
        }
      ],
      "pagination": {
        "total": 0,
        "hasMore": true
      }
    }
  }
}
```

## Example

```bash
curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "operationId": "listFiles",
    "variables": {}
  }'
```
