CLI commands¶
Every bin/console marketplace:* command, grouped by job. Backend-aware commands
(marketplace:ping, marketplace:seller:list) work identically against Base's
in-process backend and Remote's cluster backend.
Setup & identity (Base)¶
| Command | What it does |
|---|---|
marketplace:local:schema:apply |
(Re)apply the declarative flyokai_* schema to Shopware MySQL. Idempotent — safe anytime. |
marketplace:oauth:keypair:generate |
Generate / rotate the RSA keypair (var/marketplace/oauth.id_rsa{,.pub}) that signs portal JWTs. |
marketplace:oauth:client:create |
Create / rotate the seller-portal OAuth client (password grant). Prints id + secret once. |
marketplace:user:create |
Provision a flyokai_user (UUIDv7 PK, argon2id password). Options: --username --email --role --password. |
marketplace:seller:create |
Create a seller bound to a flyokai_user (existing or new). Options: --username --email --password. |
Operations (Base)¶
| Command | What it does |
|---|---|
marketplace:ping |
Round-trip a ListSellers through the active backend. Reports backend class + seller count — the fastest health check. |
marketplace:seller:list |
List sellers through the backend. |
marketplace:statement:generate |
Generate / recompute statements over a closed-interval date range. See Finance. |
marketplace:payout:execute |
Create + execute a payout against a closed statement. |
marketplace:mail:smoke |
Send a test mail through the backend and Shopware's mailer. |
marketplace:smoketest:checkout |
End-to-end checkout smoke test (cart → purchase order path). |
flyokai:marketplace:backfill-variant-offers |
Backfill per-variant offers for configurable products (migration aid; offers are per-variant). |
Remote cluster (Remote add-on)¶
| Command | What it does |
|---|---|
marketplace:remote:bootstrap |
Persist cluster connection settings into Shopware system_config (interactive). Legacy alias: marketplace:flyokai:bootstrap. |
marketplace:remote:cluster-config:init |
Seed db.connection.shopware + db.connection.cluster in the cluster's flyok.config.json; sync dataLocation. Idempotent. Options: --force, --dry-run, --active=shopware\|cluster. |
marketplace:data:migrate:to-cluster |
Move the data plane Shopware → cluster MySQL, then flip dataLocation=cluster. Options: --drop-source, -y. See Data migration. |
marketplace:data:migrate:to-shopware |
Reverse direction. Same options. |
Recipes¶
First install (Base)¶
php bin/console plugin:install --activate FlyokaiMarketplace
php bin/console marketplace:oauth:client:create
php bin/console marketplace:user:create --username admin --email admin@example.com --role admin --password '…'
php bin/console marketplace:seller:create --username seller1 --email seller1@example.com --password '…'
php bin/console marketplace:ping
Month close¶
php bin/console marketplace:statement:generate --from 2026-05-01 --to 2026-05-31
php bin/console marketplace:payout:execute --statement <id>
Go remote, then move data to the cluster¶
php bin/console plugin:install --activate FlyokaiMarketplaceRemote
php bin/console marketplace:remote:bootstrap
php bin/console marketplace:remote:cluster-config:init
php bin/console marketplace:ping # confirms RemoteMarketplaceBackend
php bin/console marketplace:data:migrate:to-cluster # resumable; safe to rerun
Rotate the portal signing key¶
php bin/console marketplace:oauth:keypair:generate
# existing portal JWTs become invalid → sellers re-authenticate
Health check first
When anything seems off, start with marketplace:ping. It tells you which
backend is bound and whether it can reach its data — the first branch in
almost every troubleshooting path.