Skip to main content

Catalog Service

The catalog service consists of the bounded contexts Catalog, Category, and CategoryValue. It is responsible for managing products, their variants and versions, categories, and their respective characteristics and values.

Domain Model​

info

Imported entities from other bounded contexts are marked with a dashed border.

Technology Stack​

  • Language: Kotlin
  • Framework: Spring Boot
  • GraphQL Library: GraphQL Kotlin
  • Database: PostgreSQL
  • Schema Management: Flyway

Events​

This section lists events that are defined or used by the catalog service.

Published Events​

catalog/product/created​

This event is published when a new product is created.

{
id: string,
internalName: string,
isPubliclyVisible: boolean,
defaultVariantId: string,
categoryIds: string[]
}

catalog/product-variant/created​

This event is published when a new product variant is created. This includes the default variant created when a product is created.

{
id: string,
productId: string,
currentVersionId: string,
isPubliclyVisible: boolean
}

catalog/product-variant-version/created​

This event is published when a new product variant version is created. This includes the initial version created when a product variant is created.

{
id: string,
name: string,
description: string,
version: number,
retailPrice: number,
createdAt: string,
canBeReturnedForDays?: number,
productVariantId: string,
taxRateId: string,
weight: number,
mediaIds: string[]
}

catalog/category/created​

This event is published when a new category is created.

{
id: string,
name: string,
description: string
}

catalog/product/updated​

This event is published when a product is updated.

{
id: string,
internalName: string,
isPubliclyVisible: boolean,
defaultVariantId: string,
categoryIds: string[]
}

catalog/product-variant/updated​

This event is published when a product variant is updated.

{
id: string,
isPubliclyVisible: boolean
}

Subscribed Events​

Important ADRs​