> This page is for Developers.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://zuora.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://zuora.ferndocs.com/_mcp/server.

# List all data backfill jobs

GET https://rest.test.zuora.com/v1/uno/data-backfill/listjobs

Reference: https://zuora.ferndocs.com/developers/api-reference/zuora-api/order-to-revenue/data-backfill/get-list-data-backfill-jobs

## Authentication

- `Authorization` header (bearer token, required) — Use `Bearer {{token}}` in the `Authorization` header for authentication.

## Servers

- `https://rest.test.zuora.com` (US Developer & Central Sandbox (incl. Test Drive), default)
- `https://rest.sandbox.na.zuora.com` (US API Sandbox Cloud 1)
- `https://rest.apisandbox.zuora.com` (US API Sandbox Cloud 2)
- `https://rest.na.zuora.com` (US Production Cloud 1)
- `https://rest.zuora.com` (US Production Cloud 2)
- `https://rest.test.eu.zuora.com` (EU Developer & Central Sandbox)
- `https://rest.sandbox.eu.zuora.com` (EU API Sandbox)
- `https://rest.eu.zuora.com` (EU Production)
- `https://rest.test.ap.zuora.com` (APAC Developer & Central Sandbox)
- `https://rest.ap.zuora.com` (APAC Production)

## Request

### Headers

- `Zuora-Version` (string, optional) — The minor API version. For a list of available minor versions, see [API upgrades](https://developer.zuora.com/v1-api-reference/api-upgrades/).

## Response

### 200

OK

- `processId` (string, optional) — The ID of the process that handles the operation.
- `reasons` (list of V1UnoDataBackfillListjobsGetResponsesContentApplicationJsonSchemaReasonsItems, optional) — The container of the error code and message. This field is available only if the `success` field is `false`.
- `requestId` (string, optional) — Unique identifier of the request.
- `success` (boolean, optional) — Indicates whether the call succeeded.
- `jobs` (list of DataBackfillJob, optional)

## Errors

### 500 Internal Server Error

Internal Server Error

- `reasons` (list of ErrorResponseReasonsItems, optional)

### 400 Client Request Error

Request Errors

- `processId` (string, optional) — The ID of the process that handles the operation.
- `reasons` (list of CommonResponseReasonsItems, optional) — The container of the error code and message. This field is available only if the `success` field is `false`.
- `requestId` (string, optional) — Unique identifier of the request.
- `success` (boolean, optional) — Indicates whether the call succeeded.

## Types

### V1UnoDataBackfillListjobsGetResponsesContentApplicationJsonSchemaReasonsItems

- `code` (string, optional) — The error code of response.
- `message` (string, optional) — The detail information of the error response

### DataBackfillJob

- `id` (string, optional) — Job ID
- `importType` (enum, optional) — The data backfill job type
  - Allowed values: `ProductRatePlanCharge`, `RatePlanCharge`, `InvoiceDetail`, `MemoDetail`, `InvoiceItemAdjustment`
- `uploadedFileId` (string, optional) — ID of the uploaded file
- `uploadedFileName` (string, optional) — Name of the uploaded file
- `uploadedFileUrl` (string, optional) — URL of the uploaded file. You can download the uploaded file via this url.
- `uploadedFileSize` (string, optional) — Size of the uploaded file
- `inputFileSize` (long, optional) — Size of the uploaded file, in the `int64` format
- `outputSize` (string, optional) — Size of the output file.
- `outputType` (string, optional) — Type of the output file.
- `outputFileSize` (long, optional) — Size of the output file, in the `int64` format.
- `resultFileId` (string, optional) — ID of the output result file that you can download when a data backfill job is completed.
- `resultFileName` (string, optional) — Name of the result file that you can download when a data backfill job is completed
- `resultFileUrl` (string, optional) — URL of the result file that you can download when a data backfill job is completed. You can download the result file via this URL. In the result file, you can see the data that you uploaded and the result for each record in the `Success` column of the file. For the record that fails to be updated, you can see the reason for failure in the `Error Message` column of the file.
- `uploadedBy` (string, optional) — The user who uploads the file
- `uploadedOn` (datetime, optional) — The date and time when the file is uploaded
- `completedOn` (datetime, optional) — The date and time when the data backfill action is completed
- `startedProcessingOn` (datetime, optional) — The date and time when the data backfill action is started
- `totalCount` (integer, optional) — The total count of the data records to backfill
- `failedCount` (integer, optional) — The count of the data records that failed to be backfilled
- `status` (enum, optional) — The status of the data backfill job
  - Allowed values: `Pending`, `Processing`, `Completed`, `Canceled`, `Failed`, `Stopping`, `Stopped`
- `failureMessage` (string, optional) — Message for the failure
- `processedCount` (long, optional) — The count of the data records that are being processed
- `successCount` (long, optional) — The count of the data records that are successfully backfilled
- `remainingTime` (long, optional) — The remaining time for the data backfill job, in the `int64` format
- `remainingTimeText` (string, optional) — The remaining time for the data backfill job, in the text format
- `completedPercentage` (integer, optional) — The percentage of the completed data records

### ErrorResponseReasonsItems

- `code` (string, optional) — The error code of response.
- `message` (string, optional) — The detail information of the error response

### CommonResponseReasonsItems

- `code` (string, optional) — The error code of response.
- `message` (string, optional) — The detail information of the error response

## Examples

### success

**Response**

```json
{
  "success": true,
  "jobs": [
    {
      "id": "ff8080818bb300af018bb325fe0c58f3",
      "uploadedFileId": "ff8080818bb300af018bb325fe0c58f2",
      "uploadedFileName": "file.csv",
      "uploadedFileUrl": "http://localhost:8080/apps/v1/files/ff8080818bb300af018bb325fe0c58f2",
      "uploadedFileSize": "798Byte",
      "inputFileSize": 798,
      "outputSize": "492Byte",
      "outputType": "(url:.csv.zip)",
      "outputFileSize": 492,
      "resultFileId": "ff8080818bb300af018bb32605c358f6",
      "resultFileName": "file.csv_result.zip",
      "resultFileUrl": "http://localhost:8080/apps/v1/files/ff8080818bb300af018bb32605c358f6",
      "uploadedBy": "test1699515471903@test.com",
      "uploadedOn": "1699517693000",
      "completedOn": "1699517695000",
      "startedProcessingOn": "1699517693000",
      "totalCount": 2,
      "failedCount": 1,
      "status": "Completed",
      "failureMessage": "",
      "processedCount": 2,
      "successCount": 1,
      "remainingTime": 1,
      "remainingTimeText": "",
      "completedPercentage": 100,
      "type": "RatePlanCharge"
    }
  ]
}
```

**SDK Code**

```python success
import requests

url = "https://rest.test.zuora.com/v1/uno/data-backfill/listjobs"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript success
const url = 'https://rest.test.zuora.com/v1/uno/data-backfill/listjobs';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go success
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://rest.test.zuora.com/v1/uno/data-backfill/listjobs"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby success
require 'uri'
require 'net/http'

url = URI("https://rest.test.zuora.com/v1/uno/data-backfill/listjobs")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java success
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://rest.test.zuora.com/v1/uno/data-backfill/listjobs")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php success
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.test.zuora.com/v1/uno/data-backfill/listjobs', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp success
using RestSharp;

var client = new RestClient("https://rest.test.zuora.com/v1/uno/data-backfill/listjobs");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift success
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.test.zuora.com/v1/uno/data-backfill/listjobs")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### fail

**Response**

```json
{
  "processId": "1B81A64621CAD85D",
  "reasons": [
    {
      "code": "50000020",
      "message": "Error Message"
    }
  ],
  "requestId": "c7f5f81c-cb9a-4a8a-b40b-27cca8a7c25f",
  "success": false
}
```

**SDK Code**

```python fail
import requests

url = "https://rest.test.zuora.com/v1/uno/data-backfill/listjobs"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript fail
const url = 'https://rest.test.zuora.com/v1/uno/data-backfill/listjobs';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go fail
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://rest.test.zuora.com/v1/uno/data-backfill/listjobs"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby fail
require 'uri'
require 'net/http'

url = URI("https://rest.test.zuora.com/v1/uno/data-backfill/listjobs")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java fail
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://rest.test.zuora.com/v1/uno/data-backfill/listjobs")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php fail
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.test.zuora.com/v1/uno/data-backfill/listjobs', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp fail
using RestSharp;

var client = new RestClient("https://rest.test.zuora.com/v1/uno/data-backfill/listjobs");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift fail
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.test.zuora.com/v1/uno/data-backfill/listjobs")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```