Pre-seeded FastAPI image for the Boomi DataHub Demo Accelerator. Provides the commercial source system — Customers, Products, and Orders — as a live REST API backed by realistic seed data. Spin up in seconds, no configuration required.
Three commercial domains pre-seeded and ready to serve — no external database, no setup scripts.
| Domain | Endpoint | Records | Description |
|---|---|---|---|
| Customer 360 | /customers | 200 | Commercial customer profiles with full demographic and CRM fields |
| Product 360 | /products | 200 | SAP-style material master records |
| Orders | /orders | 775 | Orders distributed across customers with realistic buying patterns |
All data is loaded from CSV at container startup and held in memory. Restart to reset to original seed data.
docker run -d \
--name datahub_fastapi \
-p 4006:4005 \
pythonicshahdev/fastapi-commercial-source:latest
Interactive API docs: http://localhost:4006/docs
Port 4006 — mapped to avoid conflict with other FastAPI instances on 4005.
services:
fastapi:
image: pythonicshahdev/fastapi-commercial-source:latest
container_name: datahub_fastapi
ports:
- "${FASTAPI_EXTERNAL_PORT:-4006}:4005"
restart: unless-stopped
| Method | Endpoint | Description |
|---|---|---|
GET | /customers | All customers. Filter by ?status= or ?segment= |
GET | /customers/{customer_id} | Single customer (e.g. CUST-000001) |
POST | /customers | Create a customer |
PUT | /customers/{customer_id} | Update a customer |
DELETE | /customers/{customer_id} | Delete a customer |
Key fields: customer_id · email · phone · address · customer_segment · account_type · credit_limit · payment_terms · currency · sales_org · industry · lifetime_value · preferred_channel · status
Segments: Strategic, Enterprise, Mid-Market, SMB, Government, Non-Profit, Consumer, Partner, Startup
| Method | Endpoint | Description |
|---|---|---|
GET | /products | All products. Filter by ?status= or ?material_type= |
GET | /products/{material_number} | Single product (e.g. MAT-000001) |
POST | /products | Create a product |
PUT | /products/{material_number} | Update a product |
DELETE | /products/{material_number} | Delete a product |
Key fields: material_number · material_description · material_type (FERT/HALB/ROH/HIBE/DIEN/etc.) · material_group · base_unit_of_measure · gross_weight · net_weight · ean_upc · brand · division · sales_org · price · currency · status
| Method | Endpoint | Description |
|---|---|---|
GET | /orders | All orders. Filter by ?customer_id= |
POST | /orders/simulate?count=N | Generate N new orders in memory (1–500) |
Key fields: order_id · customer_id · product_id · order_date · amount · customer_email
Seed distribution:
Each order carries customer_email — pre-joined at startup from Customer360 data — so downstream consumers (e.g. Boomi Event Streams → DataHub) can match on email without a secondary lookup.
curl -X POST "http://localhost:4006/orders/simulate?count=20"
Returns a summary of created orders and per-customer snapshots. Use this during a live demo to show data flowing through Event Streams into DataHub in real time.
GET /ping → { "status": "UP" }
Designed to be consumed by a Boomi local atom running alongside it. Use host.docker.internal as the hostname from within Docker containers:
| Setting | Value |
|---|---|
| Base URL | http://host.docker.internal:4006 |
| Auth | None |
| Content-Type | application/json |
Boomi Connector: REST (officialboomi-X3979C-rest-prod)
This image is the commercial source system in a multi-source DataHub demo. The full stack:
| Image | Role | Port |
|---|---|---|
pythonicshahdev/datahub-mysql:latest | Academic SIS source — Institution, Department, Faculty, Course, Student | 3307 |
pythonicshahdev/fastapi-commercial-source:latest | Commercial source — Customer, Product, Orders (this image) | 4006 |
Both source systems feed Boomi DataHub as the golden record hub via scheduled polling and event-driven enrichment:
FastAPI (this image) Boomi DataHub
GET /customers ──▶ Boomi ──▶ Customer golden record
GET /products ──▶ Boomi ──▶ Product golden record
GET /orders ──▶ Boomi ──▶ Event Streams ──▶ Customer enrichment
(last_order_date, order_count)
customer_ordersCSV seed files (baked into image at /data/)
Customer360.csv → /customers (200 records, CUST-000001..200)
Product360.csv → /products (200 records, MAT-000001..200)
Orders.csv → /orders (775 records, ORD-000001..775)
|
▼
In-memory store (loaded at startup)
|
▼
FastAPI (uvicorn, port 4005 internal)
|
▼
Host port 4006 (configurable via FASTAPI_EXTERNAL_PORT)
Standardised error response:
{
"errorCode": "404",
"errorMessage": "Customer 'CUST-999999' was not found",
"transactionId": "dd960082-abbf-47c2-8c65-f18eeb35848b",
"timeStamp": "2026-06-18T14:32:11Z"
}
Optional x-correlation-id header on all endpoints for request tracing.
Full OpenAPI spec at /docs (Swagger UI) and /redoc.
| Variable | Default | Description |
|---|---|---|
| (none required) | — | Runs with zero configuration |
| Image | Purpose |
|---|---|
pythonicshahdev/fastapi-commercial-source:latest | DataHub demo — commercial source (this image) |
pythonicshahdev/datahub-mysql:latest | DataHub demo — academic SIS source |
pythonicshahdev/fastapi-app-reusable:latest | General-purpose multi-domain API (7 domains) |
Built and maintained by Shah
Content type
Image
Digest
sha256:fc5fb43e6…
Size
127.9 MB
Last updated
3 months ago
docker pull pythonicshahdev/fastapi-commercial-source