> 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 deployment log

GET https://rest.test.zuora.com/deployment-manager/deployments/{migrationId}

Retrieve a deployment log.


Reference: https://zuora.ferndocs.com/developers/api-reference/zuora-api/deployment-manager/metadata-deployment/fetch-deployment-logs

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

- `migrationId` (string, required) — The unique ID of a migration.

### 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 do not need to set this header.

## Response

### 200

OK

- `id` (string, optional) — ID of the migration process.
- `name` (string, optional) — Name of the migration.
- `description` (string, optional) — Description of the migration.
- `status` (string, optional) — Migration status.
- `targetTenant` (DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaTargetTenant, optional)
- `deploymentDate` (string, optional) — Deployment timestamp.
- `runBy` (string, optional) — Name of the user who executed the migration.
- `succeeded` (list of DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaSucceededItems, optional)
- `failed` (list of DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaFailedItems, optional)
- `skipped` (list of DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaSkippedItems, optional)

## Types

### DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaTargetTenant

- `id` (string, optional) — Target tenant id.
- `name` (string, optional) — Target tenant name.
- `environment` (string, optional) — Target tenant description.

### DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaSucceededItems

- `component` (string, optional) — Component name.
- `subComponent` (string, optional) — Subcomponent name.
- `key` (string, optional) — Key to identify a particular migration data.

### DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaFailedItems

- `component` (string, optional) — Component name.
- `subComponent` (string, optional) — Subcomponent name.
- `key` (string, optional) — Key to identify a particular migration data.
- `errorInfo` (string, optional) — Error details of the migration.

### DeploymentManagerDeploymentsMigrationIdGetResponsesContentApplicationJsonSchemaSkippedItems

- `component` (string, optional) — Component name.
- `subComponent` (string, optional) — Subcomponent name.
- `key` (string, optional) — Key to identify a particular migration data.
- `reason` (string, optional) — The rationale behind the non-migration of specific data.

## Examples

**Response**

```json
{
  "id": "8039d54b-da6f-4d80-88d5-06220c42861f",
  "name": "Deploy - Product catalog",
  "description": "Deploy - Product catalog",
  "status": "PARTIALLY-DONE",
  "targetTenant": {
    "id": "9958",
    "name": "Test API sandbox",
    "environment": "US-API-Sandbox-Staging"
  },
  "deploymentDate": "2023-08-28 11:34:18.682000+00:00",
  "runBy": "Admin",
  "succeeded": [
    {
      "component": "Settings",
      "subComponent": "Billing",
      "key": "Currency"
    }
  ],
  "failed": [
    {
      "component": "Settings",
      "subComponent": "Finance",
      "key": "AllRevenueRecognitionModels",
      "errorInfo": "Error while updating the payload with path : /revenue-recognition-models --> You do not have permission to perform this operation."
    },
    {
      "component": "Settings",
      "subComponent": "Finance",
      "key": "AccountingRules",
      "errorInfo": "Error while updating the payload with path : /accounting-rules --> You do not have Currency Conversion permission. You can request permission from your administrator."
    },
    {
      "component": "Settings",
      "subComponent": "Billing",
      "key": "SubscriptionSettings",
      "errorInfo": "{\n  \"errorCode\" : \"REMOTE_HTTP_CLIENT_ERROR\",\n  \"remoteHttpStatus\" : 403,\n  \"messages\" : [ \"{\\\"error\\\":\\\"403 Forbidden\\\",\\\"processId\\\":\\\"A5EF7EA92B3B95B0\\\",\\\"message\\\":\\\"security.error.noPermission\\\"}\" ]\n}"
    }
  ],
  "skipped": [
    {
      "component": "Settings",
      "subComponent": "Billing",
      "key": "NumberAndSku",
      "reason": "RETRY-ABLE ERROR"
    },
    {
      "component": "Settings",
      "subComponent": "Administration",
      "key": "AuditTrailSettings",
      "reason": "RETRY-ABLE ERROR"
    }
  ]
}
```

**SDK Code**

```python Metadata Deployment_FetchDeploymentLogs_example
import requests

url = "https://rest.test.zuora.com/deployment-manager/deployments/migrationId"

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

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

print(response.json())
```

```javascript Metadata Deployment_FetchDeploymentLogs_example
const url = 'https://rest.test.zuora.com/deployment-manager/deployments/migrationId';
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 Metadata Deployment_FetchDeploymentLogs_example
package main

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

func main() {

	url := "https://rest.test.zuora.com/deployment-manager/deployments/migrationId"

	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 Metadata Deployment_FetchDeploymentLogs_example
require 'uri'
require 'net/http'

url = URI("https://rest.test.zuora.com/deployment-manager/deployments/migrationId")

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 Metadata Deployment_FetchDeploymentLogs_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://rest.test.zuora.com/deployment-manager/deployments/migrationId")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://rest.test.zuora.com/deployment-manager/deployments/migrationId', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp Metadata Deployment_FetchDeploymentLogs_example
using RestSharp;

var client = new RestClient("https://rest.test.zuora.com/deployment-manager/deployments/migrationId");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Metadata Deployment_FetchDeploymentLogs_example
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://rest.test.zuora.com/deployment-manager/deployments/migrationId")! 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()
```