نظرة عامة
هذه المسارات تشغّل واجهات متاجر فونديرا. نفس الموجّه مثبت مرتين: بمفتاح API على /api/public، أو بحل المتجر من نطاق الواجهة على /api/ecommerce.
الرابط الأساسيhttps://production.api.vondera.app
مسار المفتاح العامhttps://production.api.vondera.app/api/public
مسار النطاقhttps://production.api.vondera.app/api/ecommerce
غلاف الاستجابة
معظم مسارات JSON تُرجع:
{
"status": 200,
"message": "Success",
"data": {}
}
74 endpoints across 12 resources.
المصادقة
مفتاح التاجر (x-api-key)
- افتح لوحة التاجر ← المطوّرون / مفتاح API.
- انسخ المفتاح العام (يتطلب خطة تدعم apiAccess).
- أرسله في ترويسة x-api-key مع كل طلب على /api/public.
- لا تضع المفتاح في كود الواجهة العامة — استدعه من خادمك.
مسار اللوحة: https://dashboard.vondera.app/dashboard/api
فتح إعدادات مفتاح APIرمز العميل JWT
مسارات الحساب تحت /customer تتطلب Authorization: Bearer من التسجيل أو الدخول. السلة والدفع تستخدمان userid / sessionId للزائر.
ترويسات مفيدة
| Header | Description |
|---|
x-api-key | مفتاح المتجر — مطلوب على /api/public |
language / locale | اللغة (الافتراضي en) |
sessionId | جلسة مجهولة للسلة والتحليلات |
userid | هوية السلة (الافتراضي sessionId) |
Authorization | Bearer <JWT العميل> لمسارات الحساب |
x-store-domain / Host | نطاق المتجر — لمسار /api/ecommerce |
القيم الثابتة
قيم نصية مقبولة في الدفع والسلة والثيم.
paymentMethod / gatewayType
CASHCash on deliveryGATEWAYOnline card / payment gatewayDEPOSITPartial deposit then remainder CODMANUALMerchant-configured manual payment (requires manualPaymentMethodId)
pickupMethod
SHIPPINGDeliver to customer address (default)PICKUPCustomer picks up at a store locationEMAILDigital / email fulfillment (when enabled)
Cart line type
PRODUCTStandard product line (default)BUNDLEProduct offer bundle — send bundleId + variants[]GROUP_BUNDLEKit of components — send componentSelections[]
Order payment.paymentStatus
PENDINGAwaiting payment / CODPAIDFully paidPARTIALDeposit paid, remainder outstanding
Store
12Bootstrap, shipping geography, builder settings, feeds, and attribution.
Store bootstrap
Storefront settings, theme, SEO, features, currency, and checkout flags.
الاستعلام
| Name | Type | Required | Description |
|---|
versionId | string | No | Optional website version preview id |
curl --request GET 'https://production.api.vondera.app/api/public/store' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
- 404 Store not found
- 400/404 invalid versionId
GET/store/shipping-countriesShipping countries
List shipping countries for the current storefront market (global market stores).
curl --request GET 'https://production.api.vondera.app/api/public/store/shipping-countries' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Cities / zones
City/zone list used for checkout shipping.
الاستعلام
| Name | Type | Required | Description |
|---|
country | string | No | Override market country code |
curl --request GET 'https://production.api.vondera.app/api/public/store/zones' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
GET/store/shipping-optionsShipping options
Available shipping options for a market/country.
الاستعلام
| Name | Type | Required | Description |
|---|
country | string | No | Market country code |
curl --request GET 'https://production.api.vondera.app/api/public/store/shipping-options' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
GET/store/pickup-locationsPickup locations
Active pickup locations for PICKUP checkout.
curl --request GET 'https://production.api.vondera.app/api/public/store/pickup-locations' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Courier sub-zones
Courier sub-zones for a city when showCourierZonesInCheckout is enabled.
الاستعلام
| Name | Type | Required | Description |
|---|
cityId | string | Yes | City / zone id |
curl --request GET 'https://production.api.vondera.app/api/public/store/subzones' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
- 400 when courier zones disabled or invalid city
GET/store/builder/settingsBuilder settings
Published (or draft) home-builder page sections for the storefront.
الاستعلام
| Name | Type | Required | Description |
|---|
withDraft | boolean | No | Include draft when true |
versionId | string | No | Website version preview id |
curl --request GET 'https://production.api.vondera.app/api/public/store/builder/settings' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
GET/store/sitemaptext/xmlXML sitemap
XML sitemap of products and pages for SEO.
curl --request GET 'https://production.api.vondera.app/api/public/store/sitemap' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
JSON catalog feed
JSON product catalog feed.
curl --request GET 'https://production.api.vondera.app/api/public/store/catalog' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
GET/store/catalog.csvtext/csvCSV catalog feed
CSV product catalog feed (legacy path).
curl --request GET 'https://production.api.vondera.app/api/public/store/catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Record referral / UTM
Record referral / UTM attribution for the browser session.
الترويسات
| Name | Type | Required | Description |
|---|
sessionId | string | No | Anonymous session id (also accepted as sessionid) |
حقول الجسم
| Name | Type | Required | Description |
|---|
referrer | string | No | — |
source | string | No | — |
medium | string | No | — |
campaign | string | No | — |
content | string | No | — |
term | string | No | — |
landing | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/store/referral' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"referrer":"https://google.com","source":"google","medium":"cpc","campaign":"spring"}'
Record storefront visit
Analytics visit ping for the storefront session.
الترويسات
| Name | Type | Required | Description |
|---|
sessionId | string | No | Anonymous session id |
curl --request POST 'https://production.api.vondera.app/api/public/store/visit' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{}'
Products
12Catalog listing, PDP lookup, reviews, Q&A, and view tracking.
List products
Paginated visible products. Supports search/filters passed through to the catalog DAO / Typesense.
الاستعلام
| Name | Type | Required | Description |
|---|
limit | number | Yes | Page size |
pageNo | number|string | No | Page number or cursor token |
page | number|string | No | Alias of pageNo |
fullData | boolean | No | true for full ProductMapper.toEcommerce |
cursorMode | string | No | Cursor pagination mode when enabled |
categoryId | string | No | — |
subCategoryId | string | No | — |
q | string | No | Search query (alias: search) |
sortBy | string | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/products' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
- 400 validation (missing limit)
List products (cursor v2)
Cursor-based product list using pageKey.
الاستعلام
| Name | Type | Required | Description |
|---|
limit | number | Yes | — |
pageKey | string | No | — |
fullData | boolean | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/products/v2/' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Featured products
Featured products for home rails.
الاستعلام
| Name | Type | Required | Description |
|---|
fullData | boolean | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/products/featured' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
GET/products/single/slug/:slugProduct by slug
Full product detail by URL slug.
الاستعلام
| Name | Type | Required | Description |
|---|
variantId | string | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/products/single/slug/{slug}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
GET/products/single/resolve/:paramResolve product
Resolve a product by id or slug in one path param.
الاستعلام
| Name | Type | Required | Description |
|---|
variantId | string | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/products/single/resolve/{param}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Product by id
Full product detail by id.
الاستعلام
| Name | Type | Required | Description |
|---|
variantId | string | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/products/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Products by ids
Batch fetch products by ids (order preserved; missing → null).
حقول الجسم
| Name | Type | Required | Description |
|---|
ids | string[] | Yes | — |
fullData | boolean | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/products/by-ids' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"ids":["Product_abc","Product_def"],"fullData":false}'
الأخطاء
POST/products/:productId/viewRecord product view
Record a product view analytics event.
الترويسات
| Name | Type | Required | Description |
|---|
x-event-id | string | No | Client event idempotency key |
curl --request POST 'https://production.api.vondera.app/api/public/products/{productId}/view' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{}'
الأخطاء
POST/products/:productId/reviewSubmit review
Submit a product review (images optional as base64).
حقول الجسم
| Name | Type | Required | Description |
|---|
rating | number | Yes | — |
name | string | Yes | — |
email | string | Yes | — |
review | string | No | — |
imagesBase64 | string[] | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/products/{productId}/review' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"rating":5,"name":"Sara","email":"sara@example.com","review":"Great quality"}'
الأخطاء
- 400 validation
- 404 product
GET/products/:productId/reviewList reviews
Paginated product reviews.
الاستعلام
| Name | Type | Required | Description |
|---|
pageNo | number | Yes | — |
limit | number | Yes | — |
sort | string | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/products/{productId}/review' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
POST/products/:productId/qaAsk a question
Submit a product Q&A question.
حقول الجسم
| Name | Type | Required | Description |
|---|
question | string | Yes | — |
name | string | Yes | — |
email | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/products/{productId}/qa' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"question":"Is this waterproof?","name":"Omar","email":"omar@example.com"}'
GET/products/:productId/qaList Q&A
Paginated product questions & answers.
الاستعلام
| Name | Type | Required | Description |
|---|
pageNo | number | Yes | — |
limit | number | Yes | — |
curl --request GET 'https://production.api.vondera.app/api/public/products/{productId}/qa' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Categories
2Visible category tree for storefront navigation.
List categories
All visible categories (localized) with subcategories.
curl --request GET 'https://production.api.vondera.app/api/public/category' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Category by id
Single category by id.
curl --request GET 'https://production.api.vondera.app/api/public/category/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Cart
9Session cart keyed by userid / sessionId headers.
Get cart
Current session cart. Empty cart if no userId.
الترويسات
| Name | Type | Required | Description |
|---|
userid | string | No | Cart identity (defaults to sessionId) |
sessionId | string | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Cart count
Cart line-item count.
curl --request GET 'https://production.api.vondera.app/api/public/cart/count' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Cart suggestions
Cross-sell / cart suggestions for the current cart.
curl --request GET 'https://production.api.vondera.app/api/public/cart/suggestions' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Add to cart
Add a PRODUCT, BUNDLE, or GROUP_BUNDLE line.
حقول الجسم
| Name | Type | Required | Description |
|---|
productId | string | Yes | — |
quantity | number | No | Required for PRODUCT (> 0) |
variantId | string | No | — |
type | PRODUCT|BUNDLE|GROUP_BUNDLE | No | Default PRODUCT |
bundleId | string | No | Required for BUNDLE |
variants | string[] | No | Variant ids for BUNDLE lines |
componentSelections | object[] | No | [{ componentId, variantId }] for GROUP_BUNDLE |
customizationResponses | object[] | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","quantity":1,"variantId":"var_1","type":"PRODUCT"}'
الأخطاء
- 400 invalid productId / quantity / bundle mismatch
- 404 Product/Bundle not found
Update cart line
Update quantity / selection for an existing cart line.
حقول الجسم
| Name | Type | Required | Description |
|---|
productId | string | Yes | — |
quantity | number | Yes | — |
variantId | string | No | — |
type | PRODUCT|BUNDLE|GROUP_BUNDLE | No | — |
variants | string[] | No | — |
bundleId | string | No | — |
customizationResponses | object[] | No | — |
curl --request PUT 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","quantity":2,"variantId":"var_1","type":"PRODUCT"}'
الأخطاء
Remove cart line
Remove one cart line.
حقول الجسم
| Name | Type | Required | Description |
|---|
productId | string | Yes | — |
variantId | string | No | — |
type | PRODUCT|BUNDLE|GROUP_BUNDLE | No | — |
variants | string[] | No | — |
bundleId | string | No | — |
customizationResponses | object[] | No | — |
curl --request DELETE 'https://production.api.vondera.app/api/public/cart/item' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","variantId":"var_1","type":"PRODUCT"}'
Clear cart
Clear the entire cart for the session user.
curl --request DELETE 'https://production.api.vondera.app/api/public/cart' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Record cart view
Analytics event when the cart UI is opened.
الترويسات
| Name | Type | Required | Description |
|---|
x-event-id | string | No | — |
حقول الجسم
| Name | Type | Required | Description |
|---|
eventId | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/cart/view' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{}'
Funnel abandon cart
Record an abandoned funnel checkout cart for recovery.
حقول الجسم
| Name | Type | Required | Description |
|---|
productId | string | Yes | — |
quantity | number | No | — |
variantId | string | No | — |
type | PRODUCT|BUNDLE|GROUP_BUNDLE | No | — |
variants | string[] | No | — |
bundleId | string | No | — |
componentSelections | object[] | No | — |
customizationResponses | object[] | No | — |
funnelId | string | No | — |
funnelLinkId | string | No | — |
funnelName | string | No | — |
schemaVersion | number | No | — |
isVersion2 | boolean | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/cart/funnel-abandon' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc","quantity":1,"funnelLinkId":"summer-offer","funnelId":"fun_1"}'
Orders & Checkout
6Payment methods, pricing, discount validation, and order creation.
GET/orders/payment-methodsPayment methods
Active payment methods for the checkout country.
الاستعلام
| Name | Type | Required | Description |
|---|
shippingCountry | string | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/orders/payment-methods' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
- 400 unsupported shipping country
POST/orders/discount/validateValidate discount
Validate a promo code against cart products.
حقول الجسم
| Name | Type | Required | Description |
|---|
code | string | Yes | — |
products | object[] | No | Cart lines with id, quantity, … |
cityId | string | No | — |
pickupMethod | SHIPPING|PICKUP | No | — |
shippingCountry | string | No | — |
shippingOptionId | string | No | — |
subZoneId | string | No | — |
gatewayType | CASH|GATEWAY|DEPOSIT|MANUAL | No | — |
gatewayId | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/orders/discount/validate' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"code":"SAVE10","products":[{"id":"Product_abc","quantity":1,"variantId":"var_1"}],"gatewayType":"CASH","pickupMethod":"SHIPPING"}'
Calculate price
Calculate items, shipping, taxes, gateway fees, and discounts.
حقول الجسم
| Name | Type | Required | Description |
|---|
products | array | Yes | — |
discountCode | string | Yes | May be empty string |
cityId | string | No | — |
pickupMethod | SHIPPING|PICKUP | No | — |
gatewayType | CASH|GATEWAY|DEPOSIT|MANUAL | No | — |
gatewayId | string | No | — |
shippingOptionId | string | No | — |
shippingCountry | string | No | — |
subZoneId | string | No | — |
skipAutoApply | boolean | No | — |
funnelId | string | No | — |
funnelLinkId | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/orders/price' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"products":[{"id":"Product_abc","quantity":1,"variantId":"var_1","type":"PRODUCT"}],"discountCode":"","cityId":"cairo","pickupMethod":"SHIPPING","gatewayType":"CASH"}'
الأخطاء
- 400 Invalid city / shipping country
POST/orders/init-checkoutInit checkout
Fire checkout-initiated analytics. Body shape matches /orders/price.
curl --request POST 'https://production.api.vondera.app/api/public/orders/init-checkout' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"products":[{"id":"Product_abc","quantity":1}],"discountCode":"","pickupMethod":"SHIPPING","gatewayType":"CASH"}'
الأخطاء
- 400 Invalid city / shipping country
Create order
Create a checkout order. Rate-limited per IP. Captcha may be required for CASH/MANUAL.
حقول الجسم
| Name | Type | Required | Description |
|---|
name | string | Yes | — |
phone | string | Yes | — |
email | string | Yes | — |
notes | string | Yes | May be empty string |
paymentMethod | CASH|GATEWAY|DEPOSIT|MANUAL | Yes | — |
discountCode | string | Yes | May be empty string |
products | array | Yes | — |
otherPhone | string | No | — |
address | string | No | — |
city | string | No | — |
cityId | string | No | — |
countryCode | string | No | — |
pickupMethod | SHIPPING|PICKUP|EMAIL | No | — |
courierSubZoneId | string | No | — |
subZoneId | string | No | — |
subZoneName | string | No | — |
shippingOptionId | string | No | — |
pickupLocationId | string | No | — |
shippingCountry | string | No | — |
manualPaymentMethodId | string | No | — |
receiptImage | string | No | — |
turnstileToken | string | No | Required when store.requireCheckoutCaptcha |
cloudFlareToken | string | No | Alias of turnstileToken |
skipAutoApply | boolean | No | — |
funnelId | string | No | — |
funnelLinkId | string | No | — |
funnelName | string | No | — |
templateId | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/orders' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"name":"Ahmed Hassan","phone":"01012345678","email":"ahmed@example.com","notes":"","paymentMethod":"CASH","discountCode":"","products":[{"id":"Product_abc","quantity":1,"variantId":"var_1","type":"PRODUCT"}],"address":"12 Nile St","cityId":"cairo","countryCode":"+20","pickupMethod":"SHIPPING"}'
الأخطاء
- 400 validation / captcha / stock / payment method
- 429 rate limit
Get order
Fetch an order by id (host-market scoped). Customer PII may be masked.
curl --request GET 'https://production.api.vondera.app/api/public/orders/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Customer Account
13Storefront customer auth, profile, orders history, and wishlist. JWT routes need Authorization: Bearer.
Sign up
Register a storefront customer. Turnstile may be required.
حقول الجسم
| Name | Type | Required | Description |
|---|
name | string | Yes | — |
email | string | Yes | — |
password | string | Yes | Min 6 characters |
phone | string | Yes | — |
address | string | No | — |
gov | string | No | — |
countryCode | string | No | — |
newsLetterEnabled | boolean | No | — |
cloudFlareToken | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/customer/signup' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"name":"Sara Ali","email":"sara@example.com","password":"secret12","phone":"01098765432","newsLetterEnabled":true}'
الأخطاء
- 400 invalid email/phone/name/password
- 400 email/phone already exists
- 400 captcha failure
Log in
Customer login. Migrates guest cart into the customer id.
حقول الجسم
| Name | Type | Required | Description |
|---|
email | string | Yes | — |
password | string | Yes | — |
curl --request POST 'https://production.api.vondera.app/api/public/customer/login' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"sara@example.com","password":"secret12"}'
الأخطاء
- 401 Invalid Email or Password
Current customer
Profile for the authenticated customer (password never returned).
curl --request GET 'https://production.api.vondera.app/api/public/customer' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'
الأخطاء
PUT/customer/updateCustomer JWTUpdate profile
Update profile fields.
حقول الجسم
| Name | Type | Required | Description |
|---|
name | string | No | — |
email | string | No | — |
phone | string | No | — |
address | string | No | — |
gov | string | No | — |
countryCode | string | No | — |
curl --request PUT 'https://production.api.vondera.app/api/public/customer/update' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"name":"Sara Ali","phone":"01098765432","address":"15 Corniche"}'
الأخطاء
PUT/customer/change-passwordCustomer JWTChange password
Change password with current password verification.
حقول الجسم
| Name | Type | Required | Description |
|---|
currentPassword | string | Yes | — |
newPassword | string | Yes | — |
curl --request PUT 'https://production.api.vondera.app/api/public/customer/change-password' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"currentPassword":"secret12","newPassword":"newSecret99"}'
الأخطاء
- 400 wrong current password
Forgot password
Request password-reset email (always 200 to avoid enumeration).
حقول الجسم
| Name | Type | Required | Description |
|---|
email | string | Yes | — |
curl --request POST 'https://production.api.vondera.app/api/public/customer/forget' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"sara@example.com"}'
POST/customer/reset-passwordReset password
Reset password with the email token.
حقول الجسم
| Name | Type | Required | Description |
|---|
token | string | Yes | — |
newPassword | string | Yes | — |
curl --request POST 'https://production.api.vondera.app/api/public/customer/reset-password' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"reset_token","newPassword":"newSecret99"}'
الأخطاء
- 400 invalid/expired token
DELETE/customerCustomer JWTDelete account
Soft-delete account credentials (clears email/password).
curl --request DELETE 'https://production.api.vondera.app/api/public/customer' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'
GET/customer/ordersCustomer JWTCustomer orders
Logged-in customer order history.
الاستعلام
| Name | Type | Required | Description |
|---|
pageNo | number | No | — |
limit | number | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/customer/orders' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'
GET/customer/wishlistCustomer JWTWishlist
Wishlist products.
الاستعلام
| Name | Type | Required | Description |
|---|
page | number | No | — |
limit | number | No | — |
curl --request GET 'https://production.api.vondera.app/api/public/customer/wishlist' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en'
POST/customer/wishlistCustomer JWTAdd to wishlist
Add a product to the wishlist.
حقول الجسم
| Name | Type | Required | Description |
|---|
productId | string | Yes | — |
curl --request POST 'https://production.api.vondera.app/api/public/customer/wishlist' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc"}'
الأخطاء
DELETE/customer/wishlistCustomer JWTRemove from wishlist
Remove a product from the wishlist.
حقول الجسم
| Name | Type | Required | Description |
|---|
productId | string | Yes | — |
curl --request DELETE 'https://production.api.vondera.app/api/public/customer/wishlist' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'Authorization: Bearer CUSTOMER_JWT' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"productId":"Product_abc"}'
Marketing unsubscribe (token)
Unsubscribe from marketing using an email token (no session auth).
حقول الجسم
| Name | Type | Required | Description |
|---|
unSubscribeToken | string | Yes | — |
curl --request PUT 'https://production.api.vondera.app/api/public/customer/unsubscribe' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"unSubscribeToken":"token_…"}'
الأخطاء
Custom Pages
2CMS pages such as policies and about (plan customPagesAccess).
List custom pages
List custom CMS pages (localized).
curl --request GET 'https://production.api.vondera.app/api/public/custompages' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
GET/custompages/single/:idCustom page by id/slug
Single custom page by id or link slug.
curl --request GET 'https://production.api.vondera.app/api/public/custompages/single/{id}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Blogs
3Store blog index and live posts (plan blogs access).
List blogs
Ensure default blog and return blogs metadata.
curl --request GET 'https://production.api.vondera.app/api/public/blogs' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
List posts
Live blog posts (paginated via limit/offset).
الاستعلام
| Name | Type | Required | Description |
|---|
limit | number | No | 1–50, default 20 |
offset | number | No | Default 0 |
curl --request GET 'https://production.api.vondera.app/api/public/blogs/posts' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Post by slug
Single live blog post with SEO payload.
curl --request GET 'https://production.api.vondera.app/api/public/blogs/posts/{slug}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Funnels
4Sales funnel pages (plan funnelsAccess). 410 when the plan does not support funnels.
Funnel by link
Classic funnel payload by public link id.
curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
- 410 plan does not support funnels
- 404
Funnel v2
Funnel v2 payload.
curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}/v2' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Funnel page
Rendered funnel page document for storefront hosting.
curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}/page' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
GET/funnels/:linkId/bootstrapFunnel bootstrap
Checkout bootstrap for a funnel — product, payments, and settings.
curl --request GET 'https://production.api.vondera.app/api/public/funnels/{linkId}/bootstrap' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
الأخطاء
Marketing
6Newsletter subscribe, popup leads, and checkout contact capture.
Subscribe
Subscribe an email to the store marketing list (consent required).
حقول الجسم
| Name | Type | Required | Description |
|---|
email | string | Yes | — |
consent | boolean | Yes | — |
source | string | No | Default footer |
phone | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/marketing/subscribe' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"fan@example.com","consent":true,"source":"footer"}'
الأخطاء
- 400 Invalid email
- 400 Consent is required
PUT/marketing/unsubscribeUnsubscribe
Unsubscribe via token (preferred) or email.
حقول الجسم
| Name | Type | Required | Description |
|---|
email | string | No | — |
token | string | No | — |
curl --request PUT 'https://production.api.vondera.app/api/public/marketing/unsubscribe' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"unsub_token"}'
GET/marketing/unsubscribe-linktext/htmlOne-click unsubscribe (HTML)
Browser / List-Unsubscribe link. Returns HTML, not the JSON envelope.
الاستعلام
| Name | Type | Required | Description |
|---|
token | string | Yes | — |
curl --request GET 'https://production.api.vondera.app/api/public/marketing/unsubscribe-link' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
POST/marketing/unsubscribe-linkOne-click unsubscribe (POST)
RFC 8058 one-click List-Unsubscribe POST.
الاستعلام
| Name | Type | Required | Description |
|---|
token | string | No | — |
حقول الجسم
| Name | Type | Required | Description |
|---|
token | string | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/marketing/unsubscribe-link' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"unsub_token"}'
POST/marketing/checkout-contactCheckout contact
Progressive checkout contact capture (blur/debounce — does not create an order).
حقول الجسم
| Name | Type | Required | Description |
|---|
email | string | No | — |
phone | string | No | — |
consent | boolean | No | — |
funnelId | string | No | — |
funnelLinkId | string | No | — |
funnelName | string | No | — |
schemaVersion | number | No | — |
isVersion2 | boolean | No | — |
curl --request POST 'https://production.api.vondera.app/api/public/marketing/checkout-contact' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"email":"shopper@example.com","phone":"01012345678","consent":true}'
Catalog Feeds
3CSV feeds for Meta, TikTok, and Google Merchant Center.
GET/catalogs/meta-catalog.csvtext/csvMeta catalog CSV
Meta / Facebook product catalog CSV feed.
curl --request GET 'https://production.api.vondera.app/api/public/catalogs/meta-catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
GET/catalogs/tiktok-catalog.csvtext/csvTikTok catalog CSV
TikTok product catalog CSV feed.
curl --request GET 'https://production.api.vondera.app/api/public/catalogs/tiktok-catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
GET/catalogs/google-catalog.csvtext/csvGoogle catalog CSV
Google Merchant Center CSV feed.
curl --request GET 'https://production.api.vondera.app/api/public/catalogs/google-catalog.csv' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en'
Password Unlock
2Host-scoped unlock when the storefront has password protection enabled. Mounted at /storefront/*.
Unlock storefront
Verify password and set unlock cookie / return token.
حقول الجسم
| Name | Type | Required | Description |
|---|
password | string | Yes | — |
curl --request POST 'https://production.api.vondera.app/api/public/storefront/unlock' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"password":"store-password"}'
الأخطاء
- 400 Password protection is not enabled
- 401 Incorrect password
POST/storefront/unlock/verifyVerify unlock token
Verify an unlock token when the storefront host cannot verify HMAC locally.
حقول الجسم
| Name | Type | Required | Description |
|---|
token | string | Yes | — |
curl --request POST 'https://production.api.vondera.app/api/public/storefront/unlock/verify' \
--header 'x-api-key: YOUR_API_KEY' \
--header 'language: en' \
--header 'Content-Type: application/json' \
--data '{"token":"…"}'