Image Factory Documentation

Unified Messaging Event Catalog

This catalog defines the canonical event names, payload expectations, and versioning approach for the unified messaging bus.

Overview

This catalog defines the canonical event names and payload expectations for the unified messaging bus. It is intended to:

  • Prevent breaking changes across consumers.
  • Standardize naming and payload structure.
  • Enable validation and schema evolution.

Envelope fields (required for all events):

  • id (string)
  • type (string)
  • occurred_at (RFC3339)
  • schema_version (string)
  • tenant_id (string, optional)
  • actor_id (string, optional)
  • source (string, optional)
  • correlation_id (string, optional)
  • request_id (string, optional)
  • trace_id (string, optional)

Build Events

build.created (v1)

Producer: Build Service
Consumers: Audit, Notifications, Analytics

Payload:

  • build_id (string, UUID)
  • build_name (string)
  • build_type (string)

build.started (v1)

Producer: Build Service
Consumers: Audit, Notifications

Payload:

  • build_id (string, UUID)

build.completed (v1)

Producer: Build Service
Consumers: Audit, Notifications

Payload:

  • build_id (string, UUID)
  • image_id (string)
  • image_size (number)
  • duration (number, seconds)

build.failed (v1)

Producer: Build Execution Service
Consumers: Audit, Notifications

Payload:

  • build_id (string, UUID)
  • status (string)
  • message (string)

build.execution.completed (v1)

Producer: Build Execution Service
Consumers: WebSocket

Payload:

  • build_id (string, UUID)
  • status (string)
  • message (string)
  • duration (number, seconds)
  • metadata (object, optional)

build.execution.failed (v1)

Producer: Build Execution Service
Consumers: WebSocket

Payload:

  • build_id (string, UUID)
  • status (string)
  • message (string)
  • duration (number, seconds)
  • metadata (object, optional)

build.execution.status.updated (v1)

Producer: Build Execution Service
Consumers: WebSocket

Payload:

  • build_id (string, UUID)
  • status (string)
  • message (string)
  • duration (number, seconds)
  • metadata (object, optional)

Tenant Events

tenant.created (v1)

Producer: Tenant Service
Consumers: Audit, Notifications

Payload:

  • tenant_id (string, UUID)
  • tenant_name (string)

tenant.activated (v1)

Producer: Tenant Service
Consumers: Audit, Notifications

Payload:

  • tenant_id (string, UUID)

Infrastructure Provider Events

infra.provider.created (v1)

Producer: Infrastructure Service
Consumers: Audit

Payload:

  • provider_id (string, UUID)
  • provider_type (string)
  • name (string)
  • created_by (string, UUID)

infra.provider.updated (v1)

Producer: Infrastructure Service
Consumers: Audit

Payload:

  • provider_id (string, UUID)
  • updated_by (string, UUID)

infra.provider.deleted (v1)

Producer: Infrastructure Service
Consumers: Audit

Payload:

  • provider_id (string, UUID)
  • deleted_by (string, UUID)

Project Events

project.created (v1)

Producer: Project Service
Consumers: Audit

Payload:

  • project_id (string, UUID)
  • project_name (string)
  • visibility (string)
  • git_repo (string, optional)
  • git_branch (string, optional)
  • git_provider (string, optional)

project.updated (v1)

Producer: Project Service
Consumers: Audit

Payload:

  • project_id (string, UUID)
  • project_name (string)
  • visibility (string)
  • git_repo (string, optional)
  • git_branch (string, optional)
  • git_provider (string, optional)

project.deleted (v1)

Producer: Project Service
Consumers: Audit

Payload:

  • project_id (string, UUID)

Notification Events (Planned)

notification.requested (v1)

Producer: API / Domain Services
Consumers: Notification Worker

Payload:

  • notification_type (string)
  • channel (string: email, webhook)
  • tenant_id (string, UUID)
  • to (string)
  • cc (string, optional)
  • from (string)
  • subject (string)
  • body_text (string)
  • body_html (string, optional)
  • email_type (string)
  • priority (number)
  • metadata (object, optional)

notification.sent (v1)

Producer: Notification Worker
Consumers: Audit, Analytics

Payload:

  • notification_type (string)
  • channel (string)
  • tenant_id (string, UUID)
  • recipient (string)
  • duration_ms (number)

notification.failed (v1)

Producer: Notification Worker
Consumers: Audit, Analytics

Payload:

  • notification_type (string)
  • channel (string)
  • tenant_id (string, UUID)
  • recipient (string)
  • error (string)
  • retryable (boolean)

Versioning Rules

  • Additive changes (new fields) are allowed without bumping version.
  • Breaking changes require a new version and parallel consumption support.
  • Consumers should tolerate unknown fields.

Next Steps

  • Implement notification event producers.
  • Build notification worker with retry/backoff.