Skip to main content

Download Source Code

Download source code from your end users' connected SCM provider. The Unizo SDKs provide programmatic access to repositories, branches, and commits across all supported version control systems.

Prerequisites

Before you begin, ensure you have:

  • Valid Unizo API Key
  • Repository ID
  • Integration ID
  • Unizo SDK for your programming language
tip

Need to install an SDK? See our SDK installation guide to get started with your preferred programming language.

Download Repository

Retrieve a complete repository archive containing the default branch. Note, default branch is set by your end user in respective provider console.

import com.unizo.scm.extension.DownloadResponse;
import com.unizo.scm.extension.ScmRepositoryApi;
import com.unizo.core.ApiClient;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.UUID;

public class RepositoryDownloadExample {
public static void main(String[] args) throws Exception {
// Configure API client with endpoint and authentication
ApiClient client = new ApiClient();
client.setBasePath("https://api.unizo.com");
client.setBearerToken("your-api-key");

ScmRepositoryApi api = new ScmRepositoryApi();

// Set required parameters
String organizationId = "your-organization-id";
String repositoryId = "your-repository-id";
UUID integrationId = UUID.fromString("your-integration-uuid");

// Execute download request
try (OutputStream output = new FileOutputStream("repository.zip")) {
DownloadResponse response = api.download(
organizationId,
repositoryId,
integrationId,
output,
client
).get();

System.out.println("Download completed: " + response);
}
}
}

Download Specific Branch

Retrieve source code from a specific branch. This method allows you to download any branch, including feature branches, release branches, or custom development branches.

import com.unizo.scm.extension.DownloadResponse;
import com.unizo.scm.extension.ScmBranchApi;
import com.unizo.core.ApiClient;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.UUID;

public class BranchDownloadExample {
public static void main(String[] args) throws Exception {
// Configure API client with endpoint and authentication
ApiClient client = new ApiClient();
client.setBasePath("https://api.unizo.com");
client.setBearerToken("your-api-key");

ScmBranchApi api = new ScmBranchApi();

// Set required parameters
String organizationId = "your-organization-id";
String repositoryId = "your-repository-id";
String branchId = "main"; // or "develop", "feature/new-feature"
UUID integrationId = UUID.fromString("your-integration-uuid");

// Execute branch download
try (OutputStream output = new FileOutputStream(branchId + ".zip")) {
DownloadResponse response = api.download(
organizationId,
repositoryId,
branchId,
integrationId,
output,
client
).get();

System.out.println("Branch downloaded: " + response);
}
}
}

Download Specific Commit

Retrieve source code from a specific point in the repository's history. Use the commit SHA to download an exact snapshot of the codebase.

import com.unizo.scm.extension.DownloadResponse;
import com.unizo.scm.extension.ScmCommitApi;
import com.unizo.core.ApiClient;

import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.UUID;

public class CommitDownloadExample {
public static void main(String[] args) throws Exception {
// Configure API client with endpoint and authentication
ApiClient client = new ApiClient();
client.setBasePath("https://api.unizo.com");
client.setBearerToken("your-api-key");

ScmCommitApi api = new ScmCommitApi();

// Set required parameters
String organizationId = "your-organization-id";
String repositoryId = "your-repository-id";
String commitId = "abc123def456"; // commit SHA
UUID integrationId = UUID.fromString("your-integration-uuid");

// Execute commit download
try (OutputStream output = new FileOutputStream("commit-" + commitId + ".zip")) {
DownloadResponse response = api.download(
organizationId,
repositoryId,
commitId,
integrationId,
output,
client
).get();

System.out.println("Commit downloaded: " + response);
}
}
}

Error Handling

Implement robust error handling to manage API responses and network failures. Each SDK provides specific exception types for different error scenarios.

import com.unizo.core.ApiException;

try (OutputStream output = new FileOutputStream("repository.zip")) {
api.download(orgId, repoId, integrationId, output, client).get();
} catch (ApiException e) {
switch (e.getCode()) {
case 401:
System.err.println("Invalid API key");
break;
case 403:
System.err.println("Insufficient permissions");
break;
case 404:
System.err.println("Repository not found");
break;
default:
System.err.println("Error: " + e.getMessage());
}
}

API Response Codes

Status CodeDescriptionSolution
401Authentication failedVerify your API key
403Access deniedCheck repository permissions
404Resource not foundVerify repository/branch/commit exists
429Rate limit exceededImplement retry logic with backoff
500Server errorRetry request or contact support