Skip to main content

Security model

DirectionAuthDetail
Inbound (you β†’ Vambe)HMAC-SHA256Sign {timestamp}.{rawBody} with your signing_secret; send x-vambe-signature + x-vambe-timestamp. 5-minute freshness window.
Outbound (Vambe β†’ you)Bearer tokenVambe sends Authorization: Bearer {merchant access_token} + X-Vambe-Store-Id.
OAuth stateEncryptedThe state parameter is encrypted by Vambe; echo it back unchanged.
Secrets at restAES-256Your client_secret and the app signing_secret are encrypted at rest.
Rotate your signing secret anytime with POST /api/ecommerce-app/{id}/rotate-secret. The new secret is returned once; update your webhook signer before the old one stops being used.

Outbound URL requirements

  • HTTPS only.
  • Must resolve to a public IP β€” private, loopback and link-local addresses are blocked (SSRF protection).
  • Respond within ~15 seconds.

App lifecycle

StateVisible toEditableReceives events
draftCreatorYesYes (creator’s own installs)
pending_reviewCreatorNoYes
approvedAll accountsNoYes
rejectedCreatorYes (β†’ draft)No
suspendedNobodyNoNo

Event types

Inbound (capabilities.inbound_events)

EventEndpoint
orderPOST /api/public/apps/{appId}/events/order
checkoutPOST /api/public/apps/{appId}/events/checkout
fulfillmentPOST /api/public/apps/{appId}/events/fulfillment
productPOST /api/public/apps/{appId}/events/product and …/product/delete

Outbound (capabilities.outbound)

CapabilityTool it powers
order_getLive order status (β€œwhere is my order?”)
stock_getStock by location
checkout_createCheckout link generation
products_listReserved β€” catalog pull (coordinate with Vambe)

Supported currencies

ISO codes accepted in currency / total_price / price fields:
CLP, USD, MXN, BRL, UF, ARS, COP, UYU, PEN, EUR, HNL, BOB, PYG,
GTQ, NIO, PAB, CRC, DOP, VES, BZD, SRD, GYD

Operational notes

  • Idempotency. Orders, checkouts, fulfillments and products upsert on their external id β€” safe to retry. Always retry on non-2xx; webhooks may be redelivered.
  • Product sync is incremental. A product webhook only affects the product it carries; it never deletes the rest of your catalog.
  • Multi-store resolution depends on account_info_url populating external_id. Without it, only single-installation apps resolve automatically.
  • Graceful degradation. If an outbound capability is missing, slow, or errors, the corresponding assistant tool simply returns no data β€” it does not break the conversation.

Endpoint cheat-sheet

MethodPathAuthWho
POST/api/ecommerce-appx-api-keyProvider
PATCH/api/ecommerce-app/{id}x-api-keyProvider
POST/api/ecommerce-app/{id}/submitx-api-keyProvider
POST/api/ecommerce-app/{id}/rotate-secretx-api-keyProvider
GET/api/ecommerce-app/availablex-api-keyMerchant
GET/api/public/apps/oauth/callbackOAuth stateProvider redirect
POST/api/public/apps/{appId}/events/{event}HMACProvider