System map
This map is drawn from the code, not from a plan. Every arrow is a call that exists and is wired in the caller, and every call links to the line that makes it, at the commit the map was drawn from. Select a box to trace it.
Select a box to trace its connections. Arrows point from the caller to the service it calls.
- gRPC call
- HTTP through the gateway
- Call to an external API
Text version of this diagram
Clients — Calls
- api-gateway
courier app — Calls
warehouse — Calls
catalog — Calls
matching — Calls
review — Calls
payment — Calls
- Midtrans:
POST /v2/charge,GET /v2/{reference}/status
order — Calls
- pricing:
pricing.v1.PricingService/CalculatePrice,pricing.v1.PricingService/QuoteShipping,pricing.v1.PricingService/RedeemVoucher,pricing.v1.PricingService/ReleaseVoucherRedemption,pricing.v1.PricingService/AllocateFlashSaleStock,pricing.v1.PricingService/ReleaseFlashSaleAllocation - matching:
shipping.v1.ShippingService/EstimateShippingOptions,fleet.v1.CourierTelemetryService/DispatchCourier - catalog:
catalog.v1.CatalogService/GetProduct - warehouse:
fulfillment.v1.BinStockService/ReserveStock,fulfillment.v1.BinStockService/ReleaseStock,fulfillment.v1.FulfillmentTaskService/CreateFulfillmentTask,fulfillment.v1.FulfillmentTaskService/CancelFulfillmentTask,fulfillment.v1.FulfillmentTaskService/RecordCourierAwb - payment:
payment.v1.PaymentService/CreateEscrowHold,payment.v1.PaymentService/RefundEscrow,payment.v1.PaymentService/SettleShippingFee,payment.v1.PaymentService/GetEscrowStatus - identity:
identity.v1.IdentityService/GetMerchantInfo,identity.v1.IdentityService/GetUserProfile
identity — Calls
notification — Calls
communication — Calls
search — Calls
- catalog:
catalog.v1.CatalogService/ChangedSince,catalog.v1.CatalogService/CountProducts(full reindex only) - identity:
identity.v1.IdentityService/MerchantsChangedSince - order:
order.v1.OrderService/OrdersChangedSince
Reading the map
Section titled “Reading the map”Everything from outside enters through the gateway. Browsers, integrations and the courier app talk only to Kong. Select the gateway to see which services it exposes and on which paths; notification and communication have no public route at all.
order is the busiest caller. Checkout is a saga that order coordinates: prices and vouchers from
pricing, stock from warehouse, an escrow hold from payment, shipping options and a courier from
matching. Two of those conversations run both ways — warehouse reports a packed parcel back with
FulfillmentPacked, and matching reports a delivered one with OrderDelivered.
identity is the most called. Services ask it who a principal is, which merchant a seller is and whether a merchant may trade. Access tokens are not checked by calling identity: each service verifies them itself against identity’s published signing keys, fetched over HTTP, so those fetches do not appear as arrows.
search keeps its own index. It polls catalog, identity and order for everything that changed since
its last checkpoint, and writes the result into Typesense. The ChangedSince calls are that feed.
What is not on it
Section titled “What is not on it”- Calls made only by one-off data migrations.
- Traffic inside a single service, such as matching’s in-process events.
- notification serves its API, but no service calls it yet. communication is built but not deployed.