Public Cloud (Infra) Webhooks
Webhook Configuration To set up webhooks for your integration, visit the Unizo Console Webhooks section for step-by-step configuration guide.
Overview
Unizo's Public Cloud (Infra) API provides webhooks to notify your application when important infrastructure events occur across your integrated cloud platforms. These real-time notifications enable you to build automated infrastructure workflows, maintain synchronized resource tracking, and ensure timely response to infrastructure changes.
Our platform normalizes webhook events from various cloud providers (AWS, Azure, Google Cloud, etc.) into a consistent format, making it easy to handle infrastructure events regardless of the underlying platform.
Supported Event Types
Event Type Description Trigger Conditions user:updated Event broadcast when a user has been updated User profile or permissions modified user:deleted Event broadcast when a user is deleted User permanently removed resource:created Event broadcast when a resource has been created New resource created resource:updated Event broadcast when a resource has been updated Resource configuration modified resource:deleted Event broadcast when a resource is deleted Resource deleted
Triggered when a user's profile, permissions, or configuration is modified in your cloud platform.
Headers Name Type Required Description x-unizo-event-typestring Yes The type of event that was triggered x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type of the payload userobject Yes User object user.idstring Yes User ID user.namestring Yes User display name user.emailstring Yes User email address user.rolestring No User role user.updatedDateTimestring Yes Update timestamp integration.typestring Yes Integration type integration.idstring Yes Integration ID integration.namestring Yes Integration display name
Example Payload Copy {
"type" : "user:updated" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"user" : {
"id" : "usr-0012345" ,
"name" : "John Doe" ,
"role" : "admin" ,
"updatedDateTime" : "2026-01-15T14:00:00Z"
} ,
"integration" : {
"type" : "INFRASTRUCTURE" ,
"id" : "906e3a3c-e317-4114-8cd5-38bfacbf02a3" ,
"name" : "AWS Production"
}
}
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a user is permanently deleted and removed from your cloud platform.
Headers Name Type Required Description x-unizo-event-typestring Yes The type of event that was triggered x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type of the payload userobject Yes User object user.idstring Yes User ID user.namestring Yes User display name user.emailstring Yes User email address user.deletedDateTimestring Yes Deletion timestamp integration.typestring Yes Integration type integration.idstring Yes Integration ID integration.namestring Yes Integration display name
Example Payload Copy {
"type" : "user:deleted" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"user" : {
"id" : "usr-0012345" ,
"name" : "John Doe" ,
"deletedDateTime" : "2026-01-15T16:00:00Z"
} ,
"integration" : {
"type" : "INFRASTRUCTURE" ,
"id" : "906e3a3c-e317-4114-8cd5-38bfacbf02a3" ,
"name" : "AWS Production"
}
}
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a new infrastructure resource is created such as a VM, container, database, or other cloud resource.
Headers Name Type Required Description x-unizo-event-typestring Yes The type of event that was triggered x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type of the payload resourceobject Yes Resource object resource.idstring Yes Unique resource identifier resource.namestring Yes Resource name resource.typestring Yes Resource type (vm, container, database, etc.) resource.regionstring Yes Deployment region resource.providerstring Yes Cloud provider resource.createdDateTimestring Yes Creation timestamp resource.createdBystring No User or system that created the resource integration.typestring Yes Integration type integration.idstring Yes Integration ID integration.namestring Yes Integration display name
Example Payload Copy {
"type" : "resource:created" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"resource" : {
"id" : "i-1234567890abcdef0" ,
"name" : "prod-web-server-01" ,
"type" : "vm" ,
"region" : "us-east-1" ,
"provider" : "aws" ,
"createdDateTime" : "2026-01-15T14:00:00Z" ,
} ,
"integration" : {
"type" : "INFRASTRUCTURE" ,
"id" : "906e3a3c-e317-4114-8cd5-38bfacbf02a3" ,
"name" : "AWS Production"
}
}
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a resource configuration is modified, including scaling changes, tag updates, or configuration modifications.
Headers Name Type Required Description x-unizo-event-typestring Yes The type of event that was triggered x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type of the payload resourceobject Yes Resource object resource.idstring Yes Unique resource identifier resource.namestring Yes Resource name resource.typestring Yes Resource type resource.updatedDateTimestring Yes Update timestamp resource.updatedBystring No User or system that updated the resource integration.typestring Yes Integration type integration.idstring Yes Integration ID integration.namestring Yes Integration display name
Example Payload Copy {
"type" : "resource:updated" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"resource" : {
"id" : "i-1234567890abcdef0" ,
"name" : "prod-web-server-01" ,
"type" : "vm" ,
"updatedDateTime" : "2026-01-15T15:00:00Z" ,
} ,
"integration" : {
"type" : "INFRASTRUCTURE" ,
"id" : "906e3a3c-e317-4114-8cd5-38bfacbf02a3" ,
"name" : "AWS Production"
}
}
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Triggered when a resource is deleted, indicating it has been removed from the system.
Headers Name Type Required Description x-unizo-event-typestring Yes The type of event that was triggered x-unizo-signaturestring Yes HMAC SHA-256 signature
Request Body Schema Property Type Required Description typestring Yes Event type identifier versionstring Yes Webhook payload version contentTypestring Yes Content type of the payload resourceobject Yes Resource object resource.idstring Yes Unique resource identifier resource.namestring Yes Resource name resource.typestring Yes Resource type resource.deletedDateTimestring Yes Deletion timestamp resource.deletedBystring No User or system that deleted the resource integration.typestring Yes Integration type integration.idstring Yes Integration ID integration.namestring Yes Integration display name
Example Payload Copy {
"type" : "resource:deleted" ,
"version" : "1.0.0" ,
"contentType" : "application/json" ,
"resource" : {
"id" : "i-1234567890abcdef0" ,
"name" : "prod-web-server-01" ,
"type" : "vm" ,
"deletedDateTime" : "2026-01-15T16:00:00Z" ,
} ,
"integration" : {
"type" : "INFRASTRUCTURE" ,
"id" : "906e3a3c-e317-4114-8cd5-38bfacbf02a3" ,
"name" : "AWS Production"
}
}
Response 200 OKWebhook processed successfully 400 Bad RequestInvalid webhook payload 401 UnauthorizedInvalid or missing signature
Webhook Delivery & Retries
Unizo implements a robust delivery system with automatic retries to ensure your webhooks are delivered reliably:
Timeout : 30 seconds per delivery attempt
Retry Schedule : 5 attempts with exponential backoff
Attempt 1: Immediate
Attempt 2: 1 minute delay
Attempt 3: 5 minutes delay
Attempt 4: 30 minutes delay
Attempt 5: 2 hours delay
Success Criteria : HTTP status codes 200-299
Failure Handling : After 5 failed attempts, the webhook is marked as failed
Best Practices
1. Idempotency
Always implement idempotent webhook handlers using the x-unizo-delivery-id header:
Idempotent Webhook Handler // Example: Handling webhooks idempotently
app.post('/webhooks/infrastructure', async (req, res) => {
const deliveryId = req.headers['x-unizo-delivery-id'];
// Check if we've already processed this delivery
const existingDelivery = await db.webhookDeliveries.findOne({
deliveryId
});
if (existingDelivery) {
console.log(`Duplicate delivery detected: ${deliveryId}`);
return res.status(200).json({
status: 'already_processed'
});
}
// Process the webhook
try {
await processInfraEvent(req.body);
// Record the delivery
await db.webhookDeliveries.create({
deliveryId,
processedAt: new Date()
});
res.status(200).json({ status: 'success' });
} catch (error) {
console.error('Webhook processing failed:', error);
res.status(500).json({ status: 'error' });
}
});
2. Resource Tracking
Track infrastructure resource lifecycle events:
Resource State Tracking async function processResourceEvent(payload) {
const { resource, type } = payload;
switch (type) {
case 'resource:created':
await addToInventory(resource);
break;
case 'resource:updated':
await updateInventory(resource);
break;
case 'resource:deleted':
await removeFromInventory(resource);
break;
case 'user:updated':
await updateUserPermissions(payload.user);
break;
case 'user:deleted':
await revokeUserAccess(payload.user);
break;
}
}
Need Help?
For webhook-related support: