> 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.

# Retrieve a job of a test environment

GET https://rest.test.zuora.com/test-environments/{id}/jobs/{jobId}

Use this operation to retrieve a specific job associated
with a Test Environment by its unique job ID. It handles
HTTP GET requests to the /test-environments/\{id}/jobs/\{jobId}
endpoint and returns a JobResponse object if the job is found.
If the specified job does not exist, it returns a 404 error.

### User Access Permission

You must be assigned the **Refresh Central Sandbox** permission to run this operation.

Reference: https://zuora.ferndocs.com/developers/api-reference/zuora-api/test-environments/test-environment-jobs/get-job-of-test-environment

## 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

### Path parameters

- `id` (string, required) — Test Environment ID
- `jobId` (string, required) — Test Environment Job ID

### Headers

- `Zuora-Entity-Ids` (string, optional) — An entity ID. If you have [Zuora Multi-entity](https://knowledgecenter.zuora.com/BB_Introducing_Z_Business/Multi-entity) enabled and the OAuth token is valid for more than one entity, you must use this header to specify which entity to perform the operation in. If the OAuth token is only valid for a single entity, or you do not have Zuora Multi-entity enabled, you should not set this header.
- `Zuora-Track-Id` (string, optional) — A custom identifier for tracing the API call. If you set a value for this header, Zuora returns the same value in the response headers. This header enables you to associate your system process identifiers with Zuora API calls, to assist with troubleshooting in the event of an issue. The value of this field must use the US-ASCII character set and must not include any of the following characters: colon (`:`), semicolon (`;`), double quote (`"`), and quote (`'`).
- `Accept-Encoding` (string, optional) — Include the `Accept-Encoding: gzip` header to compress responses as a gzipped file. It can significantly reduce the bandwidth required for a response. If specified, Zuora automatically compresses responses that contain over 1000 bytes of data, and the response contains a `Content-Encoding` header with the compression algorithm so that your client can decompress it.
- `Content-Encoding` (string, optional) — Include the `Content-Encoding: gzip` header to compress a request. With this header specified, you should upload a gzipped file for the request payload instead of sending the JSON payload.

## Response

### 200

Successfully retrieved a Test Environment job response

- `createTime` (datetime, optional) — The date and time when the job was first synced to self service
- `createdById` (string, optional) — The automatically generated ID of the Zuora user who created the job object
- `estimatedCompletionTime` (datetime, optional) — The date and time when the job is estimated to be completed
- `id` (string, optional) — The unique ID (UUID) of the Test Environment job
- `jobEndTime` (datetime, optional) — The date and time when the job completed
- `jobStartTime` (datetime, optional) — The date and time when the job was started
- `jobType` (enum, optional) — The type of Test Environment job being performed
  - Allowed values: `REFRESH`, `CREATE`, `DELETE`
- `progressPercentage` (integer, optional) — The progress percentage of the job
- `scheduledRefreshTime` (datetime, optional) — The optional date and time for scheduling a job
- `status` (enum, optional) — The status of the Test Environment job
  - Allowed values: `NEW`, `SCHEDULED`, `QUEUED`, `INITIATED`, `PROVISIONING`, `DEPROVISIONING`, `EXPORTING`, `SCRUBBING`, `RESETTING`, `IMPORTING`, `FINALIZING`, `CANCELLING`, `COMPLETED`, `FAILED`, `CANCELLED`
- `testEnvironmentId` (string, optional) — The Test Environment to which this job belongs
- `updateTime` (datetime, optional) — The date and time when the job was last synced to self-service
- `updatedById` (string, optional) — The automatically generated ID of the Zuora user who updated the job object

## Examples

**Request**

```json
{}
```

**Response**

```json
{
  "createTime": "2024-06-10T14:45:00Z",
  "createdById": "a3f9c8d7203c447b8b9cd90382da1234",
  "estimatedCompletionTime": "2024-06-10T15:30:00Z",
  "id": "9f8b7c6d-1234-4e56-89ab-cdef01234567",
  "jobEndTime": "2024-06-10T15:28:00Z",
  "jobStartTime": "2024-06-10T14:50:00Z",
  "jobType": "REFRESH",
  "progressPercentage": 100,
  "scheduledRefreshTime": "2024-06-10T14:30:00Z",
  "status": "COMPLETED",
  "testEnvironmentId": "3e2f1d4c-5678-4a9b-8cde-123456789abc",
  "updateTime": "2024-06-10T15:28:00Z",
  "updatedById": "a3f9c8d7203c447b8b9cd90382da1234"
}
```

**SDK Code**

```python
import requests

url = "https://rest.test.zuora.com/test-environments/id/jobs/jobId"

payload = {}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

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

print(response.json())
```

```javascript
const url = 'https://rest.test.zuora.com/test-environments/id/jobs/jobId';
const options = {
  method: 'GET',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{}'
};

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

```go
package main

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

func main() {

	url := "https://rest.test.zuora.com/test-environments/id/jobs/jobId"

	payload := strings.NewReader("{}")

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

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

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

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

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

}
```

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

url = URI("https://rest.test.zuora.com/test-environments/id/jobs/jobId")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"

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

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

HttpResponse<String> response = Unirest.get("https://rest.test.zuora.com/test-environments/id/jobs/jobId")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.test.zuora.com/test-environments/id/jobs/jobId', [
  'body' => '{}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://rest.test.zuora.com/test-environments/id/jobs/jobId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.test.zuora.com/test-environments/id/jobs/jobId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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()
```