# `mozaik.channel-test` — Test pazaryeri Platform içi test pazaryeri — dış bağlantı yapmaz; kanal altyapısının doğrulama ve tatbikat sağlayıcısı. - version **1.0.0** · publisher `mozaik` · runtime `platform` · listed: false - provider kind: `channel` - capabilities: `orders`, `stock`, `price`, `catalogPush`, `catalogPull`, `claims`, `questions`, `finance`, `labels: ZPL`, `packageOps: status/unsupplied/split/invoice/cargo`, `buybox`, `unlock`, `webhooks`, `testMode` - scopes: `catalog:read`, `catalog:write`, `orders:read`, `orders:write` - PII: — Test siparişlerinin alıcı bilgisi pazaryerinden Mozaik'e aktarılır; dışarıya veri gönderilmez. - admin panels: — · actions: — ## Secrets | key | label (TR) | required | sandbox prefix | |---|---|---|---| | `channel.testmp.webhook_key` | Webhook anahtarı | no | — | Secrets are write-only and owner-entered — see [Tokens](/reference/tokens). ## Provider-driven inbound Webhooks and jobs are the platform's to ingest and schedule — **never callable by agents**. | kind | name | note | |---|---|---| | webhook | `siparis` (`/v1/ext/mozaik.channel-test/wh/siparis/{storeId}`) | provider-driven ingestion (ext_events); not callable by agents | ## Config schema ```json { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "mode": { "default": "test", "type": "string", "const": "test" }, "sellerRef": { "default": "test-seller", "type": "string", "maxLength": 40 }, "batchMode": { "default": "immediate", "type": "string", "enum": [ "immediate", "batch" ] }, "faults": { "default": "", "type": "string", "maxLength": 200 }, "webhookId": { "type": "string", "maxLength": 64 } }, "additionalProperties": false } ``` ## Storefront (themes) No storefront contributions — this extension never draws on the storefront. ## For agents In-memory marketplace used by the channel substrate matrix and live drills; no external calls. Every op the real marketplaces expose is exercised here first. ### Setup 1. **Install** — [`extension.install`](/reference/commands/extension.install) with `{"extensionId": "mozaik.channel-test"}` and the consent block. 2. **Enable** — [`extension.enable`](/reference/commands/extension.enable). 3. **Verify** — run op `sync-stock` via [`channel.sync.now`](/reference/routes/channel.sync.now). Push once; listings mirror what the fake marketplace holds. ### Operations | op | via | effects | proposal-only | requires | |---|---|---|---|---| | `answer` | [`channel.questions.answer`](/reference/routes/channel.questions.answer) | `external` | ✓ | enabled · capability `questions` | | `buybox` | [`channel.buybox.get`](/reference/routes/channel.buybox.get) | `read` | | enabled · capability `buybox` | | `claim-act` | [`channel.claims.act`](/reference/routes/channel.claims.act) | `external` | ✓ | enabled · capability `claims` | | `claims` | [`channel.claims.list`](/reference/routes/channel.claims.list) | `read` | | enabled · capability `claims` | | `label` | [`channel.package.label`](/reference/routes/channel.package.label) | `external` | | enabled · capability `labels` | | `list-remote` | [`channel.remote.products`](/reference/routes/channel.remote.products) | `read` | | enabled · capability `catalogPull` | | `package-cargo` | [`channel.package.op`](/reference/routes/channel.package.op) | `external` | ✓ | enabled · capability `packageOps` | | `package-invoice` | [`channel.package.op`](/reference/routes/channel.package.op) | `external` | ✓ | enabled · capability `packageOps` | | `package-split` | [`channel.package.op`](/reference/routes/channel.package.op) | `external` | ✓ | enabled · capability `packageOps` | | `package-status` | [`channel.package.op`](/reference/routes/channel.package.op) | `external` | ✓ | enabled · capability `packageOps` | | `package-unsupplied` | [`channel.package.op`](/reference/routes/channel.package.op) | `external` | ✓ | enabled · capability `packageOps` | | `pull-catalog` | [`channel.catalog.pull`](/reference/routes/channel.catalog.pull) | `external` | ✓ | enabled · capability `catalogPull` | | `pull-orders` | [`channel.sync.now`](/reference/routes/channel.sync.now) | `external` | ✓ | enabled · capability `orders` | | `push-catalog` | [`channel.catalog.push`](/reference/routes/channel.catalog.push) | `external` | ✓ | enabled · capability `catalogPush` | | `questions` | [`channel.questions.list`](/reference/routes/channel.questions.list) | `read` | | enabled · capability `questions` | | `set-listing-price` | [`channel.listing.set`](/reference/commands/channel.listing.set) | `write` | ✓ | enabled · capability `price` | | `settlements` | [`channel.finance.list`](/reference/routes/channel.finance.list) | `read` | | enabled · capability `finance` | | `sweep-finance` | [`channel.sync.now`](/reference/routes/channel.sync.now) | `external` | ✓ | enabled · capability `finance` | | `sync-price` | [`channel.sync.now`](/reference/routes/channel.sync.now) | `external` | ✓ | enabled · capability `price` | | `sync-stock` | [`channel.sync.now`](/reference/routes/channel.sync.now) | `external` | ✓ | enabled · capability `stock` | | `unlock` | [`channel.unlock`](/reference/routes/channel.unlock) | `external` | ✓ | enabled · capability `unlock` | [`extensions.ops.get`](/reference/routes/extensions.ops.get) (`GET /v1/extensions/mozaik.channel-test/ops`) returns this table with live readiness — exactly what blocks each op right now (`missing_secret:`, `missing_config:`, `not_enabled`, …). ### Lifecycle [`extension.install`](/reference/commands/extension.install) → [`extension.configure`](/reference/commands/extension.configure) → [`extension.enable`](/reference/commands/extension.enable) → [`extension.disable`](/reference/commands/extension.disable) → [`extension.uninstall`](/reference/commands/extension.uninstall)