Events
:::info Source
Sourced from services/media-service/EVENT_SCHEMAS.md in the documentation repo.
:::
1. Envelope
Standard. retentionClass = operational.
2. Events Published
2.1 media.asset.uploaded.v1
interface AssetUploadedV1 { assetId: MediaAssetId; tenantId: TenantId; ownerUserId: UserId; kind: string; mime: string; sizeBytes: number; sha256: SHA256; uploadedAt: ISODate; }
2.2 media.asset.scanned.v1
interface AssetScannedV1 { assetId: MediaAssetId; tenantId: TenantId; result: 'clean' | 'quarantined'; detections?: string[]; scannedAt: ISODate; }
2.3 media.asset.transcoded.v1
interface AssetTranscodedV1 { assetId: MediaAssetId; tenantId: TenantId; variants: Array<{ profile: string; key: string; sizeBytes: number }>; durationSeconds?: number; width?: number; height?: number; transcodedAt: ISODate; }
2.4 media.asset.ready.v1
interface AssetReadyV1 { assetId: MediaAssetId; tenantId: TenantId; kind: string; ownerUserId: UserId; readyAt: ISODate; variantCount: number; }
2.5 media.asset.failed.v1 / .quarantined.v1 / .deleted.v1
2.6 media.caption.generated.v1 / .reviewed.v1
interface CaptionGeneratedV1 { captionId: ULID; assetId: MediaAssetId; tenantId: TenantId; language: Locale; source: 'ai' | 'human'; aiProvenance?: AIProvenance; generatedAt: ISODate; }
2.7 media.transcript.generated.v1
2.8 media.ai_image.generated.v1 / media.ai_audio.generated.v1
interface AIImageGeneratedV1 { assetId: MediaAssetId; tenantId: TenantId; promptHash: string; model: string; costMicroUSD: number; aiProvenance: AIProvenance; generatedAt: ISODate; }
3. Events Consumed
authoring.block.added.v1— tracks media references for lifecycle.authoring.course_draft.published.v1— freeze references (retention extended).gdpr.subject_request.received.v1— delete user assets.content.play_package.bundle.published.v1— trigger retention extension for bundled assets.
4. Versioning
All v1 additive. Variant profile list extensible.
5. Idempotency
Inbox dedups.
6. Outbox / Inbox
Standard.
7. Partition Key
partitionKey = tenantId.
8. DLQ
media.dlq — poison messages.