Event schemas reference
Innovation Sandbox on AWS publishes events to Amazon EventBridge to enable integration with external systems. This section provides a comprehensive reference of all event schemas that customers can use to build integrations with their own systems.
All events are published to the Innovation Sandbox EventBridge custom bus with a consistent structure and follow the AWS EventBridge event pattern.
Event structure
All Innovation Sandbox events follow this standard EventBridge structure:
{ "version": "0", "id": "event-id", "detail-type": "EventDetailType", "source": "innovation-sandbox", "account": "123456789012", "time": "2024-01-15T14:30:25Z", "region": "us-east-1", "detail": { // Event-specific payload (documented below) } }
Event categories
Events are organized into the following categories:
-
Lease Lifecycle Events - Lease creation, approval, denial, and termination
-
Lease Monitoring Events - Budget and duration threshold alerts
-
Account Management Events - Account cleanup and drift detection
-
Cost Reporting Events - Cost report generation and failures
-
Blueprint Deployment Events - Blueprint deployment requests, successes, and failures
Lease lifecycle events
LeaseRequested
Published when a user submits a new lease request.
Detail Type:
LeaseRequested
Schema:
{ "detail-type": "LeaseRequested", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "comments": "Need AWS environment for ML experimentation", "userEmail": "developer@company.com", "requiresManualApproval": true } }
LeaseApproved
Published when a lease request is approved and the user gains access to their sandbox account.
Detail Type:
LeaseApproved
Schema:
{ "detail-type": "LeaseApproved", "detail": { "leaseId": "550e8400-e29b-41d4-a716-446655440000", "approvedBy": "manager@company.com", "userEmail": "developer@company.com" } }
LeaseDenied
Published when a lease request is denied by an approver.
Detail Type:
LeaseDenied
Schema:
{ "detail-type": "LeaseDenied", "detail": { "leaseId": "550e8400-e29b-41d4-a716-446655440000", "deniedBy": "manager@company.com", "userEmail": "developer@company.com" } }
LeaseTerminated
Published when a lease is terminated for any reason. The reason field provides specific details about why the lease was terminated.
Detail Type:
LeaseTerminated
Schema:
{ "detail-type": "LeaseTerminated", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "reason": { "type": "BudgetExceeded", "budget": 100.00, "totalSpend": 105.50 } } }
Reason Types:
Expired, BudgetExceeded, ManuallyTerminated, AccountQuarantined, Ejected
Lease monitoring events
LeaseBudgetThresholdAlert
Published when a lease’s spending reaches a configured budget threshold percentage.
Detail Type:
LeaseBudgetThresholdAlert
Schema:
{ "detail-type": "LeaseBudgetThresholdAlert", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "budget": 100.00, "totalSpend": 80.00, "budgetThresholdTriggered": 0.8, "actionRequested": "ALERT" } }
LeaseBudgetExceeded
Published when a lease’s spending exceeds the configured budget limit.
Detail Type:
LeaseBudgetExceeded
Schema:
{ "detail-type": "LeaseBudgetExceeded", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "budget": 100.00, "totalSpend": 105.50 } }
LeaseDurationThresholdAlert
Published when a lease reaches a configured duration threshold.
Detail Type:
LeaseDurationThresholdAlert
Schema:
{ "detail-type": "LeaseDurationThresholdAlert", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "triggeredDurationThreshold": 24, "leaseDurationInHours": 168, "actionRequested": "ALERT" } }
LeaseFreezingThresholdAlert
Published when a lease reaches a threshold that triggers a freezing action. This event uses the same schema as LeaseFrozen.
Detail Type:
LeaseFreezingThresholdAlert
Schema:
{ "detail-type": "LeaseFreezingThresholdAlert", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "reason": { "type": "BudgetExceeded", "triggeredBudgetThreshold": 0.95, "budget": 100.00, "totalSpend": 95.00 } } }
LeaseExpired
Published when a lease expires due to reaching its maximum duration.
Detail Type:
LeaseExpired
Schema:
{ "detail-type": "LeaseExpired", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "leaseExpirationDate": "2024-01-22T14:30:25Z" } }
LeaseFrozen
Published when a lease is frozen (access suspended but not terminated).
Detail Type:
LeaseFrozen
Schema:
{ "detail-type": "LeaseFrozen", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "reason": { "type": "BudgetExceeded", "triggeredBudgetThreshold": 0.95, "budget": 100.00, "totalSpend": 95.00 } } }
LeaseUnfrozen
Published when a previously frozen lease is unfrozen and access is restored.
Detail Type:
LeaseUnfrozen
Schema:
{ "detail-type": "LeaseUnfrozen", "detail": { "leaseId": { "uuid": "550e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "accountId": "123456789012", "maxBudget": 100.00, "leaseDurationInHours": 168, "reason": "Budget threshold resolved, access restored" } }
Account management events
CleanAccountRequest
Published when an account cleanup process is initiated.
Detail Type:
CleanAccountRequest
Schema:
{ "detail-type": "CleanAccountRequest", "detail": { "accountId": "123456789012", "reason": "Lease terminated - budget exceeded" } }
AccountCleanupSucceeded
Published when an account cleanup process completes successfully.
Detail Type:
AccountCleanupSucceeded
Schema:
{ "detail-type": "AccountCleanupSucceeded", "detail": { "accountId": "123456789012", "reason": "LEASE_TERMINATION", "cleanupExecutionContext": { "stateMachineExecutionArn": "arn:aws:states:us-east-1:123456789012:execution:cleanup-state-machine:execution-id", "stateMachineExecutionStartTime": "2024-01-15T14:30:25Z" } } }
AccountCleanupFailed
Published when an account cleanup process fails.
Detail Type:
AccountCleanupFailed
Schema:
{ "detail-type": "AccountCleanupFailed", "detail": { "accountId": "123456789012", "reason": "LEASE_TERMINATION", "cleanupExecutionContext": { "stateMachineExecutionArn": "arn:aws:states:us-east-1:123456789012:execution:cleanup-state-machine:execution-id", "stateMachineExecutionStartTime": "2024-01-15T14:30:25Z" } } }
AccountQuarantined
Published when an account is quarantined due to cleanup failures or other issues.
Detail Type:
AccountQuarantined
Schema:
{ "detail-type": "AccountQuarantined", "detail": { "awsAccountId": "123456789012", "reason": "Account cleanup failed after multiple attempts" } }
AccountDriftDetected
Published when an account is detected to be in an unexpected organizational unit.
Detail Type:
AccountDriftDetected
Schema:
{ "detail-type": "AccountDriftDetected", "detail": { "accountId": "123456789012", "actualOu": "ou-root-1234567890", "expectedOu": "ou-sandbox-0987654321" } }
Cost reporting events
GroupCostReportGenerated
Published when a cost report is successfully generated for a group of accounts.
Detail Type:
GroupCostReportGenerated
Schema:
{ "detail-type": "GroupCostReportGenerated", "detail": { "reportMonth": "2024-01", "fileName": "cost-report-2024-01.csv", "bucketName": "innovation-sandbox-reports-bucket", "timestamp": "2024-02-01T09:00:00Z" } }
GroupCostReportGeneratedFailure
Published when cost report generation fails.
Detail Type:
GroupCostReportGeneratedFailure
Schema:
{ "detail-type": "GroupCostReportGeneratedFailure", "detail": { "reportMonth": "2024-01", "timestamp": "2024-02-01T09:00:00Z" } }
Blueprint deployment events
BlueprintDeploymentRequest
Published when a lease with an attached blueprint is approved, triggering the blueprint deployment workflow.
Detail Type:
BlueprintDeploymentRequest
Schema:
{ "detail-type": "BlueprintDeploymentRequest", "detail": { "blueprintId": "550e8400-e29b-41d4-a716-446655440000", "blueprintName": "Development Environment", "leaseId": "650e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com", "accountId": "123456789012", "stackSetId": "arn:aws:cloudformation:us-east-1:123456789012:stackset/dev-env-stackset:abc123", "regions": ["us-east-1", "us-west-2"], "regionConcurrencyType": "SEQUENTIAL", "deploymentTimeoutMinutes": 30, "maxConcurrentPercentage": 100, "failureTolerancePercentage": 0, "concurrencyMode": "STRICT_FAILURE_TOLERANCE" } }
Note:
maxConcurrentPercentage, failureTolerancePercentage, and concurrencyMode are optional fields.
BlueprintDeploymentSucceeded
Published when a blueprint deployment completes successfully and the user can access the account with pre-configured resources.
Detail Type:
BlueprintDeploymentSucceeded
Schema:
{ "detail-type": "BlueprintDeploymentSucceeded", "detail": { "leaseId": { "uuid": "650e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "blueprintId": "550e8400-e29b-41d4-a716-446655440000", "accountId": "123456789012", "operationId": "abc123-def456-ghi789", "duration": 15 } }
BlueprintDeploymentFailed
Published when a blueprint deployment fails due to validation errors, deployment failures, or timeouts. The lease transitions to ProvisioningFailed status and the account is sent to cleanup.
Detail Type:
BlueprintDeploymentFailed
Schema:
{ "detail-type": "BlueprintDeploymentFailed", "detail": { "leaseId": { "uuid": "650e8400-e29b-41d4-a716-446655440000", "userEmail": "developer@company.com" }, "blueprintId": "550e8400-e29b-41d4-a716-446655440000", "accountId": "123456789012", "operationId": "abc123-def456-ghi789", "errorType": "DEPLOYMENT_TIMEOUT", "errorMessage": "StackSet deployment failed: Resource creation timeout" } }
Note:
operationId is optional and may not be present for validation failures that occur before deployment starts.
Common failure reasons:
-
StackSet validation failures (not found, wrong permission model, inactive status)
-
CloudFormation deployment errors (resource creation failures, insufficient permissions)
-
Deployment timeout exceeded (default: 30 minutes, configurable per blueprint)
-
Lambda function errors (crashes, timeouts, throttling)
Schema evolution
Event schemas may evolve over time. Design your integration to be resilient:
-
Ignore unknown fields in event payloads
-
Provide default values for missing optional fields
-
Version your event processing logic when breaking changes occur
For the complete source code, refer to the Innovation Sandbox on AWS GitHub repository