Admin (operator)¶
The operator side lives inside the Shopware administration as Vue modules,
backed by REST endpoints under /api/_action/marketplace/* (guarded by the
normal Shopware admin token — no portal JWT here).
Where things appear¶
The modules nest into existing Shopware areas rather than adding a top-level menu:
| Area | Module | What you do there |
|---|---|---|
Customers (sw-customer) |
Sellers | Create, edit, suspend sellers; set commission and contact. |
Catalogues (sw-catalogue) |
Seller products · Offers | Review seller-created products; approve / reject offers. |
| Product detail | Offers tab · Commission tab | See all offers on a product; set per-product commission. |
| Orders / Finance | Purchase orders · Statements · Payouts | The money: per-seller POs, statements, payout history. |
Settings (sw-settings) |
Shipping · Marketplace config | Global shipping service tiers; the marketplace settings card. |
Sellers¶
The Sellers module is seller CRUD: account, status (active / inactive /
suspended), commission, branding and contact. From here an operator can also
link a Shopware admin user to an operator marketplace account (used for
operator mail recipients).
Offer approval¶
Two grids drive the approval workflow:
- Seller products — products sellers created, filterable to those pending approval. Bulk approve / reject.
- Offers — every seller offer across the catalogue. Approve or reject
offers sitting in
pending_approval; onlyactiveoffers reach the buy-box.
Approval is gated by the autoApproveProducts / autoApproveOffers settings —
with those off (default), everything new or materially edited routes through
these grids. See Domain model → Offer lifecycle.
The product-detail page also gains:
- an Offers tab listing every seller's offer (plus the platform offer) for that product, and
- a Commission tab to set that product's
flyokaiCommissionPercentoverride.
Finance¶
The Finance views are read-mostly operator oversight:
| View | Shows |
|---|---|
| Purchase orders | POs grouped by Shopware order, with seller, status, totals, commission. |
| Statements | Per-seller statements per period — sales, commission, payout amount, status. |
| Payouts | Payout history — amount, status, bank target. |
Statement generation and payout execution are driven from the
CLI (marketplace:statement:generate, marketplace:payout:execute);
the admin surfaces the results. Mechanics in Statements & payouts.
Shipping¶
Operators define the global service tiers (e.g. Standard, Expedited) that sellers then map their carriers onto. Sellers never invent tiers — they choose from the operator's list and bind a Shopware shipping method + price to each. See Cart & checkout → Shipping.
Marketplace settings card¶
A settings card under Settings → Plugins → FlyokaiMarketplace holds every system-config key: enable/disable per channel, price display mode, commission and fee defaults, shipping mode, mail from/name and operator inbox recipients, and the seller-portal key path + CORS origin.
The operator REST surface¶
For integrators, the admin Vue talks to these (admin-token-guarded) endpoints:
| Method | Path | Purpose |
|---|---|---|
GET POST PATCH |
/api/_action/marketplace/sellers |
Seller CRUD. |
GET PATCH |
/api/_action/marketplace/sellers/{id}/branding |
Seller branding. |
POST |
/api/_action/marketplace/sellers/{id}/mail/compose |
Operator → seller mail. |
GET |
/api/_action/marketplace/seller-products |
Seller-created products grid. |
GET PATCH |
/api/_action/marketplace/offers |
Offer grid + approve/reject. |
GET |
/api/_action/marketplace/products/{id}/offers |
Offers for one product. |
GET |
/api/_action/marketplace/purchase-orders |
PO / statement / payout grids. |
GET POST PATCH DELETE |
/api/_action/marketplace/shipping-services |
Global service tier CRUD. |
GET |
/api/_action/marketplace/operators/candidates |
Users eligible for operator mail. |
These call the same MarketplaceBackend
as everything else, so they work identically on Base and Remote.