# Unsandbox Java SDK (Synchronous)
A synchronous Java client library for [unsandbox.com](https://unsandbox.com) - secure, multi-language code execution.
## Installation
### Maven
```xml
com.unsandbox
un-sdk-sync
1.0.0
```
### From Source
```bash
cd clients/java/sync
mvn install
```
## Quick Start
```java
import Un;
import java.util.Map;
// Execute Python code
Map result = Un.executeCode("python", "print('Hello from unsandbox!')", null, null);
System.out.println(result.get("stdout"));
```
## Authentication
The SDK supports 4-tier credential resolution:
1. **Method arguments** - Pass directly to methods
2. **Environment variables** - `UNSANDBOX_PUBLIC_KEY` and `UNSANDBOX_SECRET_KEY`
3. **Config file** - `~/.unsandbox/accounts.csv` (line 0 by default)
4. **Local directory** - `./accounts.csv` (line 0 by default)
### Setting up credentials
Create `~/.unsandbox/accounts.csv`:
```csv
your_public_key,your_secret_key
another_public_key,another_secret_key
```
Or use environment variables:
```bash
export UNSANDBOX_PUBLIC_KEY="pk_xxxxx"
export UNSANDBOX_SECRET_KEY="sk_xxxxx"
```
## API Reference
### Synchronous Execution
Execute code and wait for completion:
```java
import Un;
import java.util.Map;
Map result = Un.executeCode(
"python", // language
"print('hello')", // code
null, // publicKey (uses credential resolution)
null // secretKey (uses credential resolution)
);
System.out.println(result.get("status")); // "completed"
System.out.println(result.get("stdout")); // "hello\n"
System.out.println(result.get("stderr")); // ""
System.out.println(result.get("exit_code")); // 0
```
### Asynchronous Execution
Start execution and get a job ID:
```java
import Un;
import java.util.Map;
// Start execution
String jobId = Un.executeAsync("python", "print('hello')", null, null);
// Wait for completion with 60 second timeout
Map result = Un.waitForJob(jobId, null, null, 60000);
```
### Job Management
```java
import Un;
import java.util.Map;
import java.util.List;
// Get single job status
Map job = Un.getJob("job_123", null, null);
// List all jobs
List