Reference /docs
The exact inventory: what ships, status, surfaces, APIs, and delivery boundaries.
FURAZHIR FIELD MANUAL / EN
A step-by-step path from the first Docker start to API integration, safe operations, and customer handoff. Learn not only what FURAZHIR contains, but why it exists and how the pieces connect.
Built from the verified capability catalog · 2026-08-09
v2026-08-09Panel · API · Runtime · Delivery
Two documentation modes
The exact inventory: what ships, status, surfaces, APIs, and delivery boundaries.
The sequence: what to do, why it works this way, where to verify it, and what result is correct.
CHOOSE A TRACK
CURRICULUM
Understand the admin panel, stable API, background processes, and separate customer installation before configuring anything.
01OperatorPanel and server session
02IntegrationAPI v1, key, minimal permissions
03DomainValidation, version, command
04PostgreSQLSource of truth and queue
05Background jobsRetryable external work
01The panel can evolve with staff workflows. Integrations depend only on versioned /api/v1 and its OpenAPI description, so a panel redesign does not break customer connections.
02An HTTP command validates input, checks the record version, and atomically saves the change with a delivery job. Email and provider availability do not decide whether the primary operation commits.
03Search, analytics, and public projections can be rebuilt from canonical tables. They accelerate reads but do not independently decide reservations, state transitions, or publication rights.
04One installation belongs to one customer, with separate secrets, database, domain, and backups. That reduces the impact of an incident and keeps data ownership clear.
01The admin panel serves operators, /api/v1 serves external integrations, and a separate process owns background actions. Service /api/admin routes are not a stable customer API.
02Live data uses one PostgreSQL database per customer installation. The panel, API, and background jobs share the same domain rules.
03Every customer receives a separate installation. Advanced roles, corporate sign-in, and high availability are agreed for the project.
Draw the three consumers in your project and map each one to the admin panel, API v1, or a system integration.
No browser client depends on /api/admin, and deferred effects do not run inside a user HTTP request.
Start the site, admin panel, PostgreSQL, background jobs, and test mail as one verifiable environment.
01SiteLocal address
02Panel and APILocal address
03Background jobsQueue processing
04PostgreSQLSample state
05MailpitTest messages
01Services do more than start together: healthchecks and dependencies encode order, while the private network separates internal dependencies from published loopback ports.
02The environment generator writes an ignored file with test values. It makes the stack reproducible but is never a transport for live payment credentials, second-factor data, or provider keys.
03The full check crosses the site, panel, API, background jobs, and test mailbox. A successful TCP connection is insufficient; useful responses and sample state changes are asserted.
04The demo returns to a known state without hand-editing tables. Repeated runs stay comparable and cannot silently depend on stale data.
01This creates ignored test-only files. Never put live payment credentials or real personal data into the local stack.
cd services/regional-checkout
npm run local:env02Docker Compose waits for the site, panel, background jobs, database, and test mail to become ready.
npm run local:up03The full check covers the main user flows, service-to-service data exchange, and sample-state reset.
npm run local:smoke:fullOpen the local site, admin panel, and test mailbox using the addresses in the setup guide.
The full check passes and every published port is bound to 127.0.0.1 only.
Learn token + TOTP, server sessions, themes, locales, and unsaved-change protection.
01Token + TOTPOne-time sign-in proof
02Server sessionTTL, HttpOnly, revoke
03Entity versionOptimistic concurrency
04MutationAtomic state change
05AuditWho changed what and when
01Token and TOTP prove sign-in, then the server issues a bounded, revocable session. Routine requests do not keep replaying the original secret.
02Active-device listing and revocation are checked against server state. Deleting one browser cookie is not a revocation mechanism for other sessions.
03The editor sends the expected version. If another session already saved, the server rejects stale input and returns enough context for an intentional comparison.
04Navigation, section changes, and page close warn about a dirty form. This complements server concurrency; it never replaces it.
01Read FOUNDRY_ADMIN_TOKEN and the TOTP seed from the ignored local env. Never paste either value into issues, logs, or chat.
02Open one entity in two tabs, save a change in the first tab, and try to save the stale version in the second.
03Revoke another session and confirm the server rejects its next request.
Change theme and locale, start editing, then try to navigate away and refresh.
Edits are not silently lost, conflicts offer recovery, and a revoked session actually stops working.
Use all six catalog modes, attribute schemas, variants, stock, media, filters, and atomic saves.
01CategorySchema and allowed attributes
02ProductContent, media, locales, labels
03SKU matrixUnique combinations
04StockAvailable, reserved, visibility
05Public catalogPublished facets and variants
01A category schema defines attribute type, requirement, and allowed values. Products and variants depend on it, so an incompatible schema change requires an explicit migration rather than silent deletion.
02The product owns shared content and merchandising; the SKU owns a concrete attribute combination, price, stock, and availability. Duplicate combinations are rejected by the domain contract.
03Gallery order, alt text, localized names, and shared labels belong to one card but keep their own rules. Upload deletion is allowed only after checking current-session ownership and references.
04The storefront receives available variants, published content, and allowed filters only. An atomic batch updates the source before the public view is read as a consistent snapshot.
01Create the category and its attributes before variants. The SKU matrix must come from a validated schema, not arbitrary fields.
02Fill merchandising, translations, gallery, and shared labels before creating variants and stock.
03Configure storefront filters and confirm the public catalog returns the same available variants and facets.
Create a synthetic product with two attributes and four SKUs, then export its stock.
A batch save commits the consistent set or leaves no partially updated product behind.
Connect reservations, order states, requests, subscriptions, reviews, and bulk actions in one operating flow.
01Idempotent POSTOne purchase intent
02New + reserveOrder and units in one transaction
03State machineAllowed transitions only
04Archive + historyLedger remains intact
05Reply / reviewDelivery and moderation
01The key belongs to one purchase intent, not one network attempt. The server binds it to normalized input and returns the prior result only for an exact replay.
02Creation and state changes adjust available and reserved through formal rules. Archiving removes an item from the work queue without rewriting its movement history.
03A command cannot jump to an arbitrary state or repeat an irreversible edge. It checks current version, the allowed edge, and all related domain writes.
04Requests, replies, and reviews link to the order but keep their own workflow and moderation. Replies use a reliable queue, so a delivery retry never creates a second logical message.
01Repeat POST with the same Idempotency-Key and confirm the existing order is returned instead of creating a duplicate.
02Verify allowed transitions, stock reservation effects, and archiving without losing history.
03Triage a request, place its reply in the durable queue, then create and moderate a review linked to the completed order.
Find an order with server search, change its priority, run a bulk action, and export the result.
Stock agrees with status, retries are safe, and every mutation is visible in audit.
Understand published-content delivery, email preview, durable retries, analytics, and audit.
01DraftWorking content version
02Publish / previewExplicit decision and recipient set
03Public viewAllowed reads only
04Delivery queueRetry and deduplication
05Journal and analyticsFact and aggregate
01Editors see the working version; the public API returns only content approved for publication. A direct lookup must not bypass that boundary.
02The server applies the same consent, unsubscribe, segment, and duplicate-address rules used for delivery. Approval applies to a concrete recipient set, not an abstract template.
03The main transaction creates a job with a durable id. Background processing records each attempt and retries temporary failures while keeping provider responses linked to the original command.
04The journal records the author and details of a change, while analytics builds aggregates. A metric never substitutes for evidence of a specific operation.
01Create a content entry and marketing block, then inspect the public API before and after publishing.
02Build the audience and server preview. Enqueue is allowed only after explicitly confirming the recipient set.
03Inspect queue attempt history, retries, derived metrics, and the typed audit record.
Change content, run a demo campaign, and locate both operations in audit and analytics.
Draft content stays private, unsubscribed recipients are excluded, and background-job retries do not duplicate actions.
Walk through discovery, a scoped key, OpenAPI, catalog, content, search, and idempotent order creation.
01Server clientKey outside browser bundle
02Auth + scopeMinimum authority
03Limits + validationRate, schema, idempotency
04Domain commandOne transaction boundary
05ResponseStatus, request id, retry contract
01The /api/v1 root reports version and resources, health checks the process, and OpenAPI 3.1 defines shapes. Generated clients are pinned to the delivered release schema.
02The key stays on the integration server. Every request passes authentication and the exact scope check before any domain read or mutation.
03The client distinguishes validation, auth, conflict, and throttling, stores X-Request-Id, and retries safe GETs with jittered backoff. Credential-bearing redirects are rejected.
04POST /orders needs a 32–128 character Idempotency-Key. After an uncertain network outcome, the client repeats the original body and key instead of inventing another operation.
01GET /api/v1 describes the version, authentication, and resources; /health checks the process, while /openapi.json defines the contract.
02Give an integration only catalog:read, content:read, search:read, or orders:write for its actual job.
03Log X-Request-Id, respect rate-limit headers, reject credential-bearing redirects, and retry an order only with its original idempotency key.
Run the recipes below against /api/demo/v1, then switch the origin and key to your local Platform.
The client is cookie-free, keeps privileged keys out of browser bundles, and handles 200/201/4xx/429 correctly.
Use 39 domain commands, webhooks, and sandbox automations without bypassing business rules.
01UI / API / webhookDifferent entry points
02Verify + normalizeSignature, replay, schema
03Domain commandFields and acceptance criteria
04State and queueAtomic write
05Journal / consumerObservable continuation
01Its contract binds input, affected entities, UI/API entry, and acceptance criteria. A new interface reuses the command rather than cloning rules inside a controller.
02Signature and replay checks filter invalid input, then the system re-fetches the object over an authenticated provider channel. The inbound body remains a signal, not the source of truth.
03A scenario stores its trigger, conditions, and expected actions on sample data but never calls arbitrary URLs. That tests the model without unwanted external effects.
04A consumer pins the command/API version, stores a dedupe key, and survives replay. Input evolution stays compatible or becomes a new versioned contract.
01A command contract names its request fields, changed entities, UI surface, API route, and acceptance IDs.
02A provider signal triggers an authenticated API re-fetch. The incoming payload does not become the source of truth.
03Developer tools store notification and automation scenarios in the demo but never call arbitrary external URLs.
Find the command below and trace it from the interface to changed data and the audit result.
The extension uses a domain command, idempotency, and audit instead of writing tables directly from a controller.
Separate the web app, migrations, and background jobs; connect PostgreSQL, private storage, mail, backup, and monitoring.
01TLS edgeDNS, certificate, firewall
02Site and APILive/ready stateless traffic
03MigrationsOne run before release
04Postgres + private S3State, files, backup
05Background jobsQueue, heartbeat, alerts
01An immutable migration artifact runs before the new site and background-job version and leaves a journal. Letting every replica alter the schema creates races and complicates rollback.
02/health proves the process is alive; readiness checks required bindings and migration compatibility. The load balancer sends traffic only to ready instances.
03PostgreSQL and S3 are not public, SMTP uses limited credentials, and the firewall exposes only TLS entry points. Secrets are supplied at start-up rather than stored in image layers.
04Schedule, retention, and encryption prove little without a restore drill. The restored system is checked for migrations, files, sign-in, and selected domain scenarios.
01A one-shot container applies immutable migrations before the new web app and background jobs start.
02/health proves the process is alive; /health/ready proves required dependencies can accept traffic.
03A backup is ready only after a restore drill, and a release is ready only with a documented rollback.
Follow the Timeweb guide, complete the key-free environment template, and run the readiness checks in the target environment.
TLS, DNS, firewall, PostgreSQL, background jobs, mail, storage, backup, restoration, and rollback all have a verified result.
Build a reproducible package and connect the technical delivery to clear order and license terms.
01Versioned artifactSource or signed OCI
02SBOM + checksumsInventory and integrity
03Runbooks + env contractInstall and operate
04AcceptanceClean install and smoke
05License + supportSeparate agreement boundary
01Source archive or OCI images ship with checksums, SBOM, NOTICE, migrations, OpenAPI, and SDK. The recipient verifies integrity before deploying the fixed version.
02Bootstrap, env contract, health, backup/restore, and rollback let a customer engineer finish a clean deployment without a hidden file or spoken command.
03The delivery defines names, formats, generation, and rotation but never live values. Initial exchange uses an agreed secure channel and is followed by rotation.
04The license, installation count, transfer rights, support term, seller details, and each party’s duties belong in the order or contract. Self-hosting and Russian data residency reduce some risks but are not automatic compliance.
01List the version, source code or images, migrations, Docker Compose setup, SDK, OpenAPI, component inventory, and checksums.
02Include initial setup, service checks, backup, restoration, rollback, and key-rotation steps. Never include the keys themselves.
03The license, installation count, transfer rights, seller details, and support belong in the order or contract. Russian data residency alone is not a compliance certificate.
Perform a clean installation from the delivered package without access to the developer's working directory.
The customer can reproduce deployment and understands that the delivered version is perpetual while the 30 days cover support.
LAB / PUBLIC API V1
01Authorization: Bearer or X-API-Key never enters a public browser bundle.
02Each integration gets only the catalog:read, content:read, search:read, or orders:write scope it needs.
03GET can retry with backoff; an order retries only with the same 32–128 character Idempotency-Key.
04Store X-Request-Id, handle 429, and never follow a redirect while carrying credentials.
The demo API mirrors every operation under /api/demo/v1. The first restricted request issues a temporary demo-space identifier. Retry the request with that header and reuse it for later calls.
X-Demo-Workspace: <opaque token>The dependency-free SDK always targets /api/v1, omits browser cookies, and rejects redirects on credential-bearing requests. Its installation method is listed in the agreed package contents.
import { FoundryClient } from "@foundry/sdk";
const foundry = new FoundryClient({
baseUrl: "https://api.example.com",
apiKey: process.env.FOUNDRY_API_KEY,
timeoutMs: 10_000,
});
const { catalog } = await foundry.getCatalog({
available: true,
sort: "featured",
});
const order = await foundry.createOrder(input, {
idempotencyKey: crypto.randomUUID(),
});/api/v1/api/v1/api/demo/v1public—This public operation needs no key. Use the response for capability discovery, never for storing secrets.
curl --fail-with-body https://api.example.com/api/v1{
"name": "foundry-public-api",
"version": "v1",
"openapi": "/api/v1/openapi.json",
"authentication": { "headers": ["Authorization", "X-API-Key"] },
"resources": { "catalog": { "method": "GET", "path": "/api/v1/catalog" } }
}The sample shows the contract shape; values depend on installation data./api/v1/health/api/v1/health/api/demo/v1/healthpublic—This confirms that the process is alive but does not verify the database or configuration. Use a separate readiness check for the live load balancer.
curl --fail-with-body https://api.example.com/api/v1/health{
"status": "ok",
"service": "foundry-public-api",
"version": "v1",
"timestamp": "2026-08-09T12:00:00.000Z"
}The sample shows the contract shape; values depend on installation data./api/v1/openapi.json/api/v1/openapi.json/api/demo/v1/openapi.jsonpublic—The schema is the machine-readable API v1 contract. Pin generated clients to the delivered release.
curl --fail-with-body https://api.example.com/api/v1/openapi.json > furazhir.openapi.json{
"openapi": "3.1.0",
"info": { "title": "Фуражир Public API", "version": "v1" },
"paths": { "/api/v1/catalog": {}, "/api/v1/orders": {} }
}The sample shows the contract shape; values depend on installation data./api/v1/catalog/api/v1/catalog/api/demo/v1/catalogcatalog:read600 / minRepeat brand and attr.<code> query parameters for facets; available accepts 0 or 1.
curl --fail-with-body \
-H "Authorization: Bearer $FOUNDRY_API_KEY" \
"https://api.example.com/api/v1/catalog?available=1&sort=featured&page=1"{
"catalog": {
"sections": [],
"brands": [],
"attributeFacets": [],
"matchedProducts": 0,
"totalProducts": 0
}
}The sample shows the contract shape; values depend on installation data./api/v1/content/api/v1/content/api/demo/v1/contentcontent:read600 / minThe response contains the published projection only. Draft records must remain absent even when scope is requested directly.
curl --fail-with-body \
-H "Authorization: Bearer $FOUNDRY_API_KEY" \
"https://api.example.com/api/v1/content?scope=storefront"{
"entries": [
{ "id": "hero", "scope": "storefront", "title": "…", "body": "…", "position": 1 }
]
}The sample shows the contract shape; values depend on installation data./api/v1/search/api/v1/search/api/demo/v1/searchsearch:read300 / minq is bounded to 120 characters and limit to 1–20. An empty result is a successful response, not an error.
curl --fail-with-body \
-H "Authorization: Bearer $FOUNDRY_API_KEY" \
"https://api.example.com/api/v1/search?q=winter%20boots&limit=10"{
"items": [
{ "title": "Winter boots", "meta": "…", "href": "/catalog/boots", "type": "product" }
]
}The sample shows the contract shape; values depend on installation data./api/v1/orders/api/v1/orders/api/demo/v1/ordersorders:write60 / 15 minA new order returns 201; replaying the same operation with the same key returns 200. Every new logical order needs a new key.
curl --fail-with-body -X POST \
-H "Authorization: Bearer $FOUNDRY_API_KEY" \
-H "Idempotency-Key: 01JEXAMPLEORDER000000000000000001" \
-H "Content-Type: application/json" \
--data '{"customerName":"Ada Lovelace","customerEmail":"ada@example.com","customerContact":"+10000000000","deliveryId":"pickup","pickupLocationId":"pickup-main","paymentId":"card","termsAccepted":true,"itemCount":1,"totalValue":12000,"items":[{"productId":"boots-1","productName":"Winter boots","quantity":1,"priceValue":12000}]}' \
https://api.example.com/api/v1/orders{
"order": {
"id": "order-…",
"status": "new",
"itemCount": 1,
"totalValue": 12000
}
}The sample shows the contract shape; values depend on installation data.DEVELOPER HUB / EXTENSIONS
EXT-CRM-001separate extension—EXT-RBAC-001separate extension—EXT-APIKEY-001available in demoGET/POST/PATCH/DELETE /api/admin/developerEXT-WEBHOOK-001available in demoGET/POST/PATCH/DELETE /api/admin/developerEXT-AUTOMATION-001available in demoGET/POST/PATCH/DELETE /api/admin/developerEXT-ENVHEALTH-001available in demoGET /api/admin/developerEXT-PAYMENTS-001available in demoGET/POST /api/admin/paymentsEXT-WHITELABEL-001separate extension—EXT-SLA-001separate extension—EXT-IMPORT-001separate extension—EXT-VIEWS-001separate extension—EXT-PROCUREMENT-001separate extension—The reference section starts here: product capabilities, commands, and the server routes used to deliver them.
One search across UI, state, commands, and HTTP contracts.
LAB / 94 CAPABILITIES
7 capabilitiesACC-SHL-001Studio navigation and workspace summariesdelivery + demo“Studio navigation and workspace summaries” completes one operation in “Access, navigation and edit safety” while keeping UI, server rules, and audit on the same contract.
Desktop navigation · Mobile drawer · Per-section counts
activeSection · sectionSummaries
GET workspace snapshot
Only synthetic workspace summaries are shown.
ACC-SHL-002Dark and light themedelivery + demo“Dark and light theme” completes one operation in “Access, navigation and edit safety” while keeping UI, server rules, and audit on the same contract.
Theme toggle
browser theme preference
The operation uses the section contract without a dedicated public endpoint.
Theme state remains local to the browser.
ACC-SHL-003Six-locale localizationdelivery + demo“Six-locale localization” completes one operation in “Access, navigation and edit safety” while keeping UI, server rules, and audit on the same contract.
Locale switcher · Localized dates, numbers and labels
locale
Localized errors and CSV headings
Locale changes never alter identity or authorization.
ACC-SHL-004Workspace load, refresh and retrydelivery + demo“Workspace load, refresh and retry” completes one operation in “Access, navigation and edit safety” while keeping UI, server rules, and audit on the same contract.
Loading · Load error · Retry · Refresh
workspace load state · request id · latency
GET /api/admin/catalog, /api/admin/content and /api/admin/operations
No cached cross-session snapshot is rendered.
ACC-SHL-005Dirty-state counters and discard protectiondelivery + demo“Dirty-state counters and discard protection” completes one operation in “Access, navigation and edit safety” while keeping UI, server rules, and audit on the same contract.
Dirty badges · Save all · Discard dialog · beforeunload guard
draft baselines · dirty record ids
The operation uses the section contract without a dedicated public endpoint.
The guard is browser-local and reveals no persisted data.
ACC-SHL-006Token plus TOTP accessdelivery + demo“Token plus TOTP access” completes one operation in “Access, navigation and edit safety” while keeping UI, server rules, and audit on the same contract.
Demo access screen · Token and one-time-code walkthrough
sandbox access challenge · demo operator session
POST /api/admin/session · DELETE /api/admin/session
The complete token plus one-time-code flow uses disclosed synthetic sandbox credentials. Production keeps the same flow but requires a private per-installation TOTP secret; the hosted demo never requests or accepts it.
ACC-SHL-007Responsive and accessible interaction systemdelivery + demo“Responsive and accessible interaction system” completes one operation in “Access, navigation and edit safety” while keeping UI, server rules, and audit on the same contract.
Focus trap · Focus restore · Keyboard operation · Accessible confirmations
dialog and drawer state
The operation uses the section contract without a dedicated public endpoint.
UI state is ephemeral.
17 capabilitiesACC-CAT-001Six catalog work modesdelivery + demo“Six catalog work modes” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
operations · simple · card · categories · pickup · filters
catalog view
The operation uses the section contract without a dedicated public endpoint.
All modes operate only on the current synthetic workspace.
ACC-CAT-002Server catalog filters, facets and paginationdelivery + demo“Server catalog filters, facets and pagination” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Search · Status filter · Category filter · Brand filter · Load more
catalog cursor · status/category/brand/query filters · facets
GET /api/admin/catalog/products
Query length, page size and scan work are bounded.
ACC-CAT-003Product CRUD and lifecycle statusdelivery + demo“Product CRUD and lifecycle status” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Create · Edit · Delete · Active/draft/archive
products
catalog.product.create · catalog.product.update · catalog.product.delete · POST/PATCH/DELETE /api/admin/catalog
Capacity and string limits prevent unbounded workspace growth.
ACC-CAT-004Complete product identity and merchandising fieldsdelivery + demo“Complete product identity and merchandising fields” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Full product card
categoryId · brandId · brand · name · description · priceValue · href · status · defaultVariantId
catalog.product.create · catalog.product.update · GET /api/admin/catalog/products/:id
Links are validated as relative or allow-listed demo URLs.
ACC-CAT-005Product and catalog translationsdelivery + demo“Product and catalog translations” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
RU/EN/FR/ZH-CN/DE/ES translation editors
product translations · category translations · attribute translations · option translations · filter translations
catalog.product.update · catalog.category.upsert · catalog.filters.batch-update · Localized catalog projection
Text-only translated values are length bounded.
ACC-CAT-006Product and variant imagesdelivery + demo“Product and variant images” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Upload controls · Preview · Alt text · Gallery editor
uploads · product image · product gallery · variant image · variant gallery
upload.create · upload.delete · catalog.product.update · catalog.variant.update · POST/GET/DELETE /api/admin/uploads
Session-owned R2 objects, magic-byte validation, SVG denial, byte quotas and TTL cleanup are mandatory.
ACC-CAT-007Shared product labels and legacy swatchesdelivery + demo“Shared product labels and legacy swatches” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Shared label picker · Create label · Swatch editor
productLabels · product label reference · swatches
catalog.label.create · catalog.product.update · POST /api/admin/catalog
Labels and colors are bounded synthetic metadata.
ACC-CAT-008Variant and SKU CRUDdelivery + demo“Variant and SKU CRUD” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Add · Duplicate · Remove · Quick edit · Default variant
variants · SKU · price · stock · reserved · status
catalog.variant.create · catalog.variant.update · catalog.variant.delete · catalog.variant.batch-update · PATCH /api/admin/catalog
Variant count, SKU length and numeric ranges are bounded.
ACC-CAT-009Universal SKU matrixdelivery + demo“Universal SKU matrix” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Axis selection · Matrix rebuild · Bulk price/stock/status · Matrix paging
variant axes · selected option combinations · matrix drafts
catalog.variant.batch-update · PATCH /api/admin/catalog
Combination count and variants per product are capped.
ACC-CAT-010Product-level universal attributesdelivery + demo“Product-level universal attributes” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Typed product attribute editor
product attribute values · immutable order snapshots
catalog.product.update · Catalog and order projections
Values are validated against the current category schema.
ACC-CAT-011Catalog validation and edit readinessdelivery + demo“Catalog validation and edit readiness” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Inline errors · Readiness summary · Guided empty state
validation issues · dirty baselines
Structured validation errors
Invalid records never reach persisted state.
ACC-CAT-012Category CRUD and orderingdelivery + demo“Category CRUD and ordering” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Category manager
categories · product counts
catalog.category.upsert · catalog.category.delete · PATCH /api/admin/catalog
Deletion is blocked when referential rules would be violated.
ACC-CAT-013Category attribute schemas and option librariesdelivery + demo“Category attribute schemas and option libraries” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Attribute and option schema editor
schema revision/status · attribute definitions · attribute options
catalog.category.upsert · Catalog metadata projection
Attribute and option counts, identifiers and color values are capped and validated.
ACC-CAT-014Storefront filter configurationdelivery + demo“Storefront filter configuration” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Filter label/status/order/translation editor
filterSettings
catalog.filters.batch-update · PATCH /api/admin/catalog
Only the five supported filter identifiers are accepted.
ACC-CAT-015Pickup locations, time slots and courier deliverydelivery + demo“Pickup locations, time slots and courier delivery” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Pickup manager · Time-slot editor · Courier toggle
pickupLocations · timeSlots · courierDeliveryEnabled
catalog.pickup.upsert · catalog.pickup.delete · catalog.fulfillment.update · PATCH /api/admin/catalog
Addresses are synthetic and no logistics provider is contacted.
ACC-CAT-016Atomic catalog batch savedelivery + demo“Atomic catalog batch save” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Save all · Dirty count
product and variant draft set
catalog.product.batch-update · catalog.variant.batch-update · PATCH /api/admin/catalog
Batch length and serialized state size are bounded.
ACC-CAT-017Server stock exportdelivery + demo“Server stock export” completes one operation in “Catalog, SKUs and fulfillment” while keeping UI, server rules, and audit on the same contract.
Stock CSV download
products · variants
POST /api/admin/catalog/export
Export is synthetic, rate-limited, size-capped and audited.
10 capabilitiesACC-ORD-001Active and archived order flowsdelivery + demo“Active and archived order flows” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Active flow · Archive flow · Restore
orders · archivedAt
order.archive-batch · GET/PATCH /api/admin/operations
Only synthetic orders are changed.
ACC-ORD-002Server order search, filters and cursor historydelivery + demo“Server order search, filters and cursor history” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Query · Flow · Status · Load more
order filters · history cursor
GET /api/admin/operations/history?resource=orders
Query and page sizes are bounded.
ACC-ORD-003Inventory-aware order status transitionsdelivery + demo“Inventory-aware order status transitions” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Contextual transition actions
new · processing · completed · delivered · cancelled
order.update · order.batch-update · PATCH /api/admin/operations
A status change is atomic and fails with a structured conflict when its stock/reserve effect would violate an inventory invariant.
ACC-ORD-004Priority, deadline and support notesdelivery + demo“Priority, deadline and support notes” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Priority · Planned date · Internal note · Customer message · Overdue warning
priority normal/urgent/hold · fulfillmentDeadline · adminNote · customerNote
order.update · PATCH /api/admin/operations
Notes are synthetic text with strict lengths.
ACC-ORD-005Complete customer and fulfillment detailsdelivery + demo“Complete customer and fulfillment details” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Order detail card
customer email/profile notes/contact method/messenger · delivery/pickup/address details/time slot/comment/payment
GET /api/admin/operations
Seeded contacts use reserved example domains and fictitious addresses.
ACC-ORD-006Order items and immutable attribute snapshotsdelivery + demo“Order items and immutable attribute snapshots” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Line-item list
order items · variant id · quantity · price · attribute snapshots
Order response
Order snapshots contain only synthetic catalog data.
ACC-ORD-007Order summary and risk indicatorsdelivery + demo“Order summary and risk indicators” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Command statistics · Urgent and overdue highlights
status/priority/deadline counts · visible revenue
The operation uses the section contract without a dedicated public endpoint.
Metrics are derived, not separately persisted.
ACC-ORD-008Bulk order operationsdelivery + demo“Bulk order operations” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
Select shown · Limit 500 · Bulk status/archive/restore · Confirmation dialog
selected order ids
order.batch-update · order.archive-batch · PATCH /api/admin/operations
Selection and body sizes are bounded; confirmation names the impact.
ACC-ORD-009Server-filtered order exportdelivery + demo“Server-filtered order export” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
CSV export
current order filters
POST /api/admin/operations/export
Rate-limited export includes synthetic rows only.
ACC-ORD-010Idempotent API order creation and reservationdelivery + demo“Idempotent API order creation and reservation” completes one operation in “Orders and fulfillment operations” while keeping UI, server rules, and audit on the same contract.
API Lab order example
idempotency record · order · variant reserve
POST /api/demo/v1/orders
Only session-owned synthetic orders are created; no payment or notification leaves the sandbox.
8 capabilitiesACC-COM-001Newsletter subscription recordsdelivery + demo“Newsletter subscription records” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Subscription list and detail
contact identity · source · status · consent and confirmation timestamps
contact.update · GET/PATCH /api/admin/operations
All addresses use reserved example domains.
ACC-COM-002Feedback request recordsdelivery + demo“Feedback request records” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Feedback list and detail
name · email · contact · contact method · messenger · message · source · customer key
contact.update · GET/PATCH /api/admin/operations
The public demo warns against real personal data and stores bounded synthetic values.
ACC-COM-003Contact search, filters and cursor historydelivery + demo“Contact search, filters and cursor history” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Search · Status · Load more
section/status/query filters · history cursor
GET /api/admin/operations/history?resource=contactRequests
Query and page sizes are bounded.
ACC-COM-004Single and bulk contact status actionsdelivery + demo“Single and bulk contact status actions” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Select shown · Take in work · Return to new · Archive/unsubscribe
selected contact ids · contact status
contact.update · contact.batch-update · PATCH /api/admin/operations
Bulk selection is capped at 500.
ACC-COM-005Confirmed subscribers and feedback CSV exportsdelivery + demo“Confirmed subscribers and feedback CSV exports” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Export confirmed · Export feedback
current contact filters
POST /api/admin/operations/export
Exports are rate-limited and contain reserved-domain addresses only.
ACC-COM-006Idempotent feedback replydelivery + demo“Idempotent feedback reply” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Subject · Message · Queue feedback
reply subject · reply body · idempotency record · outbox item
contact.reply · POST /api/admin/operations
Reply is rendered and queued internally but never delivered externally.
ACC-COM-007Double opt-in and unsubscribe effectsdelivery + demo“Double opt-in and unsubscribe effects” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Lifecycle metadata · Sandbox confirmation action
confirmation expiry · confirmedAt · unsubscribedAt
POST /api/demo/newsletter · POST /api/demo/newsletter/one-click
Signed links are session-bound and never address real recipients.
ACC-COM-008Durable reply outbox statedelivery + demo“Durable reply outbox state” completes one operation in “Subscriptions and customer requests” while keeping UI, server rules, and audit on the same contract.
Outbox history
pending/sent/failed/skipped · attempt count · next attempt · error · sentAt
contact.reply · GET /api/admin/operations/history?resource=emailOutbox
Terminal sandbox state is `skipped` or `sandboxed`; no SMTP connection exists.
7 capabilitiesACC-REV-001Home and product review typesdelivery + demo“Home and product review types” completes one operation in “Reviews and moderation” while keeping UI, server rules, and audit on the same contract.
Review type switch
reviewType home/product
review.create · review.update · GET /api/admin/operations
All review authors and products are synthetic.
ACC-REV-002Review search, status filters and cursor historydelivery + demo“Review search, status filters and cursor history” completes one operation in “Reviews and moderation” while keeping UI, server rules, and audit on the same contract.
Search · Type · Status · Load more
type/status/query filters · history cursor
GET /api/admin/operations/history?resource=reviews
Query and page sizes are bounded.
ACC-REV-003Review create, edit and deletedelivery + demo“Review create, edit and delete” completes one operation in “Reviews and moderation” while keeping UI, server rules, and audit on the same contract.
Create mode · Moderation editor · Delete confirmation
full review record
review.create · review.update · review.delete · POST/PATCH/DELETE /api/admin/operations
Review capacity and text length are bounded.
ACC-REV-004Delivered-order product linkingdelivery + demo“Delivered-order product linking” completes one operation in “Reviews and moderation” while keeping UI, server rules, and audit on the same contract.
Order source and product selectors
delivered product targets · orderId · productId · productName
review.create · review.update · Operations snapshot
Only seeded delivered orders may be linked.
ACC-REV-005Review image and previewdelivery + demo“Review image and preview” completes one operation in “Reviews and moderation” while keeping UI, server rules, and audit on the same contract.
Image URL · Upload · Alt text · Preview
imageSrc · imageAlt · upload ownership
upload.create · upload.delete · review.update · POST/GET/DELETE /api/admin/uploads
The catalog upload security policy is reused.
ACC-REV-006Review readiness and summary metricsdelivery + demo“Review readiness and summary metrics” completes one operation in “Reviews and moderation” while keeping UI, server rules, and audit on the same contract.
Readiness pills · Character count · Summary cards
quality result · status/type/photo/rating counts
The operation uses the section contract without a dedicated public endpoint.
Metrics are derived from current state.
ACC-REV-007Moderation and bulk review actionsdelivery + demo“Moderation and bulk review actions” completes one operation in “Reviews and moderation” while keeping UI, server rules, and audit on the same contract.
Publish · Hide · Select shown · Save all
selected review ids · review drafts
review.update · review.batch-update · PATCH /api/admin/operations
Bulk selection and audit payload are bounded.
8 capabilitiesACC-CNT-001Public content groups and scopesdelivery + demo“Public content groups and scopes” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
Content group navigation
home · marketing · catalog · product · cart · footer · legal · consent
content.entry.create · content.entry.update · GET /api/admin/content
The internal Studio scope remains hidden from public projections.
ACC-CNT-002Content search and filtersdelivery + demo“Content search and filters” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
Search · Group/scope · Status · Reset
query · scope · status
GET /api/admin/content
Search length is bounded.
ACC-CNT-003Text entry CRUD and positioningdelivery + demo“Text entry CRUD and positioning” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
Composer · Inline editor · Advanced ID · Delete
id · scope · title · body · status · position
content.entry.create · content.entry.update · content.entry.delete · POST/PATCH/DELETE /api/admin/content
Text is length-bounded and always rendered as escaped plain text; operator input is never interpreted as HTML.
ACC-CNT-004Atomic text batch save and dirty overviewdelivery + demo“Atomic text batch save and dirty overview” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
Dirty count · Save texts · Content quality overview
content drafts and baselines · quality overview
content.entry.batch-update · PATCH /api/admin/content
Batch size and total state bytes are bounded.
ACC-CNT-005Marketing block CRUDdelivery + demo“Marketing block CRUD” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
Marketing editor · Delete · Placement preview
marketingBlocks
marketing.block.create · marketing.block.update · marketing.block.delete · POST/PATCH/DELETE /api/admin/content
CTA URLs are relative or allow-listed; media obeys upload policy.
ACC-CNT-006Marketing placement, variant, layout and CTA fieldsdelivery + demo“Marketing placement, variant, layout and CTA fields” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
Complete marketing editor
home-promotion/cart-advertising · text/image/mixed · fixed/content · title/text/image/alt/href/CTA/status/position
marketing.block.create · marketing.block.update · Public marketing projection
No scriptable markup or arbitrary external asset fetch is allowed.
ACC-CNT-007Marketing batch save and media uploaddelivery + demo“Marketing batch save and media upload” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
Save marketing · Upload and preview
marketing drafts · upload ownership · durable orphan cleanup queue
marketing.block.batch-update · upload.create · upload.delete · PATCH /api/admin/content · POST/DELETE /api/admin/uploads
R2 ownership, byte quotas and cleanup apply.
ACC-CNT-008Published-only public content projectiondelivery + demo“Published-only public content projection” completes one operation in “Content and marketing placements” while keeping UI, server rules, and audit on the same contract.
API Lab content response
content and marketing status
GET /api/demo/v1/content
Draft and archived values never leave the admin projection.
12 capabilitiesACC-EML-001Email configuration diagnosticsdelivery + demo“Email configuration diagnostics” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Four diagnostics cards
notifications/configuration/from/admin recipient/HELO/TLS state
GET operations snapshot
Only normalized sandbox configuration is exposed; no credentials or raw transport errors.
ACC-EML-002Safe transport verificationdelivery + demo“Safe transport verification” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Verify/check again
verification status/timestamps/failure code
email.transport.verify · POST /api/admin/email-diagnostics
Verification checks an internal deterministic sandbox transport and never opens SMTP.
ACC-EML-003Subscriber and customer audience searchdelivery + demo“Subscriber and customer audience search” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Audience switch · Search · Pagination
audience · recipient search · recipient page
GET /api/admin/email-campaigns
Only confirmed synthetic recipients are returned.
ACC-EML-004Selected or all-recipient campaign modedelivery + demo“Selected or all-recipient campaign mode” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Selected · All found · Select visible · 500 selection limit
selection mode · selected ids · audience snapshot
email.campaign.enqueue · POST /api/admin/email-campaigns
Recipient IDs are session-owned and addresses never leave the sandbox.
ACC-EML-005Complete campaign composerdelivery + demo“Complete campaign composer” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Composer fields · CTA toggle · Image toggle/upload
subject · preheader · title · body · CTA · image
email.campaign.preview · email.campaign.enqueue · POST /api/admin/email-campaigns
Operator HTML is rejected and every field is escaped server-side.
ACC-EML-006Server-rendered email previewdelivery + demo“Server-rendered email preview” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Desktop/mobile preview · Placeholder and readiness state
preview html/text · sendReady · placeholder fields · draft fingerprint
email.campaign.preview · POST /api/admin/email-campaigns operation=preview
Preview is escaped, sandboxed and has no active links or scripts.
ACC-EML-007Explicit audience confirmationdelivery + demo“Explicit audience confirmation” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Confirmation checkbox and recipient count
confirmed draft fingerprint
The operation uses the section contract without a dedicated public endpoint.
Confirmation is tied to the exact current draft and selection.
ACC-EML-008Idempotent campaign enqueuedelivery + demo“Idempotent campaign enqueue” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Queue campaign
campaign · idempotency key and request fingerprint
email.campaign.enqueue · POST /api/admin/email-campaigns
Enqueue creates sandbox records only and performs no external delivery.
ACC-EML-009Campaign preparation monitordelivery + demo“Campaign preparation monitor” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Recent campaign cards · Refresh and auto-refresh · Run/retry sandbox queue
preparing/queued/failed/sent/partial · per-campaign recipient progress · attempt/next-at/error retry metadata
GET /api/admin/email-campaigns?mode=status · POST /api/admin/email-campaigns operation=process
The first worker pass records a deterministic internal interruption; the visible retry reaches a terminal state without external delivery.
ACC-EML-010Durable outbox history and retry presentationdelivery + demo“Durable outbox history and retry presentation” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Cursor-paginated delivery history
kind/recipient/subject/status/error/attempt/max/next/sent timestamps
GET /api/admin/operations/history?resource=emailOutbox
Terminal delivery is sandboxed/skipped; SMTP is impossible.
ACC-EML-011Unsubscribe exclusion and worker behaviordelivery + demo“Unsubscribe exclusion and worker behavior” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Sandbox preparation timeline
audience snapshot · unsubscribe status · per-campaign delivery counters · retry schedule
Campaign status projection · RFC one-click unsubscribe · Sandbox worker process
The deterministic worker changes only session-owned outbox records and never connects to SMTP.
ACC-EML-012Campaign image uploaddelivery + demo“Campaign image upload” completes one operation in “Email campaigns and outbox” while keeping UI, server rules, and audit on the same contract.
Upload · URL · Alt text · Preview
campaign image upload reference
upload.create · upload.delete · POST/DELETE /api/admin/uploads
R2 ownership, quotas and TTL cleanup apply.
7 capabilitiesACC-ANA-001Sales and stock focus switchdelivery + demo“Sales and stock focus switch” completes one operation in “Sales and inventory analytics” while keeping UI, server rules, and audit on the same contract.
Sales/stock switch
analytics focus
The operation uses the section contract without a dedicated public endpoint.
Focus is browser-local.
ACC-ANA-002Derived analytics integritydelivery + demo“Derived analytics integrity” completes one operation in “Sales and inventory analytics” while keeping UI, server rules, and audit on the same contract.
Live metrics
orders/products/content/reviews/subscriptions
Workspace snapshot
Analytics are calculated from current synthetic state and never hard-coded separately.
ACC-ANA-003Complete sales metricsdelivery + demo“Complete sales metrics” completes one operation in “Sales and inventory analytics” while keeping UI, server rules, and audit on the same contract.
Nine sales metric cards
revenue/delivered/backlog/cancelled · orders/rates · unit and basket averages
Analytics projection
All money is synthetic RUB data.
ACC-ANA-004Sales series and commercial breakdownsdelivery + demo“Sales series and commercial breakdowns” completes one operation in “Sales and inventory analytics” while keeping UI, server rules, and audit on the same contract.
Sales chart and six breakdown panels
dated sales series · order/revenue status · fulfillment/payment · category revenue · top products
Analytics projection
Series are derived from seeded timestamps.
ACC-ANA-005Complete stock metricsdelivery + demo“Complete stock metrics” completes one operation in “Sales and inventory analytics” while keeping UI, server rules, and audit on the same contract.
Eight stock metric cards
stock value/available/reserved/share · SKU states · risk value · low/out · publish readiness · review rating
Analytics projection
All values derive from the synthetic catalog.
ACC-ANA-006Stock, content, review and subscription breakdownsdelivery + demo“Stock, content, review and subscription breakdowns” completes one operation in “Sales and inventory analytics” while keeping UI, server rules, and audit on the same contract.
Eight stock and readiness panels
category stock/value · variant status · availability/risk · content/review/subscription status
Analytics projection
All breakdowns derive from the same session state.
ACC-ANA-007Sales, dynamics and stock exportsdelivery + demo“Sales, dynamics and stock exports” completes one operation in “Sales and inventory analytics” while keeping UI, server rules, and audit on the same contract.
Export orders analytics · Export dynamics · Export stock
analytics snapshot
POST catalog export for stock
Exports contain synthetic values and are size-capped.
8 capabilitiesACC-AUD-001Typed audit event for every mutationdelivery + demo“Typed audit event for every mutation” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Audit event list
action · entityType · entityId · actor · createdAt
Operations snapshot/history
No credentials, raw mail bodies or upload bytes enter audit payloads.
ACC-AUD-002Structured bounded audit payloaddelivery + demo“Structured bounded audit payload” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Localized payload detail
bounded before/after/domain metadata
Audit history
Sensitive and long-content fields are redacted into compact metadata and the serialized demo payload is hard-capped at 8 KiB.
ACC-AUD-003Audit query and entity filterdelivery + demo“Audit query and entity filter” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Search · Object filter · Reset
query · entity type
GET /api/admin/operations/history?resource=auditEvents
Query length is bounded.
ACC-AUD-004Audit summary and cursor paginationdelivery + demo“Audit summary and cursor pagination” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Four summary cards · Entity insights · Load more
total/entity/latest summaries · history cursor
GET /api/admin/operations/history
History retention and page size are bounded.
ACC-AUD-005Administrative session inventorydelivery + demo“Administrative session inventory” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Device labels · Current/active badges · Retry
session id/current/actor/IP/user agent/created/seen/expires
GET /api/admin/sessions
IP values are documentation-only synthetic values; the real session token is never returned.
ACC-AUD-006Revoke other or all administrative sessionsdelivery + demo“Revoke other or all administrative sessions” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Revoke others · Revoke all · Danger confirmation
active/revoked session state · independent HttpOnly access marker
session.revoke · PATCH /api/admin/sessions · POST/DELETE /api/admin/session
Revoke all preserves the isolated workspace data but sets an independent HttpOnly deny marker, gates every admin route and redirects /demo to a fixed-credential re-entry screen.
ACC-AUD-007Optimistic concurrency and conflict recoverydelivery + demo“Optimistic concurrency and conflict recovery” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Conflict notice · Reload and retry
D1 workspace revision · domain drafts
D1 compare-and-swap revision and 409 envelope
Conflict errors reveal no other session data.
ACC-AUD-008Origin, payload, rate and capacity controlsdelivery + demo“Origin, payload, rate and capacity controls” completes one operation in “Audit and administrative sessions” while keeping UI, server rules, and audit on the same contract.
Limit feedback
rate buckets · workspace mutation count · expiry
Exact-origin writes · Strict JSON · 429 and Retry-After
Per-network and per-workspace budgets, TTL and cleanup prevent public abuse.
10 capabilitiesACC-API-001Discovery, health and OpenAPI 3.1delivery + demo“Discovery, health and OpenAPI 3.1” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
API Lab links
API version and sandbox capability summary
GET /api/demo/v1 · GET /api/demo/v1/health · GET /api/demo/v1/openapi.json
Health exposes no internal binding identifiers or migration versions.
ACC-API-002Scoped ephemeral API keysdelivery + demo“Scoped ephemeral API keys” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
API Lab key/scopes · Create/revoke/delete · One-time secret reveal
one-time API key secret · SHA-256 digest · id · scopes · lastUsedAt · revokedAt
Authorization Bearer · X-API-Key
Custom keys are disposable, synthetic, session-bound, revocable and stored only as SHA-256 digests; the bundled tokens are public sandbox credentials with no production authority.
ACC-API-003Exact CORS allow-list and preflightdelivery + demo“Exact CORS allow-list and preflight” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
CORS example
demo CORS allow-list
OPTIONS and protected v1 responses
No wildcard or credentialed cross-origin access is allowed.
ACC-API-004Public catalog query contractdelivery + demo“Public catalog query contract” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
Editable API Lab query
category · repeated brand · search · price min/max · availability · sort · page · attr.*
GET /api/demo/v1/catalog
Only active synthetic products and available variants are projected.
ACC-API-005Public content contractdelivery + demo“Public content contract” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
API Lab content request
published content and marketing
GET /api/demo/v1/content?scope=
Draft, archived and internal content never appears.
ACC-API-006Public search contractdelivery + demo“Public search contract” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
API Lab search request
public categories and products
GET /api/demo/v1/search?q=&limit=
Search uses public projections only and bounded tokens.
ACC-API-007Public idempotent order contractdelivery + demo“Public idempotent order contract” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
Editable API Lab POST
order idempotency and reservation
POST /api/demo/v1/orders · DELETE /api/demo/v1/workspace
Only clearly synthetic contact data is accepted; no payment, mail, webhook or customer session is touched.
ACC-API-008Uniform errors, request and rate headersdelivery + demo“Uniform errors, request and rate headers” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
API Lab response metadata
rate bucket
error envelope · X-Request-Id · X-API-Key-Id · X-RateLimit-* · Retry-After
Errors expose no stack, secret, hash or cross-session data.
ACC-API-009Real-network API Labdelivery + demo“Real-network API Lab” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
GET resource/query editor · POST order body and Idempotency-Key editor · Bearer/X-API-Key switch · Run · Status/duration/request-id/rate-limit/body · Open created order in Studio
editable query/body/token/idempotency key · live response trace · created order handoff
GET catalog/content/search · POST orders · GET discovery/health/OpenAPI
Endpoint selection is allow-listed; arbitrary external URLs cannot be requested.
ACC-API-010Dependency-free TypeScript SDK examplesdelivery + demo“Dependency-free TypeScript SDK examples” completes one operation in “Public API v1 and API Lab” while keeping UI, server rules, and audit on the same contract.
Copyable typed examples
No domain state is mutated; verify a read model or system signal.
Kept aligned with the OpenAPI 3.1 contract and compile-tested
Examples use the ephemeral demo key and reserved data.
DOMAIN / 39 COMMANDS
catalog.product.createCreate productCMD-CAT-PRODUCT-CREATEPOST /api/admin/catalogCap product count and validate all fields.
catalog.product.updateUpdate productCMD-CAT-PRODUCT-UPDATEPATCH /api/admin/catalogReject unknown fields and stale revisions.
catalog.product.deleteDelete productCMD-CAT-PRODUCT-DELETEDELETE /api/admin/catalogDelete only session-owned data and schedule orphan media cleanup.
catalog.product.batch-updateBatch update productsCMD-CAT-PRODUCT-BATCHPATCH /api/admin/catalogCap batch at 200 and state bytes.
catalog.variant.createCreate SKU variantCMD-CAT-VARIANT-CREATEPATCH /api/admin/catalogCap variants and validate canonical option signature.
catalog.variant.updateUpdate SKU variantCMD-CAT-VARIANT-UPDATEPATCH /api/admin/catalogStock cannot be lower than reserve.
catalog.variant.deleteDelete SKU variantCMD-CAT-VARIANT-DELETEPATCH /api/admin/catalogPreserve a valid default and clean session-owned orphans.
catalog.variant.batch-updateBatch update or rebuild SKU matrixCMD-CAT-VARIANT-BATCHPATCH /api/admin/catalogCap combinations and serialized payload.
catalog.label.createCreate shared product labelCMD-CAT-LABEL-CREATEPOST /api/admin/catalogNormalize, deduplicate and cap labels.
catalog.category.upsertCreate or update category and schemaCMD-CAT-CATEGORY-UPSERTPATCH /api/admin/catalogCap schema and reject invalid stable identifiers.
catalog.category.deleteDelete categoryCMD-CAT-CATEGORY-DELETEPATCH /api/admin/catalogReject deletion while products reference the category.
catalog.filters.batch-updateUpdate storefront filter settingsCMD-CAT-FILTERS-BATCHPATCH /api/admin/catalogAccept only the five known filter IDs.
catalog.pickup.upsertCreate or update pickup locationCMD-CAT-PICKUP-UPSERTPATCH /api/admin/catalogUse fictitious bounded addresses and schedules.
catalog.pickup.deleteDelete pickup locationCMD-CAT-PICKUP-DELETEPATCH /api/admin/catalogRemove session-owned product mappings consistently.
catalog.fulfillment.updateUpdate courier delivery availabilityCMD-CAT-FULFILLMENTPATCH /api/admin/catalogNo logistics integration is called.
order.updateUpdate orderCMD-ORD-UPDATEPATCH /api/admin/operationsValidate exact status and priority enums and bounded notes.
order.batch-updateBatch update ordersCMD-ORD-BATCHPATCH /api/admin/operationsCap selection at 500.
order.archive-batchArchive or restore ordersCMD-ORD-ARCHIVEPATCH /api/admin/operationsCap selection and preserve immutable order content.
contact.updateUpdate contact statusCMD-COM-CONTACT-UPDATEPATCH /api/admin/operationsOnly session-owned synthetic contacts can change.
contact.batch-updateBatch update contactsCMD-COM-CONTACT-BATCHPATCH /api/admin/operationsCap selection at 500.
contact.replyQueue contact replyCMD-COM-CONTACT-REPLYPOST /api/admin/operationsPersist sandbox outbox only; never send SMTP.
review.createCreate reviewCMD-REV-CREATEPOST /api/admin/operationsCap reviews and validate delivered target references.
review.updateUpdate reviewCMD-REV-UPDATEPATCH /api/admin/operationsValidate rating, body and references.
review.deleteDelete reviewCMD-REV-DELETEDELETE /api/admin/operationsClean only unreferenced session-owned media.
review.batch-updateBatch update reviewsCMD-REV-BATCHPATCH /api/admin/operationsCap selection at 500.
content.entry.createCreate content entryCMD-CNT-ENTRY-CREATEPOST /api/admin/contentText-only bounded content.
content.entry.updateUpdate content entryCMD-CNT-ENTRY-UPDATEPATCH /api/admin/contentReject HTML/script input and unknown fields.
content.entry.deleteDelete content entryCMD-CNT-ENTRY-DELETEDELETE /api/admin/contentDelete only session-owned content.
content.entry.batch-updateBatch update content entriesCMD-CNT-ENTRY-BATCHPATCH /api/admin/contentCap batch at 500 and total state bytes.
marketing.block.createCreate marketing blockCMD-MKT-BLOCK-CREATEPOST /api/admin/contentValidate links, text and upload ownership.
marketing.block.updateUpdate marketing blockCMD-MKT-BLOCK-UPDATEPATCH /api/admin/contentValidate links, text and upload ownership.
marketing.block.deleteDelete marketing blockCMD-MKT-BLOCK-DELETEDELETE /api/admin/contentSchedule only session-owned orphan media cleanup.
marketing.block.batch-updateBatch update marketing blocksCMD-MKT-BLOCK-BATCHPATCH /api/admin/contentCap batch at 200.
email.campaign.previewBuild campaign previewCMD-EML-PREVIEWPOST /api/admin/email-campaignsRender escaped inert HTML/text without delivery.
email.campaign.enqueueEnqueue sandbox campaignCMD-EML-ENQUEUEPOST /api/admin/email-campaignsNever open SMTP; persist deterministic sandbox preparation only.
email.transport.verifyVerify sandbox transportCMD-EML-VERIFYPOST /api/admin/email-diagnosticsPerform no network call; verify internal no-delivery transport policy.
session.revokeRevoke administrative sessionsCMD-SEC-SESSIONS-REVOKEPATCH /api/admin/sessionsAffect only current workspace sessions and clear cookie for all scope.
upload.createCreate session-owned image uploadCMD-UPLOAD-CREATEPOST /api/admin/uploadsAt most 12 files, 4 MiB per file, 16 MiB per session and 20 MiB per request; magic bytes are checked, SVG is denied, keys are random and expired objects are cleaned up.
upload.deleteDelete session-owned image uploadCMD-UPLOAD-DELETEDELETE /api/admin/uploadsOwnership check is mandatory and referenced objects cannot be deleted silently.
HTTP / 54 ROUTES
/api/v1Discover the API version, authentication, and resources.
Call it from a server-side integration or the SDK with the smallest scope. OpenAPI 3.1 defines the request and response schema.
/api/v1/healthMinimal process health check without internal details.
Call it from a server-side integration or the SDK with the smallest scope. OpenAPI 3.1 defines the request and response schema.
/api/v1/openapi.jsonMachine-readable OpenAPI 3.1 document.
Call it from a server-side integration or the SDK with the smallest scope. OpenAPI 3.1 defines the request and response schema.
/api/v1/catalogPublic catalog with filtering, sorting, and pagination.
Call it from a server-side integration or the SDK with the smallest scope. OpenAPI 3.1 defines the request and response schema.
/api/v1/contentPublished content entries, optionally filtered by scope.
Call it from a server-side integration or the SDK with the smallest scope. OpenAPI 3.1 defines the request and response schema.
/api/v1/searchSearch over the public catalog projection.
Call it from a server-side integration or the SDK with the smallest scope. OpenAPI 3.1 defines the request and response schema.
/api/v1/ordersIdempotent order creation with reservation.
Call it from a server-side integration or the SDK with the smallest scope. OpenAPI 3.1 defines the request and response schema.
/api/catalogPublic catalog projection.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/catalog/productsBatch product lookup.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/analytics/eventsIngest allow-listed first-party events after explicit consent without IP, User-Agent, or a full referrer.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/contactCreate a customer request.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/contentPublic content delivery.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/localeCurrent interface locale.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/newsletterDouble opt-in subscription.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/newsletter/one-clickOne-click unsubscribe.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/order-accessIssue bounded order access.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/ordersRead and create an order.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/orders/:orderId/paymentPayment status and hosted payment start.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/orders/:orderId/payment/syncReconcile a payment with the provider.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/searchStorefront search.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/uploads/products/:fileServe authorized product media.
Use it as the storefront's same-origin backend. Define a public adapter and threat model before moving it behind another frontend.
/api/account/feedbackAuthenticated customer request.
Call it only inside the customer cookie session with CSRF/origin protection. Do not expose it as public API without a separate contract.
/api/account/profileUpdate the customer profile.
Call it only inside the customer cookie session with CSRF/origin protection. Do not expose it as public API without a separate contract.
/api/account/reviewsSubmit an account review.
Call it only inside the customer cookie session with CSRF/origin protection. Do not expose it as public API without a separate contract.
/api/account/sessionInspect, create, and end a session.
Call it only inside the customer cookie session with CSRF/origin protection. Do not expose it as public API without a separate contract.
/api/account/sessionsManage other sessions.
Call it only inside the customer cookie session with CSRF/origin protection. Do not expose it as public API without a separate contract.
/api/account/yandexConnect and disconnect Yandex ID.
Call it only inside the customer cookie session with CSRF/origin protection. Do not expose it as public API without a separate contract.
/api/account/yandex/callbackYandex ID OAuth callback.
Call it only inside the customer cookie session with CSRF/origin protection. Do not expose it as public API without a separate contract.
/api/admin/analytics/trafficPrivacy-first traffic aggregates for 7, 30, or 90 days and the matching previous period.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/catalogCatalog snapshot and mutations.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/catalog/exportCatalog and stock exports.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/catalog/metadataCategory and filter metadata.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/catalog/productsFilterable product list.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/catalog/products/:productIdComplete product record.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/catalog/sku-registryRow-level SKU registry with filters, sorting, and cursor pagination.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/contentContent and marketing placements.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/email-campaignsCampaign audiences, previews, enqueue, and monitoring.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/email-diagnosticsSafe email transport diagnostics.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/operationsOrders, contacts, reviews, and audit operations.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/operations/exportServer-side operations CSV exports.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/operations/historyCursor-based operations history.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/paymentsPayment list and compatibility action endpoint.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/payments/:paymentIdPayment details.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/payments/:paymentId/cancelIdempotent payment cancellation.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/payments/:paymentId/captureCapture a two-stage payment.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/payments/:paymentId/refundsFull or partial refund.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/payments/:paymentId/syncReconcile status with YooKassa.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/sessionToken/TOTP sign-in and sign-out.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/sessionsList and revoke administrative sessions.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/admin/uploadsUpload, list, and delete media.
This route serves the admin panel and requires an administrative session. Give external clients /api/v1 or a dedicated adapter.
/api/webhooks/payments/yookassaYooKassa signal followed by mandatory provider API verification.
Connect only a trusted provider, load balancer, orchestrator, or monitoring probe through a network allow-list.
/healthProcess liveness.
Connect only a trusted provider, load balancer, orchestrator, or monitoring probe through a network allow-list.
/health/readyApplication and dependency readiness.
Connect only a trusted provider, load balancer, orchestrator, or monitoring probe through a network allow-list.
/humans.txtPublic delivery information.
Connect only a trusted provider, load balancer, orchestrator, or monitoring probe through a network allow-list.
NEXT STEP