entity
Product Image
Catalog image metadata and publishing state for a product model or variant.
EntityStatus: Implemented in api-v1
Purpose
Product images connect scraped or manually curated image records to persistent media URLs and Airtable attachment fields. Image publishing is an application workflow; the domain model describes the image record and attachment set.
Supabase objects are catalog-scoped, keyed {imageRecordId}/original. They are not project copies. Create or delete of image records on a variant that is currently on a Design project_product_variants row is ProductVariantImagesChanged. Destroying the Airtable images row still deletes the store object via afterAirtableProductImageRecordsDestroyed.
Invariants
- A product image requires a non-empty URL.
- It belongs to exactly one product model or product variant.
- Published URLs and attachment payloads preserve enough metadata for clients and downstream design workflows.
Related Ports
ForPublishingProductImagesForReadingCatalogResources