Wocart
Wocart API

Apps

Server

List the store's Apps

GET
https://api.wocart.store
/api/apps
X-API-Key (header)

Every App the caller may see, with where it stands for this store.

List the store's Apps › Responses

200

The Apps, in catalog order

success
​boolean · required
​App[] · required

Get the Meta App

GET
https://api.wocart.store
/api/apps/meta
X-API-Key (header)

The store's Meta pixel and conversions setup, or null when the Meta App is not set up. The access token is never returned — only a masked hint.

Get the Meta App › Responses

200

The Meta App's setup (null when not set up)

success
​boolean · required
data
​StorePixelConfig · required

Meta pixel tracking configuration for server-side conversion events


Set up the Meta App

PUT
https://api.wocart.store
/api/apps/meta
X-API-Key (header)

Sets up the Meta App, or changes its setup. conversionEvent is required — the merchant chooses whether conversions optimize for Lead (sent at order placement, deduplicated with the browser pixel) or a Purchase stage. An empty accessToken keeps the stored token; omitting perPageTrackingEnabled keeps the stored switch.

Set up the Meta App › Request Body

pixelId
​string · minLength: 1 · required
conversionEvent
​string · enum · required
Enum values:
Purchase
Purchase_Confirmed
Purchase_Delivered
Lead
adAccountName
​string | null · maxLength: 200
accessToken
​string

Meta access token. Empty string keeps the stored token (it is never sent back).

Default:
testEventCode
​string | null
testMode
​boolean
enabled
​boolean
perPageTrackingEnabled
​boolean

Master switch for per-landing-page pixels. Omitted keeps the stored value — an unrelated edit must not return every landing page to the store pixel.

Set up the Meta App › Responses

200

The Meta App's setup

success
​boolean · required
data
​StorePixelConfig · required

Meta pixel tracking configuration for server-side conversion events


Remove the meta App

DELETE
https://api.wocart.store
/api/apps/meta
X-API-Key (header)

Forgets the App's setup and every key it holds, as if it had never been set up. Its Built-in Consumers stay, with nothing to send.

Remove the meta App › Responses

200

Removed

success
​boolean · required
message
​string · required

Get the DZVerify App

GET
https://api.wocart.store
/api/apps/dzverify
X-API-Key (header)

The store's DZVerify setup, or null when it is not set up (no phone check). The API key is never returned — only a masked hint.

Get the DZVerify App › Responses

200

The DZVerify App's setup (null when not set up)

success
​boolean · required
data
​object | null · required

Set up the DZVerify App

PUT
https://api.wocart.store
/api/apps/dzverify
X-API-Key (header)

Sets up DZVerify, or changes its setup. An empty apiKey keeps the stored key; with no key stored or sent, it is refused.

Set up the DZVerify App › Request Body

apiKey
​string

dzverify API key. Empty string keeps the stored key (it is never sent back).

Default:
language
​string · enum
Enum values:
en
fr
ar
enabled
​boolean

Set up the DZVerify App › Responses

The DZVerify App's setup

success
​boolean · required
data
​object | null · required

Remove the dzverify App

DELETE
https://api.wocart.store
/api/apps/dzverify
X-API-Key (header)

Forgets the App's setup and every key it holds, as if it had never been set up. Its Built-in Consumers stay, with nothing to send.

Remove the dzverify App › Responses

200

Removed

success
​boolean · required
message
​string · required

Get the Turnstile App

GET
https://api.wocart.store
/api/apps/turnstile
X-API-Key (header)

The store's Turnstile setup, or null when it is not set up (no bot check). The secret key is never returned — only a masked hint.

Get the Turnstile App › Responses

200

The Turnstile App's setup (null when not set up)

success
​boolean · required
data
​object | null · required

Set up the Turnstile App

PUT
https://api.wocart.store
/api/apps/turnstile
X-API-Key (header)

Sets up Turnstile, or changes its setup. An empty siteKey or secretKey keeps the stored one; with either missing altogether, it is refused.

Set up the Turnstile App › Request Body

siteKey
​string

Public Turnstile site key. Empty string keeps the stored one.

Default:
secretKey
​string

Siteverify secret key. Empty string keeps the stored one (it is never sent back).

Default:
enabled
​boolean

Set up the Turnstile App › Responses

The Turnstile App's setup

success
​boolean · required
data
​object | null · required

Remove the turnstile App

DELETE
https://api.wocart.store
/api/apps/turnstile
X-API-Key (header)

Forgets the App's setup and every key it holds, as if it had never been set up. Its Built-in Consumers stay, with nothing to send.

Remove the turnstile App › Responses

200

Removed

success
​boolean · required
message
​string · required

Get the Sendili App

GET
https://api.wocart.store
/api/apps/sendili
X-API-Key (header)

The store's Sendili setup, or null when it is not set up (the store sends no email). The API key is never returned — only a masked hint.

Get the Sendili App › Responses

200

The Sendili App's setup (null when not set up)

success
​boolean · required
data
​object | null · required

Set up the Sendili App

PUT
https://api.wocart.store
/api/apps/sendili
X-API-Key (header)

Sets up Sendili, or changes its setup. An empty apiKey keeps the stored key; with no key stored or sent, it is refused.

Set up the Sendili App › Request Body

fromEmail
​string · email · required

Sender address — its domain must be verified in the Sendili workspace.

apiKey
​string

Sendili API key. Empty string keeps the stored key (it is never sent back).

Default:
fromName
​string | null · maxLength: 200

Optional sender display name (e.g. the store name).

enabled
​boolean

Set up the Sendili App › Responses

The Sendili App's setup

success
​boolean · required
data
​object | null · required

Remove the sendili App

DELETE
https://api.wocart.store
/api/apps/sendili
X-API-Key (header)

Forgets the App's setup and every key it holds, as if it had never been set up. Its Built-in Consumers stay, with nothing to send.

Remove the sendili App › Responses

200

Removed

success
​boolean · required
message
​string · required

Get the WhatsApp button App

GET
https://api.wocart.store
/api/apps/whatsapp-button
X-API-Key (header)

The storefront's WhatsApp button. A store that never set it up gets the defaults, which are 'no button' — nothing renders until a number is saved and the button is switched on.

Get the WhatsApp button App › Responses

200

Its setup

success
​boolean · required
​object · required

Set up the WhatsApp button App

PUT
https://api.wocart.store
/api/apps/whatsapp-button
X-API-Key (header)

Replaces the whole configuration — a key you omit takes its default rather than keeping the stored value, so what the screen shows is what the store gets.

The number is normalised here, once. Send it however the merchant typed it; it is stored in E.164 and every reader downstream sees the same string.

Switching the button on without a number is refused (PHONE_REQUIRED): it would leave the merchant looking at an "on" switch and a storefront with no button.

Unknown keys are refused rather than ignored, so a typo cannot silently vanish. Every problem is reported at once in context.issues.

Saving the defaults clears the stored configuration entirely, as removing the App does.

Turning every surface off is accepted — it is a deliberate "paused" state and keeps the merchant's text.

Set up the WhatsApp button App › Request Body

The button's setup. Same shape as WhatsAppButtonConfig, with every key optional — an omitted key takes its default. `phone` is accepted in any form the merchant knows (0551234567, 00213…, +213…, spaced) and stored normalised. Unknown keys, an unreachable number, an avatar that is not an uploaded image's Media Key and every text cap are refused, with each problem listed in `context.issues`.

Set up the WhatsApp button App › Responses

Its setup

success
​boolean · required
​object · required

Remove the whatsapp-button App

DELETE
https://api.wocart.store
/api/apps/whatsapp-button
X-API-Key (header)

Forgets the App's setup and every key it holds, as if it had never been set up. Its Built-in Consumers stay, with nothing to send.

Remove the whatsapp-button App › Responses

200

Removed

success
​boolean · required
message
​string · required

Test the DZVerify key

POST
https://api.wocart.store
/api/apps/dzverify/test
X-API-Key (header)

Checks the stored (or sent) dzverify API key against the provider's quota. A key lacking the usage:read scope is valid with its quota unavailable. A refusal is a 200 with ok: false — the check itself worked.

Test the DZVerify key › Request Body

apiKey
​string

Test this key instead of the stored one (before saving it).

Test the DZVerify key › Responses

What dzverify answered

success
​boolean · required
​object · required

Test the Sendili key

POST
https://api.wocart.store
/api/apps/sendili/test
X-API-Key (header)

Checks the stored (or sent) Sendili API key and answers the verified sending domains for the from-address picker. A refusal is a 200 with ok: false — the check itself worked.

Test the Sendili key › Request Body

apiKey
​string

Test this key instead of the stored one (before saving it).

Test the Sendili key › Responses

What Sendili answered

success
​boolean · required
​object · required

Get a whatsapp button's translations

GET
https://api.wocart.store
/api/apps/whatsapp-button/translations
X-API-Key (header)

The translatable fields in the store's primary language and every stored translation, each flagged outdated when its source text changed after it was written.

Get a whatsapp button's translations › Responses

200

Source and translations

success
​boolean · required
​object · required

Translate a whatsapp button into one language

PATCH
https://api.wocart.store
/api/apps/whatsapp-button/translations
X-API-Key (header)

A JSON Merge Patch (RFC 7396) of one language: a string sets a field, null removes its translation, other fields are untouched. The language must be one the store has added, and not its primary — the resource's own fields hold that.

Translate a whatsapp button into one language › Request Body

locale
​string · enum · required
Enum values:
ar
fr
en
​object · required

Translate a whatsapp button into one language › Responses

200

Source and translations after the patch

success
​boolean · required
​object · required

Get the Telegram App

GET
https://api.wocart.store
/api/apps/telegram
X-API-Key (header)

The store's bot, its connected chat, which events it tells and in which language, or null before a bot was ever saved. The token is never returned — only a masked hint.

Get the Telegram App › Responses

200

The Telegram App (null when never set up)

success
​boolean · required
data
​TelegramApp · required

Change the Telegram App

PATCH
https://api.wocart.store
/api/apps/telegram
X-API-Key (header)

Which events the bot tells, in which language, and on or off. A change of events applies to what is recorded from then on.

Change the Telegram App › Request Body

events
​string[] · minItems: 1

The Event Types the bot tells, one or more

Enum values:
order.created
order.updated
order.confirmed
order.unreachable
order.preparing
order.ready
order.cancelled
order.line_returned
language
​string | null · enum

The language messages are written in; null for the store's primary language

Enum values:
ar
fr
en
enabled
​boolean

On or off. Turning it on needs a connected chat.

Change the Telegram App › Responses

The Telegram App

success
​boolean · required
data
​TelegramApp · required

Remove the telegram App

DELETE
https://api.wocart.store
/api/apps/telegram
X-API-Key (header)

Asks Telegram to stop sending the bot's updates (deleteWebhook), then forgets the bot: its token, its secret and its chat. Its Consumer stays, stopped, with its delivery history. The bot is forgotten even when Telegram cannot be told; updatesStopped: false says so.

Remove the telegram App › Responses

200

Removed

success
​boolean · required
​object · required

Save the Telegram bot

PUT
https://api.wocart.store
/api/apps/telegram/bot
X-API-Key (header)

Checks the token with Telegram (getMe), has Telegram send the bot's updates to this server (setWebhook, with a secret), and only then keeps it. Nothing is kept when either step fails. The same bot keeps its connected chat; another bot needs a chat connected again.

Save the Telegram bot › Request Body

token
​string · minLength: 1 · maxLength: 200 · required

The bot token @BotFather gave. Checked with Telegram before anything is kept; never sent back.

Save the Telegram bot › Responses

The Telegram App

success
​boolean · required
data
​TelegramApp · required

POST
https://api.wocart.store
/api/apps/telegram/pairing
X-API-Key (header)

A t.me link to the bot carrying a one-time code: pressing Start on it connects that private chat. It works once, for 15 minutes, and replaces any link opened before.

Open a Telegram pairing link › Responses

The link and until when it works

success
​boolean · required
​object · required

Send a Telegram test message

POST
https://api.wocart.store
/api/apps/telegram/test
X-API-Key (header)

Sends a test message to the connected chat now and answers what Telegram said. It is recorded nowhere. A refusal is a 200 with delivered: false — the test itself worked.

Send a Telegram test message › Responses

What Telegram answered

success
​boolean · required
​object · required

Get the Reviews App

GET
https://api.wocart.store
/api/apps/reviews
X-API-Key (header)

The store's rules for its customers' reviews: whether it takes them, what a shopper may send, and what publishes without checking.

Get the Reviews App › Responses

200

The review rules

success
​boolean · required
​ReviewRules · required

Set the Reviews App's rules

PUT
https://api.wocart.store
/api/apps/reviews
X-API-Key (header)

Changes the rules given and keeps the others. Reviews already received keep the status they have.

Set the Reviews App's rules › Request Body

enabled
​boolean

When false, reviews are hidden on the storefront and shoppers cannot send one

maxPhotos
​integer · min: 0 · max: 6

Photos a shopper may add to a review, 0 (none) to 6

​

Longest voice note a shopper may add, in seconds (30, 60, 90, 120); null = no voice notes

autoPublish
​string · enum

Which shopper reviews publish without checking: none (off), text-only ones (text_only: anything with a photo or voice note waits), or all

Enum values:
off
text_only
all

Set the Reviews App's rules › Responses

The review rules now in force

success
​boolean · required
​ReviewRules · required