Files
marketplaces/docs/backend-platform/bootstrap-api-spec.md
sdarbinyan 10251f2fc6
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
docs
2026-07-05 04:23:47 +04:00

152 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Bootstrap API Specification
## 1. Endpoint
- Method: `GET`
- Path: `/bootstrap`
- Auth: public (or optional lightweight token), tenant-scoped by domain
## 2. Domain-Based Request Flow
1. Receive request with host.
2. Resolve tenant by host.
3. Load tenant config aggregate from CONFIG DOMAIN.
4. Build versioned bootstrap payload.
5. Return public config JSON.
Failure responses:
- `404` unknown tenant domain
- `403` tenant inactive/suspended
- `500` config assembly failure
## 3. Production-Like Sample Response
```json
{
"schemaVersion": "2.1.0",
"generatedAt": "2026-07-05T10:30:00Z",
"tenant": {
"id": "a95c2f1b-58c1-4d8b-b35b-82e5bdf14321",
"slug": "alpha-market",
"code": "ALPHA",
"host": "shop.alpha.example.com",
"name": "Alpha Marketplace",
"defaultLocale": "en",
"supportedLocales": ["en", "ru", "hy"],
"defaultCurrency": "USD",
"supportedCurrencies": ["USD", "EUR", "AMD"],
"timezone": "UTC"
},
"theme": {
"themeId": "alpha-light",
"mode": "light",
"palette": {
"primary": "#2F6F6D",
"secondary": "#9FB8B6",
"accent": "#B5D7D4",
"textPrimary": "#1E3C38",
"textSecondary": "#5E7471",
"backgroundPrimary": "#FFFFFF",
"backgroundSecondary": "#F6F8F8",
"border": "#D7E0DF"
}
},
"layout": {
"type": "sidebar-left",
"options": {
"sidebarSticky": true,
"heroEnabled": true
}
},
"widgetRegistry": {
"manifestUrl": "/config/widgets/manifest.json"
},
"pages": [
{
"id": "page-home",
"key": "home",
"route": { "path": "/", "exact": true },
"layout": { "type": "carousel-home" },
"sections": [
{
"id": "sec-hero",
"type": "hero",
"order": 1,
"widgets": [
{
"id": "w-hero-main",
"type": "hero",
"version": "1.0.0",
"order": 1,
"padding": "0.5rem 0",
"visibility": { "desktop": true, "tablet": true, "mobile": true },
"props": { "title": "Welcome", "subtitle": "B2B Catalog" }
}
]
}
]
}
],
"footer": {
"paymentIcons": [
{ "src": "/assets/payments/visa.svg", "alt": "Visa", "width": 40, "height": 28 },
{ "src": "/assets/payments/mastercard.svg", "alt": "Mastercard", "width": 40, "height": 28 }
],
"copyrightText": {
"en": "© 2026 Alpha Marketplace. All rights reserved.",
"ru": "© 2026 Alpha Marketplace. Все права защищены.",
"hy": "© 2026 Alpha Marketplace. Բոլոր իրավունքները պաշտպանված են:"
},
"legalPageKeys": ["about-us", "privacy-policy", "terms-of-service"]
},
"localization": {
"defaultLocale": "en",
"supportedLocales": ["en", "ru", "hy"],
"currencyByLocale": {
"en": "USD",
"ru": "USD",
"hy": "AMD"
}
},
"apiEndpoints": {
"bootstrap": { "path": "/bootstrap", "method": "GET", "timeoutMs": 5000 },
"website": {
"items": { "path": "/items", "method": "GET" },
"categories": { "path": "/categories", "method": "GET" },
"cart": { "path": "/cart", "method": "GET" },
"orders": { "path": "/orders", "method": "POST" },
"payments": { "path": "/payments", "method": "POST" }
}
}
}
```
## 4. Field-by-Field Meaning
- `schemaVersion`: bootstrap contract version used by frontend parser.
- `generatedAt`: payload generation timestamp.
- `tenant`: public tenant identity and locale/currency defaults.
- `theme`: UI tokens; no business logic.
- `layout.type`: global layout mode. Supported: `default`, `sidebar-left`, `carousel-home`, `minimal`.
- `widgetRegistry.manifestUrl`: source for widget definitions/components mapping metadata.
- `pages`: route-driven composition graph.
- `footer`: footer links/icons/legal references.
- `localization`: supported locales and currency mapping.
- `apiEndpoints`: public endpoint mapping for frontend clients.
## 5. Versioning Strategy
Use semantic versioning in `schemaVersion`:
- Patch (`2.1.1`): non-breaking metadata additions.
- Minor (`2.2.0`): additive fields/sections with backward compatibility.
- Major (`3.0.0`): breaking structural changes.
Operational rules:
- Keep old parser compatibility for at least one minor line.
- Publish migration notes for any major bump.
- Validate payload against schema before release.
## 6. Security Rules
Never include in bootstrap:
- private keys
- internal credentials
- admin secrets
- payment signing material
Bootstrap is strictly public runtime configuration.