Management API¶
Admin endpoints for managing applications, customers, and uploads.
Admin Access Required
All endpoints on this page require an admin API key.
SDK coverage
Go examples use the AdminClient (bindist.NewAdminClient). The Rust SDK is customer-only and does not expose admin endpoints — call them over HTTP directly, or use the Go SDK.
Create Application¶
Create a new application.
Request Body¶
| Field | Type | Required | Description |
|---|---|---|---|
applicationId |
string | Yes | Unique identifier (lowercase, alphanumeric, hyphens) |
name |
string | Yes | Display name |
description |
string | No | Application description |
tags |
string[] | No | Tags for filtering |
customerIds |
string[] | No | Customer IDs with access |
Example Request¶
Example Response¶
{
"success": true,
"data": {
"applicationId": "my-new-app",
"name": "My New Application",
"description": "A brand new application",
"tags": ["windows", "utility"],
"isActive": true,
"createdAt": "2025-01-15T10:00:00Z"
}
}
Delete Application¶
Soft delete an application. The application and its data remain but are hidden from listings.
Path Parameters¶
| Parameter | Type | Description |
|---|---|---|
applicationId |
string | The application ID |
Example Request¶
Example Response¶
{
"success": true,
"data": {
"message": "Application deleted successfully",
"applicationId": "my-app",
"deletedAt": "2025-01-15T10:30:00Z"
}
}
Upload Binary¶
Upload a binary file for a version. For files larger than 10MB, use the large file upload endpoints.
Request Body (multipart/form-data)¶
| Field | Type | Required | Description |
|---|---|---|---|
applicationId |
string | Yes | The application ID |
version |
string | Yes | Version string |
file |
file | Yes | The binary file |
releaseNotes |
string | No | Release notes |
fileType |
string | No | File type (MAIN, DEPENDENCY, etc.) |
Example Request¶
Large File Upload¶
For files larger than 10MB, use the three-step upload process.
Go shortcut
The Go SDK's admin.UploadLargeFile(ctx, appID, version, fileName, content, releaseNotes) wraps all three steps below (get URL → PUT to S3 → complete). Reach for the raw steps only when you need finer control (resumable uploads, custom retry, alternative runtimes).
Step 1: Get Upload URL¶
Request Body¶
| Field | Type | Required | Description |
|---|---|---|---|
applicationId |
string | Yes | The application ID |
version |
string | Yes | Version string |
fileName |
string | Yes | Original filename |
fileSize |
number | Yes | File size in bytes |
contentType |
string | No | MIME type |
Example Request¶
Example Response¶
{
"success": true,
"data": {
"uploadUrl": "https://s3.eu-central-1.amazonaws.com/...",
"uploadId": "upl_abc123",
"expiresAt": "2025-01-15T11:00:00Z"
}
}
Step 2: Upload to S3¶
Upload the file directly to the pre-signed URL:
curl -X PUT \
-H "Content-Type: application/octet-stream" \
--data-binary @./my-app-2.2.0.exe \
"UPLOAD_URL_FROM_STEP_1"
Step 3: Complete Upload¶
Request Body¶
| Field | Type | Required | Description |
|---|---|---|---|
uploadId |
string | Yes | Upload ID from step 1 |
applicationId |
string | Yes | The application ID |
version |
string | Yes | Version string |
fileName |
string | Yes | Original filename |
fileSize |
number | Yes | File size in bytes |
checksum |
string | No | SHA256 checksum of the upload |
releaseNotes |
string | No | Release notes |
Example Request¶
curl -X POST \
-H "Authorization: Bearer YOUR_ADMIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"uploadId": "upl_abc123",
"applicationId": "my-app",
"version": "2.2.0",
"fileName": "my-app-2.2.0.exe",
"fileSize": 52428800,
"releaseNotes": "Major release"
}' \
https://api.bindist.eu/v1/management/upload/large-complete
List Customers¶
List all customers in your account.
Example Request¶
Example Response¶
{
"success": true,
"data": {
"customers": [
{
"customerId": "cust_abc123",
"name": "Acme Corp",
"tier": "Premium",
"isActive": true,
"createdAt": "2024-06-15T10:00:00Z"
}
]
}
}
Update Customer¶
Update a customer's information.
Request Body¶
| Field | Type | Description |
|---|---|---|
name |
string | Customer name |
isActive |
boolean | Active status |
notes |
string | Admin notes |
Example Request¶
Create API Key¶
Create a new API key for a customer.
Example Request¶
Go SDK
The Go SDK doesn't ship a dedicated method for this endpoint. Use admin.CreateCustomer(...) if you're provisioning a brand-new customer (it returns the initial key), or call this endpoint over HTTP for additional keys on an existing customer.
Example Response¶
{
"success": true,
"data": {
"customerId": "cust_abc123",
"apiKey": "cust_abc123.xYz789SecretKeyHere",
"createdAt": "2025-01-15T10:00:00Z"
}
}
Save the API Key
The API key is only shown once. Store it securely.
Get Statistics¶
Get download statistics for an application.
Path Parameters¶
| Parameter | Type | Description |
|---|---|---|
applicationId |
string | The application ID |
Query Parameters¶
| Parameter | Type | Description |
|---|---|---|
version |
string | Filter by specific version |
Example Request¶
Rust and JavaScript SDKs
The statistics endpoint isn't covered by the Rust or JavaScript SDK clients yet. Call it directly via HTTP, or use the Go SDK.
Example Response¶
{
"success": true,
"data": {
"applicationId": "my-app",
"totalDownloads": 1523,
"downloadsByVersion": {
"2.1.0": 450,
"2.0.0": 823,
"1.5.0": 250
},
"downloadsByDay": [
{ "date": "2025-01-10", "count": 45 },
{ "date": "2025-01-09", "count": 52 },
{ "date": "2025-01-08", "count": 38 }
]
}
}
List Activity¶
List recent upload and download activity.
Query Parameters¶
| Parameter | Type | Description |
|---|---|---|
type |
string | Filter by upload or download |
applicationId |
string | Filter by application |
limit |
number | Maximum items |
cursor |
string | Pagination cursor |