Developer API & Auto-Update Integration
Integrate robust in-app auto-updating into your C#, Electron, Python, or Flutter applications in minutes.
โก Quick Overview
The Piedev Tech Solutions Auto-Updater API provides zero-configuration, lightweight JSON endpoints for desktop applications, mobile clients, and embedded software to automatically detect updates, stream installers, and verify cryptographic integrity.
- No API Keys Required: Public endpoints designed for in-app update checks from anywhere.
- SemVer Comparison: Server-side semantic version comparisons using standard version numbering.
- Cryptographic Verification: Every release returns a 64-character SHA-256 checksum to prevent corrupted or malicious downloads.
- Multi-Package Channels: Supports both
installer(.exe, .msi, .dmg, .apk) andportable(.zip, .tar.gz) releases acrossstable,beta,nightly, andltschannels.
๐ก Check Update Endpoint
Send a standard HTTP GET request to check whether a newer version is available for the user's running application.
https://www.downloads.piedevtech.com/api/check-update?slug=gst-invoice-maker&version=1.0.0&channel=stable
Query Parameters
| Parameter | Type | Requirement | Default | Description |
|---|---|---|---|---|
slug |
string | Required | โ | Unique software identifier registered in the portal (currently: gst-invoice-maker). |
version or current_version |
string | Required | โ | The client's currently installed version to compare against (e.g. 1.0.0 or 2.4.0). |
channel |
string | Optional | stable |
Distribution channel filter: stable, beta, nightly, or lts. |
package_type |
string | Optional | installer |
Target package variety to resolve (e.g. installer, portable, msi, archive). The primary download URL matches this preference, while the packages array returns all varieties available for the version. |
platform |
string | Optional | windows |
Client operating system platform: windows, macos, linux, or android. |
cURL Terminal Request
$ curl -s -X GET "https://www.downloads.piedevtech.com/api/check-update?slug=gst-invoice-maker&version=1.0.0&package_type=installer&channel=stable"
๐ JSON Response Schema
{
"update_available": true,
"software": "GST Invoice Maker",
"slug": "gst-invoice-maker",
"icon_url": "https://www.downloads.piedevtech.com/icon/gst-invoice-maker",
"current_version": "1.0.0",
"latest_version": "2.5.0",
"package_type": "installer",
"package_title": "Setup Installer",
"channel": "stable",
"platform": "windows",
"file_name": "gst-invoice-maker-setup-v2.5.0.exe",
"file_size": 45012345,
"file_size_formatted": "42.93 MB",
"sha256": "d597d05eba04697a61d156822a159955743b184f4ebfebe81b95cb523a54d5b7",
"changelog": "- Added automated tax calculation\n- Improved multi-store sync speed\n- Security updates and bug fixes",
"min_os_version": "Windows 10/11 (64-bit)",
"release_date": "2026-11-13 03:02:12",
"download_url": "https://www.downloads.piedevtech.com/gst-invoice-maker/2.5.0/installer",
"portable_download_url": "https://www.downloads.piedevtech.com/gst-invoice-maker/2.5.0/portable",
"available_package_types": ["installer", "portable"],
"packages": [
{
"package_type": "installer",
"package_title": "Setup Installer",
"file_name": "gst-invoice-maker-setup-v2.5.0.exe",
"file_size": 45012345,
"file_size_formatted": "42.93 MB",
"sha256": "d597d05eba04697a61d156822a159955743b184f4ebfebe81b95cb523a54d5b7",
"download_url": "https://www.downloads.piedevtech.com/gst-invoice-maker/2.5.0/installer"
},
{
"package_type": "portable",
"package_title": "Portable ZIP Archive",
"file_name": "gst-invoice-maker-portable-v2.5.0.zip",
"file_size": 42890123,
"file_size_formatted": "40.9 MB",
"sha256": "a73f82...",
"download_url": "https://www.downloads.piedevtech.com/gst-invoice-maker/2.5.0/portable"
}
]
}
{
"update_available": false,
"software": "GST Invoice Maker",
"slug": "gst-invoice-maker",
"icon_url": "https://www.downloads.piedevtech.com/icon/gst-invoice-maker",
"current_version": "2.5.0",
"latest_version": "2.5.0",
"package_type": "installer",
"package_title": "Setup Installer",
"channel": "stable",
"platform": "windows",
"file_name": "gst-invoice-maker-setup-v2.5.0.exe",
"file_size": 45012345,
"file_size_formatted": "42.93 MB",
"sha256": "d597d05eba04697a61d156822a159955743b184f4ebfebe81b95cb523a54d5b7",
"changelog": "Latest stable release.",
"min_os_version": "Windows 10/11 (64-bit)",
"release_date": "2026-11-13 03:02:12",
"download_url": "https://www.downloads.piedevtech.com/gst-invoice-maker/2.5.0/installer",
"portable_download_url": "https://www.downloads.piedevtech.com/gst-invoice-maker/2.5.0/portable",
"available_package_types": ["installer", "portable"],
"packages": [
{
"package_type": "installer",
"package_title": "Setup Installer",
"download_url": "https://www.downloads.piedevtech.com/gst-invoice-maker/2.5.0/installer"
}
]
}
๐ป Code Integration Examples
Production-ready code samples demonstrating background checking, SHA-256 hash comparison, and silent auto-installation.
using System;
using System.IO;
using System.Net.Http;
using System.Security.Cryptography;
using System.Text.Json;
using System.Threading.Tasks;
using System.Diagnostics;
public class PiedevUpdateManager
{
private static readonly HttpClient client = new HttpClient();
private const string ApiBase = "https://www.downloads.piedevtech.com/api/check-update";
private const string SoftwareSlug = "gst-invoice-maker";
public static async Task CheckForUpdatesAsync(string currentAppVersion)
{
try
{
string url = $"{ApiBase}?slug={SoftwareSlug}&version={currentAppVersion}&channel=stable";
string responseJson = await client.GetStringAsync(url);
using var doc = JsonDocument.Parse(responseJson);
var root = doc.RootElement;
bool updateAvailable = root.GetProperty("update_available").GetBoolean();
if (!updateAvailable)
{
Console.WriteLine("Application is up to date.");
return;
}
string latestVersion = root.GetProperty("latest_version").GetString();
string downloadUrl = root.GetProperty("download_url").GetString();
string expectedHash = root.GetProperty("sha256").GetString();
string changelog = root.GetProperty("changelog").GetString();
Console.WriteLine($"New version v{latestVersion} available!\nChangelog:\n{changelog}");
// Step 1: Download installer to temporary directory
string tempInstallerPath = Path.Combine(Path.GetTempPath(), $"update_v{latestVersion}.exe");
byte[] fileBytes = await client.GetByteArrayAsync(downloadUrl);
await File.WriteAllBytesAsync(tempInstallerPath, fileBytes);
// Step 2: Verify Cryptographic SHA-256 Checksum
using var sha256 = SHA256.Create();
byte[] hashBytes = sha256.ComputeHash(fileBytes);
string calculatedHash = BitConverter.ToString(hashBytes).Replace("-", "").ToLowerInvariant();
if (!string.IsNullOrEmpty(expectedHash) && !calculatedHash.Equals(expectedHash, StringComparison.OrdinalIgnoreCase))
{
throw new Exception("SHA-256 verification failed! Corrupted or tampered installer.");
}
// Step 3: Run silent installer and close current application
Process.Start(new ProcessStartInfo
{
FileName = tempInstallerPath,
Arguments = "/SILENT", // InnoSetup / NSIS silent switch
UseShellExecute = true
});
Environment.Exit(0);
}
catch (Exception ex)
{
Console.WriteLine($"Update check error: {ex.Message}");
}
}
}
const { app, dialog, shell } = require('electron');
const axios = require('axios');
const fs = require('fs');
const path = require('path');
const crypto = require('crypto');
async function checkForUpdates(currentVersion) {
const API_URL = 'https://www.downloads.piedevtech.com/api/check-update';
const SLUG = 'gst-invoice-maker';
try {
const response = await axios.get(API_URL, {
params: {
slug: SLUG,
version: currentVersion,
channel: 'stable'
},
timeout: 8000
});
const data = response.data;
if (!data.update_available) {
return { hasUpdate: false };
}
// Display update prompt dialog
const { response: userChoice } = await dialog.showMessageBox({
type: 'info',
title: `Update Available (v${data.latest_version})`,
message: `A new version of ${data.software} (v${data.latest_version}) is available!\n\nWhat's New:\n${data.changelog}`,
buttons: ['Download & Update', 'Later'],
defaultId: 0,
cancelId: 1
});
if (userChoice === 0) {
shell.openExternal(data.download_url);
}
return { hasUpdate: true, data };
} catch (err) {
console.error('Update check failed:', err.message);
return { hasUpdate: false, error: err.message };
}
}
module.exports = { checkForUpdates };
import hashlib
import os
import requests
import sys
import subprocess
API_URL = "https://www.downloads.piedevtech.com/api/check-update"
SLUG = "gst-invoice-maker"
CURRENT_VERSION = "1.0.0"
def check_for_updates():
try:
res = requests.get(API_URL, params={
"slug": SLUG,
"version": CURRENT_VERSION,
"channel": "stable"
}, timeout=10)
data = res.json()
if not data.get("update_available"):
print("Already up to date.")
return
print(f"New update v{data['latest_version']} available!")
print(f"Changelog:\n{data.get('changelog')}")
download_url = data["download_url"]
temp_file = os.path.join(os.environ.get("TEMP", "/tmp"), data["file_name"])
# Stream download in chunks
r = requests.get(download_url, stream=True)
sha = hashlib.sha256()
with open(temp_file, "wb") as f:
for chunk in r.iter_content(chunk_size=65536):
f.write(chunk)
sha.update(chunk)
# Cryptographic Hash Validation
if data.get("sha256") and sha.hexdigest().lower() != data["sha256"].lower():
raise ValueError("SHA-256 verification failed!")
print(f"Installer verified successfully: {temp_file}")
# Launch installer silently on Windows
if sys.platform == "win32":
subprocess.Popen([temp_file, "/SILENT"])
sys.exit(0)
except Exception as e:
print(f"Update check error: {e}")
if __name__ == "__main__":
check_for_updates()
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:url_launcher/url_launcher.dart';
class UpdateService {
static const String apiBase = "https://www.downloads.piedevtech.com/api/check-update";
static const String slug = "gst-invoice-maker";
static Future<void> checkForUpdates(String currentVersion) async {
try {
final uri = Uri.parse('$apiBase?slug=$slug&version=$currentVersion&channel=stable');
final response = await http.get(uri);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
if (data['update_available'] == true) {
final downloadUrl = data['download_url'];
print('Update available: v${data['latest_version']}');
// Launch official download URL
if (await canLaunchUrl(Uri.parse(downloadUrl))) {
await launchUrl(Uri.parse(downloadUrl), mode: LaunchMode.externalApplication);
}
}
}
} catch (e) {
print('Update check failed: $e');
}
}
}
๐ SHA-256 Cryptographic Hash Integrity
Every software release package in Piedev Tech Solutions includes a pre-computed 64-character hexadecimal SHA-256 checksum generated directly on the server at upload time.
Always calculate the hash of the downloaded file before executing or launching the installer. If the computed hash does not match the server's sha256 response byte-for-byte, discard the file immediately to prevent executing corrupt or tampered binaries.
Quick CLI Verification Commands
# Windows PowerShell:
Get-FileHash -Algorithm SHA256 "path\to\setup.exe"
# Windows Command Prompt:
certutil -hashfile "path\to\setup.exe" SHA256
# macOS & Linux:
sha256sum "path/to/installer.tar.gz"
๐ Direct Download URLs & Slugs
In addition to JSON endpoints, Piedev Tech Solutions supports direct, permanent vanity download URLs for scripts, web pages, and CDN mirrors.
| Target Resource | Dynamic Vanity URL Format | Action |
|---|---|---|
| Latest Setup Installer | https://www.downloads.piedevtech.com/gst-invoice-maker/latest/installer |
|
| Latest Portable ZIP / Binary | https://www.downloads.piedevtech.com/gst-invoice-maker/latest/portable |
|
| Specific Version Installer | https://www.downloads.piedevtech.com/gst-invoice-maker/{version}/installer |
|
| Specific Version Portable | https://www.downloads.piedevtech.com/gst-invoice-maker/{version}/portable |
|
| All Releases JSON API | https://www.downloads.piedevtech.com/api/releases?slug=gst-invoice-maker |
๐ Release Channels & Best Practices
๐ข
Stable Channel (stable)
Recommended for all production users. Receives thoroughly tested, verified, and audited release builds.
๐ก
Beta Channel (beta)
For preview testers and early adopters. Receives upcoming features and enhancements ahead of general release.
๐ด
Nightly Channel (nightly)
Automated continuous integration builds. Intended exclusively for automated testing, QA, and active debugging.
๐ต
Long-Term Support (lts)
Enterprise distributions with critical security updates, guaranteed stability, and extended maintenance cycles.