feat: add unfreeze_on_demand support to all SDKs

Updated Python, JavaScript, Go, Rust, Ruby, Java, and TypeScript SDKs:
- Add unfreeze_on_demand field to Service struct/class
- Add setUnfreezeOnDemand function to toggle setting via PATCH /services/:id
- Add unfreeze_on_demand parameter to createService function
This commit is contained in:
russell@unturf.com 2026-01-22 16:40:36 -05:00
parent 04060aa4da
commit e58adcd5fe
13 changed files with 435 additions and 10 deletions

View file

@ -13,7 +13,7 @@
* freezeSession, unfreezeSession, boostSession, unboostSession, shellSession,
* // Service management
* listServices, createService, getService, updateService, deleteService,
* freezeService, unfreezeService, lockService, unlockService,
* freezeService, unfreezeService, lockService, unlockService, setUnfreezeOnDemand,
* getServiceLogs, getServiceEnv, setServiceEnv, deleteServiceEnv,
* exportServiceEnv, redeployService, executeInService,
* // Snapshot management
@ -751,6 +751,7 @@ async function listServices(publicKey, secretKey) {
* - vcpu: Number of vCPUs (1-8)
* - domains: Array of custom domains
* - serviceType: Service type for SRV records (minecraft, mumble, etc.)
* - unfreezeOnDemand: If true, frozen services wake automatically on HTTP traffic
*
* Returns: Promise<Object> (service info with service_id)
*/
@ -771,6 +772,7 @@ async function createService(name, ports, bootstrap, opts = {}, publicKey, secre
if (opts.vcpu && opts.vcpu > 1) data.vcpu = opts.vcpu;
if (opts.domains) data.custom_domains = opts.domains;
if (opts.serviceType) data.service_type = opts.serviceType;
if (opts.unfreezeOnDemand) data.unfreeze_on_demand = true;
return makeRequest('POST', '/services', publicKey, secretKey, data);
}
@ -870,6 +872,22 @@ async function unlockService(serviceId, publicKey, secretKey) {
return makeRequest('POST', `/services/${serviceId}/unlock`, publicKey, secretKey, {});
}
/**
* Set unfreeze-on-demand for a service.
*
* When enabled, frozen services will automatically wake when HTTP traffic arrives.
*
* Args:
* serviceId: Service ID to update
* enabled: true to enable, false to disable
*
* Returns: Promise<Object> (update confirmation)
*/
async function setUnfreezeOnDemand(serviceId, enabled, publicKey, secretKey) {
[publicKey, secretKey] = resolveCredentials(publicKey, secretKey);
return makeRequest('PATCH', `/services/${serviceId}`, publicKey, secretKey, { unfreeze_on_demand: enabled });
}
/**
* Get service logs.
*
@ -1127,6 +1145,7 @@ export {
unfreezeService,
lockService,
unlockService,
setUnfreezeOnDemand,
getServiceLogs,
getServiceEnv,
setServiceEnv,
@ -1185,6 +1204,7 @@ export default {
unfreezeService,
lockService,
unlockService,
setUnfreezeOnDemand,
getServiceLogs,
getServiceEnv,
setServiceEnv,

View file

@ -13,7 +13,7 @@
* freezeSession, unfreezeSession, boostSession, unboostSession, shellSession,
* // Service management
* listServices, createService, getService, updateService, deleteService,
* freezeService, unfreezeService, lockService, unlockService,
* freezeService, unfreezeService, lockService, unlockService, setUnfreezeOnDemand,
* getServiceLogs, getServiceEnv, setServiceEnv, deleteServiceEnv,
* exportServiceEnv, redeployService, executeInService,
* // Snapshot management
@ -735,6 +735,7 @@ async function listServices(publicKey, secretKey) {
* - vcpu: Number of vCPUs (1-8)
* - domains: Array of custom domains
* - serviceType: Service type for SRV records (minecraft, mumble, etc.)
* - unfreezeOnDemand: If true, frozen services wake automatically on HTTP traffic
*
* Returns: Promise<Object> (service info with service_id)
*/
@ -755,6 +756,7 @@ async function createService(name, ports, bootstrap, opts = {}, publicKey, secre
if (opts.vcpu && opts.vcpu > 1) data.vcpu = opts.vcpu;
if (opts.domains) data.custom_domains = opts.domains;
if (opts.serviceType) data.service_type = opts.serviceType;
if (opts.unfreezeOnDemand) data.unfreeze_on_demand = true;
return makeRequest('POST', '/services', publicKey, secretKey, data);
}
@ -854,6 +856,22 @@ async function unlockService(serviceId, publicKey, secretKey) {
return makeRequest('POST', `/services/${serviceId}/unlock`, publicKey, secretKey, {});
}
/**
* Set unfreeze-on-demand for a service.
*
* When enabled, frozen services will automatically wake when HTTP traffic arrives.
*
* Args:
* serviceId: Service ID to update
* enabled: true to enable, false to disable
*
* Returns: Promise<Object> (update confirmation)
*/
async function setUnfreezeOnDemand(serviceId, enabled, publicKey, secretKey) {
[publicKey, secretKey] = resolveCredentials(publicKey, secretKey);
return makeRequest('PATCH', `/services/${serviceId}`, publicKey, secretKey, { unfreeze_on_demand: enabled });
}
/**
* Get service logs.
*
@ -1356,6 +1374,7 @@ module.exports = {
unfreezeService,
lockService,
unlockService,
setUnfreezeOnDemand,
getServiceLogs,
getServiceEnv,
setServiceEnv,