View as Markdown

Other

Category: Admin Base URL: /admin/algolia Authentication: Required Routes: 153 routes documented

Overview#

This section documents 153 API routes for other.

⚠️ These endpoints operate on your live store. POST/PUT/DELETE operations here — including sync, push, resync, and cache operations — modify or delete production data, and some trigger downstream effects such as warehouse orders or customer emails. DELETE operations are generally irreversible. Verify IDs and parameters carefully before calling them from scripts.

Quick Reference#

Method Endpoint Description
POST /admin/algolia POST /admin/algolia/index Index data to Algolia (admin only)
DELETE /admin/algolia DELETE /admin/algolia Delete items from Algolia index
GET /admin/algolia/search GET /admin/algolia/search Search across Algolia indexes for ...
GET /admin/announcements Announcements published so far, newest first, plus the types...
POST /admin/announcements Publish an announcement: POST /admin/announcements. Body: ...
GET /admin/audiences GET /admin/audiences — list audience definitions across ever...
POST /admin/audiences No description
GET /admin/banner-options Choices for the banner editor's two targeting fields. WHY TH...
GET /admin/banners GET /admin/banners?promotion_id=...
POST /admin/banners POST /admin/banners
POST /admin/banners/:id POST /admin/banners/:id — partial update.
DELETE /admin/banners/:id DELETE /admin/banners/:id — soft delete.
POST /admin/bundled-products No description
GET /admin/bundled-products No description
GET /admin/bundled-products/:id No description
PATCH /admin/bundled-products/:id No description
DELETE /admin/bundled-products/:id No description
GET /admin/cancellations No description
GET /admin/cancellations/:id No description
POST /admin/cancellations/:id/apply-offer No description
POST /admin/cancellations/:id/finalize No description
POST /admin/cancellations/:id/reason No description
GET /admin/carts GET /admin/carts?customer_id={id} Returns carts for a given ...
GET /admin/cogs/settings No description
POST /admin/cogs/settings No description
GET /admin/content-page-options Choices for the content-page editor. WHY THIS EXISTS -------...
GET /admin/content-page-settings GET /admin/content-page-settings?store_handle=vnsh
POST /admin/content-page-settings POST /admin/content-page-settings
GET /admin/content-pages GET /admin/content-pages?store_handle=vnsh
POST /admin/content-pages POST /admin/content-pages
PATCH /admin/content-pages/:id PATCH /admin/content-pages/:id — partial update. `store_hand...
DELETE /admin/content-pages/:id DELETE /admin/content-pages/:id — soft delete.
GET /admin/custom No description
GET /admin/customers/:id/notes GET /admin/customers/:id/notes Returns all notes for a custo...
POST /admin/customers/:id/notes POST /admin/customers/:id/notes Add a new note to a customer...
DELETE /admin/customers/:id/notes/:noteId DELETE /admin/customers/:id/notes/:noteId Delete a specific ...
PUT /admin/customers/:id/notes/:noteId PUT /admin/customers/:id/notes/:noteId Update a specific not...
POST /admin/demo-magic-link No description
GET /admin/disputes GET /admin/disputes List locally-mirrored Stripe disputes. B...
POST /admin/disputes/:id/accept POST /admin/disputes/:id/accept Concede the dispute: the cus...
POST /admin/disputes/:id/evidence No description
POST /admin/draft-orders/:id/payment-link Create (or reuse) the payment link for a draft order and opt...
GET /admin/draft-orders/:id/payment-link Read the draft order's stored payment link plus the live sta...
GET /admin/dunning No description
GET /admin/dunning/:id No description
POST /admin/dunning/:id/mark-recovered No description
POST /admin/dunning/:id/mark-unrecovered No description
POST /admin/dunning/:id/retry-now No description
POST /admin/dunning/:id/retry-schedule No description
GET /admin/extensions No description
GET /admin/extensions/:id No description
POST /admin/extensions/:id/toggle No description
GET /admin/extensions/check-enabled GET /admin/extensions/check-enabled?module=marketing Check i...
GET /admin/extensions/check/:name Check if an extension is enabled GET /admin/extensions/check...
GET /admin/free-shipping-report No description
GET /admin/free-shipping-threshold No description
POST /admin/free-shipping-threshold // Update the free-shipping threshold by surgically updating...
POST /admin/funnel-carts/:id/line-items No description
GET /admin/funnels No description
POST /admin/funnels No description
GET /admin/funnels/:id @swagger /admin/funnels/{id}: get: tags: [Funnels] descripti...
POST /admin/funnels/:id @swagger /admin/funnels/{id}: post: tags: [Funnels] descript...
DELETE /admin/funnels/:id @swagger /admin/funnels/{id}: delete: tags: [Funnels] descri...
GET /admin/funnels/analytics @swagger /admin/funnels/analytics: get: tags: [Funnels] desc...
GET /admin/funnels/pages @swagger /admin/funnels/pages: get: tags: [Funnels] descript...
POST /admin/funnels/pages @swagger /admin/funnels/pages: post: tags: [Funnels] descrip...
GET /admin/funnels/stages @swagger /admin/funnels/stages: get: tags: [Funnels] descrip...
POST /admin/funnels/stages @swagger /admin/funnels/stages: post: tags: [Funnels] descri...
PUT /admin/funnels/stages/:id Update an existing funnel stage
DELETE /admin/funnels/stages/:id Delete a funnel stage
POST /admin/funnels/stages/reorder Reorder funnel stages
POST /admin/internal/checkout-context No description
POST /admin/internal/members No description
GET /admin/internal/members Snapshot of this store's federated members: every user that ...
GET /admin/internal/sales-metrics No description
POST /admin/internal/superplane-cart No description
POST /admin/internal/unified-context No description
POST /admin/konnektive/outbound-sync/:orderId/force POST /admin/konnektive/outbound-sync/:orderId/force Force im...
POST /admin/konnektive/outbound-sync/:orderId/retry POST /admin/konnektive/outbound-sync/:orderId/retry Retry a ...
GET /admin/konnektive/outbound-sync/:orderId/status GET /admin/konnektive/outbound-sync/:orderId/status Get sync...
GET /admin/konnektive/outbound-sync/failed GET /admin/konnektive/outbound-sync/failed List all failed s...
GET /admin/konnektive/outbound-sync/statistics GET /admin/konnektive/outbound-sync/statistics Get overall s...
GET /admin/konnektive/product-mapping GET /admin/konnektive/product-mapping Get all product SKU ma...
POST /admin/konnektive/product-mapping POST /admin/konnektive/product-mapping Add or update product...
DELETE /admin/konnektive/product-mapping DELETE /admin/konnektive/product-mapping Remove product SKU ...
GET /admin/konnektive/products GET /admin/konnektive/products Fetch Konnektive products fro...
GET /admin/marketing No description
GET /admin/marketing/ad-sets // List ad sets
POST /admin/marketing/ad-sets // Create ad set
GET /admin/marketing/ai-insights No description
GET /admin/marketing/analytics-simple No description
GET /admin/marketing/analytics/platforms No description
GET /admin/marketing/attribution No description
GET /admin/marketing/campaigns // List campaigns
POST /admin/marketing/campaigns // Create campaign
GET /admin/marketing/campaigns/:id // Get campaign by ID
PATCH /admin/marketing/campaigns/:id // Update campaign
DELETE /admin/marketing/campaigns/:id // Delete campaign
GET /admin/marketing/campaigns/:id/insights // Get campaign insights
GET /admin/marketing/clickhouse // GET /admin/marketing/clickhouse - Get ClickHouse configur...
POST /admin/marketing/clickhouse // POST /admin/marketing/clickhouse - Save ClickHouse config...
DELETE /admin/marketing/clickhouse // DELETE /admin/marketing/clickhouse - Remove ClickHouse co...
GET /admin/marketing/creatives // List creatives
POST /admin/marketing/creatives // Create creative
GET /admin/marketing/credentials // GET - Get credentials for all platforms
POST /admin/marketing/credentials // POST - Save credentials for a platform
PUT /admin/marketing/credentials // PUT - Update credentials for a platform
DELETE /admin/marketing/credentials // DELETE - Remove credentials for a platform
GET /admin/marketing/customer-journey/:customerId // Get customer journey analysis
GET /admin/marketing/dashboard No description
GET /admin/marketing/paid-acquisition GET /admin/marketing/paid-acquisition Generate paid acquisit...
POST /admin/marketing/paid-acquisition POST /admin/marketing/paid-acquisition Generate paid acquisi...
POST /admin/marketing/paid-acquisition/export POST /admin/marketing/paid-acquisition/export Export paid ac...
GET /admin/marketing/paid-acquisition/search GET /admin/marketing/paid-acquisition/search Search and filt...
POST /admin/marketing/paid-acquisition/search POST /admin/marketing/paid-acquisition/search Advanced searc...
GET /admin/marketing/platforms // Get platform overview
GET /admin/marketing/simple No description
POST /admin/marketing/sync // Sync campaigns from advertising platforms
POST /admin/marketing/sync/campaign // POST - Trigger campaign sync
POST /admin/marketing/sync/incremental // POST - Trigger incremental sync
GET /admin/marketing/webhooks/facebook // GET endpoint for webhook verification
POST /admin/marketing/webhooks/facebook // POST endpoint for webhook events
HEAD /admin/marketing/webhooks/facebook // Health check endpoint
POST /admin/marketing/webhooks/google // POST endpoint for Google Ads webhook events
GET /admin/marketing/webhooks/google // GET endpoint for webhook verification (if Google implemen...
POST /admin/marketing/webhooks/tiktok // POST endpoint for TikTok webhook events
GET /admin/marketing/webhooks/tiktok // GET endpoint for webhook verification
HEAD /admin/marketing/webhooks/tiktok // HEAD endpoint for health check
GET /admin/me GET /admin/me Returns the currently logged-in admin user
GET /admin/my-stores No description
POST /admin/my-stores/switch No description
GET /admin/payment-diagnostics GET /admin/payment-diagnostics Diagnostic endpoint to identi...
POST /admin/payment-diagnostics POST /admin/payment-diagnostics/cleanup Force cleanup of sta...
POST /admin/payments/:id/sync-stripe POST /admin/payments/:id/sync-stripe Syncs payment status fr...
GET /admin/promotions/:id/:rule_type No description
GET /admin/promotions/:id/rule-divergence No description
POST /admin/promotions/:id/rule-divergence No description
GET /admin/promotions/rule-attribute-options/:rule_type No description
GET /admin/promotions/rule-value-options/:rule_type/:rule_attribute_id No description
GET /admin/purchase-orders No description
POST /admin/purchase-orders No description
GET /admin/renewals No description
GET /admin/renewals/:id No description
POST /admin/renewals/:id/approve-changes No description
POST /admin/renewals/:id/force No description
POST /admin/renewals/:id/reject-changes No description
GET /admin/reviews No description
POST /admin/reviews/status No description
GET /admin/scheduled-jobs No description
GET /admin/scheduled-jobs/:name No description
GET /admin/send Parent route for /admin/send This route handles delegation t...
POST /admin/send No description
GET /admin/send/email-templates GET /admin/send/email-templates List all email templates wit...
POST /admin/send/email-templates POST /admin/send/email-templates Create a new email template
GET /admin/send/email-templates/:id GET /admin/send/email-templates/:id Get a specific email tem...
PUT /admin/send/email-templates/:id PUT /admin/send/email-templates/:id Update an email template
DELETE /admin/send/email-templates/:id DELETE /admin/send/email-templates/:id Delete an email templ...
POST /admin/send/email-templates/:id/preview POST /admin/send/email-templates/:id/preview Preview an emai...
POST /admin/send/email-templates/:id/render POST /admin/send/email-templates/:id/render Render an email ...
POST /admin/send/email-templates/validate POST /admin/send/email-templates/validate Validate email tem...
GET /admin/site-types No description
POST /admin/site-types No description
GET /admin/site-types/:id No description
PATCH /admin/site-types/:id No description
DELETE /admin/site-types/:id No description
GET /admin/subscription-analytics/export No description
GET /admin/subscription-analytics/kpis No description
POST /admin/subscription-analytics/rebuild No description
GET /admin/subscription-analytics/trends No description
GET /admin/subscription-logs No description
GET /admin/subscription-logs/:id No description
GET /admin/subscription-offers No description
POST /admin/subscription-offers No description
GET /admin/subscription-offers/:id No description
POST /admin/subscription-offers/:id No description
DELETE /admin/subscription-offers/:id Remove a plan offer. Until now an offer could only be disabl...
POST /admin/subscription-offers/:id/toggle No description
GET /admin/subscription-settings No description
POST /admin/subscription-settings No description
GET /admin/subscriptions No description
GET /admin/subscriptions/:id No description
POST /admin/subscriptions/:id/cancel No description
GET /admin/subscriptions/:id/notes GET /admin/subscriptions/:id/notes Returns all notes for a s...
POST /admin/subscriptions/:id/notes POST /admin/subscriptions/:id/notes Add a new note to a subs...
DELETE /admin/subscriptions/:id/notes/:noteId DELETE /admin/subscriptions/:id/notes/:noteId Delete a speci...
PUT /admin/subscriptions/:id/notes/:noteId PUT /admin/subscriptions/:id/notes/:noteId Update a specific...
POST /admin/subscriptions/:id/pause No description
GET /admin/subscriptions/:id/payment-method GET /admin/subscriptions/:id/payment-method The card a subsc...
POST /admin/subscriptions/:id/payment-method POST /admin/subscriptions/:id/payment-method Body `{ setup_i...
POST /admin/subscriptions/:id/payment-method/setup POST /admin/subscriptions/:id/payment-method/setup Start a c...
POST /admin/subscriptions/:id/resume No description
POST /admin/subscriptions/:id/schedule-plan-change No description
POST /admin/subscriptions/:id/update-discount No description
POST /admin/subscriptions/:id/update-next-cycle-discount No description
POST /admin/subscriptions/:id/update-quantity No description
POST /admin/subscriptions/:id/update-renewal No description
POST /admin/subscriptions/:id/update-shipping-address No description
GET /admin/ultracart GET /admin/ultracart Get UltraCart module status and statist...
POST /admin/ultracart POST /admin/ultracart Manually sync an order to UltraCart (r...
POST /admin/ultracart/force-sync No description
GET /admin/ultracart/modification-window No description
POST /admin/ultracart/modification-window POST /admin/ultracart/modification-window Reset modification...
GET /admin/ultracart/scheduled No description
POST /admin/ultracart/scheduled POST /admin/ultracart/scheduled Manually trigger processing ...
GET /admin/ultracart/stats No description
GET /admin/vibe GET /admin/vibe/* Serve Vibe SDK static files from vibe-stat...
GET /admin/vibesdk/config/:siteId GET /admin/vibesdk/config/:siteId Get VibeSDK configuration ...
POST /admin/vibesdk/proxy POST /admin/vibesdk/proxy Proxy requests to VibeSDK with our...
GET /admin/vibesdk/sso-token GET /admin/vibesdk/sso-token?siteId=... Returns a short-live...
POST /admin/vibesdk/validate-sso POST /admin/vibesdk/validate-sso Validates SSO tokens from e...
GET /admin/webhook-logs GET /admin/webhook-logs List all webhook logs with filtering...
GET /admin/webhook-logs/:id GET /admin/webhook-logs/:id Get a single webhook log by ID w...
DELETE /admin/webhook-logs/:id DELETE /admin/webhook-logs/:id Delete a webhook log (for cle...
POST /admin/webhook-logs/cleanup POST /admin/webhook-logs/cleanup Cleanup old webhook logs Bo...
GET /admin/webhook-logs/providers GET /admin/webhook-logs/providers Get list of unique provide...
GET /admin/webhook-logs/stats GET /admin/webhook-logs/stats Get webhook statistics and ana...

POST Admin Algolia#

Endpoint: POST /admin/algolia Authentication: Admin (Required)

Description#

POST /admin/algolia/index Index data to Algolia (admin only)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  success,
  indexed,
  type,
}

Error (503):

{
  error,
}

Error (503):

{
  error,
}

Error (400):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/algolia' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Algolia#

Endpoint: DELETE /admin/algolia Authentication: Admin (Required)

Description#

DELETE /admin/algolia Delete items from Algolia index

Response#

Success:

{
  success,
  deleted,
  type,
}

Error (503):

{
  error,
}

Error (503):

{
  error,
}

Error (400):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/algolia' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

Endpoint: GET /admin/algolia/search Authentication: Admin (Required)

Description#

GET /admin/algolia/search Search across Algolia indexes for orders, customers, or products

Response#

Success:

{
  results,
  query,
  type,
}

Error (503):

{
  error,
}

Error (503):

{
  error,
}

Error (400):

{
  error,
}

Error (400):

{
  error,
}

Error (500):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/algolia/search' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Announcements#

Endpoint: GET /admin/announcements Authentication: Admin (Required)

Description#

Announcements published so far, newest first, plus the types an operator may publish. The type list ships in the same response so the compose form never hard-codes the registry — adding a kind in src/lib/notification-types.ts makes it selectable with no admin rebuild.

Response#

Success:

{
  announcements,
  types,
}

Also returns:

{
  announcements,
  types,
  degraded,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/announcements' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Announcements#

Endpoint: POST /admin/announcements Authentication: Admin (Required)

Description#

Publish an announcement: POST /admin/announcements. Body: { type, title, body, external_ref?, source? }. type must be a publishable id from the notification-type registry — the event types are emitted by jobs and are not forgeable here. Delivers one notification per admin, each addressed to that person, so recipients dismiss their own copy without clearing it for anyone else. Repeating a publish with the same external_ref is a 409, which is what makes a retried deploy safe. Returns the announcement as it will read back, plus a delivery block, so a publish that reached nobody is visible instead of silently looking like a success.

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (201):

{
  announcement,
  delivery,
}

Error (409):

{
  message,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/announcements' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Audiences#

Endpoint: GET /admin/audiences Authentication: Admin (Required)

Description#

GET /admin/audiences — list audience definitions across every version. POST /admin/audiences — create a draft definition; pass publish: true to publish it in the same call. Auth follows the existing admin route pattern (src/api/admin/dunning, src/api/admin/renewals): OmniCart's built-in admin authentication guards every /admin/* route — no route-specific auth middleware here.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/audiences' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Audiences#

Endpoint: POST /admin/audiences Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Also returns (201):

{
  audience_definition,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/audiences' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Banner-options#

Endpoint: GET /admin/banner-options Authentication: Admin (Required)

Description#

Choices for the banner editor's two targeting fields. WHY THIS EXISTS --------------- store_handle used to be a free-text box. It is compared literally by the store endpoint, so a typo produced a banner that saved cleanly and then never appeared anywhere, with nothing on screen explaining why — and because the handle is immutable after creation, the fix was delete-and-recreate. Handles come from two places, unioned: 1. BANNER_STORE_HANDLES env — the handles this deployment serves. Set this; it is the only source that works on a tenant with no banners yet. 2. handles already present on banner rows — so an existing deployment is never locked out of its own handle by a missing env var. Sales channels come from the sales-channel module and are the FINE key: a banner with one set shows only on the surface whose publishable key maps to that channel (VNSH's LSS funnel vs its main storefront). Null = all surfaces.

Response#

Success:

{
  preview_base_url,
  store_handles,
  sales_channels,
  handles_unconfigured,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/banner-options' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Banners#

Endpoint: GET /admin/banners Authentication: Admin (Required)

Description#

GET /admin/banners?promotion_id=...

Response#

Success:

{
  banners,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/banners' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Banners#

Endpoint: POST /admin/banners Authentication: Admin (Required)

Description#

POST /admin/banners

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (201):

{
  banner,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/banners' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Banners :id#

Endpoint: POST /admin/banners/:id Authentication: Admin (Required)

Description#

POST /admin/banners/:id — partial update.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  banner,
}

Error (400):

{
  message,
}

Error (404):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/banners/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Banners :id#

Endpoint: DELETE /admin/banners/:id Authentication: Admin (Required)

Description#

DELETE /admin/banners/:id — soft delete.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  id,
  object,
  deleted,
}

Error (500):

{
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/banners/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Bundled-products#

Endpoint: POST /admin/bundled-products Authentication: Admin (Required)

Request Body#

Field Type Required
title string Yes
product unknown Yes
items array Yes

Response#

Success:

{
  bundled_product,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/bundled-products' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Bundled-products#

Endpoint: GET /admin/bundled-products Authentication: Admin (Required)

Response#

Success:

{
  bundled_products,
  count,
  limit,
  offset,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/bundled-products' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Bundled-products :id#

Endpoint: GET /admin/bundled-products/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Error (404):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/bundled-products/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PATCH Admin Bundled-products :id#

Endpoint: PATCH /admin/bundled-products/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

Field Type Required
title string No
items array No

Response#

Success:

{
  bundled_product,
}

Error (500):

{
  message,
}

Example Request#

curl -X PATCH 'https://your-store.omnicart.cc/admin/bundled-products/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Bundled-products :id#

Endpoint: DELETE /admin/bundled-products/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  id,
  deleted,
}

Error (500):

{
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/bundled-products/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Cancellations#

Endpoint: GET /admin/cancellations Authentication: Admin (Required)

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/cancellations' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Cancellations :id#

Endpoint: GET /admin/cancellations/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/cancellations/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Cancellations :id Apply-offer#

Endpoint: POST /admin/cancellations/:id/apply-offer Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/cancellations/:id/apply-offer' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Cancellations :id Finalize#

Endpoint: POST /admin/cancellations/:id/finalize Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/cancellations/:id/finalize' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Cancellations :id Reason#

Endpoint: POST /admin/cancellations/:id/reason Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/cancellations/:id/reason' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Carts#

Endpoint: GET /admin/carts Authentication: Admin (Required)

Description#

GET /admin/carts?customer_id={id} Returns carts for a given customer for use in Admin UI widgets

Response#

Success:

{
  carts,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/carts' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Cogs Settings#

Endpoint: GET /admin/cogs/settings Authentication: Admin (Required)

Response#

Success:

{
  module_enabled,
  settings,
}

Error (400):

{
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/cogs/settings' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Cogs Settings#

Endpoint: POST /admin/cogs/settings Authentication: Admin (Required)

Request Body#

Field Type Required
default_valuation_method enum(FIFO, LIFO, WEIGHTED_AVG) Yes
replenishment_alerts_enabled boolean No

Response#

Success:

{
  module_enabled,
  settings,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
  issues,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/cogs/settings' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Content-page-options#

Endpoint: GET /admin/content-page-options Authentication: Admin (Required)

Description#

Choices for the content-page editor. WHY THIS EXISTS --------------- Same reason as /admin/banner-options: store_handle is compared literally by the store endpoint, so a free-text typo produces a page that saves cleanly and then never appears, with nothing on screen explaining why. Handles come from three places, unioned: 1. CONTENT_PAGE_STORE_HANDLES env, when set. 2. BANNER_STORE_HANDLES env — the same list of storefronts this deployment serves. Reused rather than duplicated so a tenant that has already configured banners does not have to configure this too. 3. handles already present on content_page rows — so an existing deployment is never locked out of its own handle by a missing env var.

Response#

Success:

{
  preview_base_url,
  store_handles,
  handles_unconfigured,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/content-page-options' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Content-page-settings#

Endpoint: GET /admin/content-page-settings Authentication: Admin (Required)

Description#

GET /admin/content-page-settings?store_handle=vnsh

Response#

Success:

{
  content_page_settings,
}

Error (400):

{
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/content-page-settings' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Content-page-settings#

Endpoint: POST /admin/content-page-settings Authentication: Admin (Required)

Description#

POST /admin/content-page-settings

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  content_page_settings,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/content-page-settings' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Content-pages#

Endpoint: GET /admin/content-pages Authentication: Admin (Required)

Description#

GET /admin/content-pages?store_handle=vnsh

Response#

Success:

{
  content_pages,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/content-pages' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Content-pages#

Endpoint: POST /admin/content-pages Authentication: Admin (Required)

Description#

POST /admin/content-pages

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (201):

{
  content_page,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (409):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/content-pages' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PATCH Admin Content-pages :id#

Endpoint: PATCH /admin/content-pages/:id Authentication: Admin (Required)

Description#

PATCH /admin/content-pages/:id — partial update. store_handle is deliberately absent: moving a page between storefronts would move its URL out from under whatever links to it, and the slug is unique per handle so the move can also collide. Delete and recreate instead.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  content_page,
}

Error (404):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (409):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X PATCH 'https://your-store.omnicart.cc/admin/content-pages/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Content-pages :id#

Endpoint: DELETE /admin/content-pages/:id Authentication: Admin (Required)

Description#

DELETE /admin/content-pages/:id — soft delete.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  id,
  object,
  deleted,
}

Error (500):

{
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/content-pages/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Custom#

Endpoint: GET /admin/custom Authentication: Admin (Required)

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/custom' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Customers :id Notes#

Endpoint: GET /admin/customers/:id/notes Authentication: Admin (Required)

Description#

GET /admin/customers/:id/notes Returns all notes for a customer

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  notes,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/customers/:id/notes' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Customers :id Notes#

Endpoint: POST /admin/customers/:id/notes Authentication: Admin (Required)

Description#

POST /admin/customers/:id/notes Add a new note to a customer Body: { content: string, tag?: "Called" | "Email" | "Issue" | "Shipping" | "Refund" | null }

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  note,
  notes,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/customers/:id/notes' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Customers :id Notes :noteId#

Endpoint: DELETE /admin/customers/:id/notes/:noteId Authentication: Admin (Required)

Description#

DELETE /admin/customers/:id/notes/:noteId Delete a specific note from a customer

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier
noteId string Yes NoteId identifier

Response#

Success:

{
  success,
  notes,
}

Error (404):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/customers/:id/notes/:noteId' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PUT Admin Customers :id Notes :noteId#

Endpoint: PUT /admin/customers/:id/notes/:noteId Authentication: Admin (Required)

Description#

PUT /admin/customers/:id/notes/:noteId Update a specific note (content and tag; author and created_at are preserved) Body: { content: string, tag?: "Called" | "Email" | "Issue" | "Shipping" | "Refund" | null }

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier
noteId string Yes NoteId identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  note,
  notes,
}

Error (404):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X PUT 'https://your-store.omnicart.cc/admin/customers/:id/notes/:noteId' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Demo-magic-link#

Endpoint: POST /admin/demo-magic-link Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  url,
  token,
  landingPath,
  expiresInSeconds,
}

Error (503):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/demo-magic-link' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Disputes#

Endpoint: GET /admin/disputes Authentication: Admin (Required)

Description#

GET /admin/disputes List locally-mirrored Stripe disputes. Backs the order-page dispute banner (?order_id=...) and gives ops a queryable view of open chargebacks and their evidence deadlines (?open=true). Query params: - order_id / payment_id — scope to one order or payment - open=true — only disputes that currently block refunds - limit / offset — pagination (default 50)

Response#

Success:

{
  disputes,
  count,
  limit,
  offset,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/disputes' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Disputes :id Accept#

Endpoint: POST /admin/disputes/:id/accept Authentication: Admin (Required)

Description#

POST /admin/disputes/:id/accept Concede the dispute: the customer keeps the funds via the chargeback. This is FINAL — Stripe closes the dispute as lost and the money is gone, so the UI confirms before calling this. :id is the LOCAL payment_dispute record id (pdis_...). Actions are routed by the record's provider — only Stripe is implemented; other providers get a clean 400 instead of a silent no-op.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Also returns:

{
  dispute,
}

Error (404):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/disputes/:id/accept' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Disputes :id Evidence#

Endpoint: POST /admin/disputes/:id/evidence Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  submitted,
  evidence_field_count,
  dispute,
}

Also returns:

{
  type,
  message,
}

Error (404):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/disputes/:id/evidence' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Draft-orders :id Payment-link#

Endpoint: POST /admin/draft-orders/:id/payment-link Authentication: Admin (Required)

Description#

Create (or reuse) the payment link for a draft order and optionally send it. Body: - channel — "none" (create only), "sms", or "email". Default "none". - to — override recipient. Defaults to the draft's phone (sms) or email. - expires_in_hours — link lifetime, 1..720. Default 72. - regenerate — mint a new cart even if the current link is still valid. Responds 200 with { url, cart_id, expires_at, warnings, delivery }. warnings lists non-fatal problems replaying the draft onto the cart — shipping or promotion codes that could not be applied. delivery.status is "sent", "failed", or "skipped" (channel "none"); a failed SEND still returns 200 because the link itself exists and can be copied from the admin. 404 when the order does not exist, 409 when it is not a draft order, 422 when the draft has no line item that can be placed on a cart.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

Field Type Required
channel enum(none, sms, email) No
to string No
expires_in_hours number No
regenerate boolean No

Response#

Success (200):

{
  url,
  cart_id,
  expires_at,
  reused,
  skipped_items,
  warnings,
  delivery,
}

Also returns:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/draft-orders/:id/payment-link' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

Endpoint: GET /admin/draft-orders/:id/payment-link Authentication: Admin (Required)

Description#

Read the draft order's stored payment link plus the live state of its cart. Responds 200 with { payment_link, cart }. payment_link is null when no link was ever created. cart carries completed_at so the admin can tell a link that is still open from one the customer already paid, and expired reflects the stored expiry against the current time. 404 when the order does not exist, 409 when it is not a draft order.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success (200):

{
  payment_link,
  cart,
}

Also returns (200):

{
  payment_link,
  cart,
}

Error (404):

{
  type,
  message,
}

Error (409):

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/draft-orders/:id/payment-link' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Dunning#

Endpoint: GET /admin/dunning Authentication: Admin (Required)

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/dunning' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Dunning :id#

Endpoint: GET /admin/dunning/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/dunning/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Dunning :id Mark-recovered#

Endpoint: POST /admin/dunning/:id/mark-recovered Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/dunning/:id/mark-recovered' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Dunning :id Mark-unrecovered#

Endpoint: POST /admin/dunning/:id/mark-unrecovered Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/dunning/:id/mark-unrecovered' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Dunning :id Retry-now#

Endpoint: POST /admin/dunning/:id/retry-now Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/dunning/:id/retry-now' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Dunning :id Retry-schedule#

Endpoint: POST /admin/dunning/:id/retry-schedule Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/dunning/:id/retry-schedule' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Extensions#

Endpoint: GET /admin/extensions Authentication: Admin (Required)

Response#

Success:

{
  extensions,
  count,
}

Also returns:

{
  message,
  code,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/extensions' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Extensions :id#

Endpoint: GET /admin/extensions/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  extension,
}

Also returns:

{
  message,
  code,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/extensions/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Extensions :id Toggle#

Endpoint: POST /admin/extensions/:id/toggle Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  extension,
}

Also returns:

{
  message,
  code,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/extensions/:id/toggle' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Extensions Check-enabled#

Endpoint: GET /admin/extensions/check-enabled Authentication: Admin (Required)

Description#

GET /admin/extensions/check-enabled?module=marketing Check if a specific module is enabled

Response#

Success:

{
  enabled,
  module,
}

Error (400):

{
  enabled,
  message,
}

Error (500):

{
  enabled,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/extensions/check-enabled' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Extensions Check :name#

Endpoint: GET /admin/extensions/check/:name Authentication: Admin (Required)

Description#

Check if an extension is enabled GET /admin/extensions/check/:name

URL Parameters#

Parameter Type Required Description
name string Yes Name identifier

Response#

Success:

{
  enabled,
}

Error (400):

{
  message,
  enabled,
}

Error (500):

{
  message,
  enabled,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/extensions/check/:name' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Free-shipping-report#

Endpoint: GET /admin/free-shipping-report Authentication: Admin (Required)

Response#

Error (400):

{
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/free-shipping-report' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Free-shipping-threshold#

Endpoint: GET /admin/free-shipping-threshold Authentication: Admin (Required)

Response#

Success:

{
  shipping_option_id,
  shipping_option_name,
  threshold,
  operator,
}

Also returns:

{
  shipping_option_id,
  threshold,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/free-shipping-threshold' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Free-shipping-threshold#

Endpoint: POST /admin/free-shipping-threshold Authentication: Admin (Required)

Description#

// Update the free-shipping threshold by surgically updating the item_total price rule value(s).

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  threshold,
  updated_rules,
}

Error (400):

{
  message,
}

Error (404):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/free-shipping-threshold' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Funnel-carts :id Line-items#

Endpoint: POST /admin/funnel-carts/:id/line-items Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  cart,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/funnel-carts/:id/line-items' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Funnels#

Endpoint: GET /admin/funnels Authentication: Admin (Required)

Response#

Error (500):

{
  message,
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/funnels' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Funnels#

Endpoint: POST /admin/funnels Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  funnel,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/funnels' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Funnels :id#

Endpoint: GET /admin/funnels/:id Authentication: Admin (Required)

Description#

@swagger /admin/funnels/{id}: get: tags: [Funnels] description: Retrieves a funnel by ID parameters: - in: path name: id required: true schema: type: string responses: 200: description: OK content: application/json: schema: properties: funnel: $ref: "#/components/schemas/Funnel"

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  funnel,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/funnels/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Funnels :id#

Endpoint: POST /admin/funnels/:id Authentication: Admin (Required)

Description#

@swagger /admin/funnels/{id}: post: tags: [Funnels] description: Updates a funnel by ID parameters: - in: path name: id required: true schema: type: string requestBody: content: application/json: schema: properties: name: type: string description: type: string conversion_goal: type: string status: type: string enum: [draft, active, archived] responses: 200: description: OK content: application/json: schema: properties: funnel: $ref: "#/components/schemas/Funnel"

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  funnel,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/funnels/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Funnels :id#

Endpoint: DELETE /admin/funnels/:id Authentication: Admin (Required)

Description#

@swagger /admin/funnels/{id}: delete: tags: [Funnels] description: Deletes a funnel by ID parameters: - in: path name: id required: true schema: type: string responses: 200: description: OK

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  id,
  deleted,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/funnels/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Funnels Analytics#

Endpoint: GET /admin/funnels/analytics Authentication: Admin (Required)

Description#

@swagger /admin/funnels/analytics: get: tags: [Funnels] description: Retrieves funnel analytics parameters: - in: query name: funnel_id schema: type: string required: true responses: 200: description: OK content: application/json: schema: properties: analytics: type: object

Response#

Success:

{
  analytics,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/funnels/analytics' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Funnels Pages#

Endpoint: GET /admin/funnels/pages Authentication: Admin (Required)

Description#

@swagger /admin/funnels/pages: get: tags: [Funnels] description: Retrieves funnel pages responses: 200: description: OK content: application/json: schema: properties: pages: type: array

Response#

Success:

{
  pages,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/funnels/pages' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Funnels Pages#

Endpoint: POST /admin/funnels/pages Authentication: Admin (Required)

Description#

@swagger /admin/funnels/pages: post: tags: [Funnels] description: Creates a new funnel page requestBody: content: application/json: schema: required: - title - slug - funnel_id - stage_id properties: title: type: string slug: type: string funnel_id: type: string stage_id: type: string content_id: type: string template: type: string position: type: number responses: 200: description: OK content: application/json: schema: properties: page: $ref: "#/components/schemas/FunnelPage"

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  page,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/funnels/pages' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Funnels Stages#

Endpoint: GET /admin/funnels/stages Authentication: Admin (Required)

Description#

@swagger /admin/funnels/stages: get: tags: [Funnels] description: Retrieves funnel stages responses: 200: description: OK content: application/json: schema: properties: stages: type: array

Response#

Success:

{
  stages,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
  stages,
}

Error (500):

{
  message,
  stack,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/funnels/stages' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Funnels Stages#

Endpoint: POST /admin/funnels/stages Authentication: Admin (Required)

Description#

@swagger /admin/funnels/stages: post: tags: [Funnels] description: Creates a new funnel stage requestBody: content: application/json: schema: required: - name - funnel_id - position properties: name: type: string description: type: string funnel_id: type: string position: type: number is_entry_point: type: boolean responses: 200: description: OK content: application/json: schema: properties: stage: $ref: "#/components/schemas/FunnelStage"

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  stage,
}

Error (400):

{
  message,
}

Error (404):

{
  message,
}

Error (500):

{
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/funnels/stages' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PUT Admin Funnels Stages :id#

Endpoint: PUT /admin/funnels/stages/:id Authentication: Admin (Required)

Description#

Update an existing funnel stage

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  stage,
}

Error (400):

{
  message,
}

Error (404):

{
  message,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X PUT 'https://your-store.omnicart.cc/admin/funnels/stages/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Funnels Stages :id#

Endpoint: DELETE /admin/funnels/stages/:id Authentication: Admin (Required)

Description#

Delete a funnel stage

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  id,
  deleted,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/funnels/stages/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Funnels Stages Reorder#

Endpoint: POST /admin/funnels/stages/reorder Authentication: Admin (Required)

Description#

Reorder funnel stages

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (200):

{
  stages,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/funnels/stages/reorder' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Internal Checkout-context#

Endpoint: POST /admin/internal/checkout-context Authentication: Admin (Required)

Request Body#

Field Type Required
cart_id string Yes
checkout_token string Yes

Response#

Success:

{
  ok,
  cart_id,
  stamped,
}

Also returns:

{
  ok,
  cart_id,
  stamped,
}

Error (400):

{
  error,
  issues,
}

Error (503):

{
  error,
}

Error (401):

{
  error,
}

Error (401):

{
  error,
}

Error (503):

{
  error,
}

Error (403):

{
  error,
}

Error (404):

{
  error,
}

Error (409):

{
  error,
}

Error (401):

{
  error,
}

Error (503):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/internal/checkout-context' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Internal Members#

Endpoint: POST /admin/internal/members Authentication: Admin (Required)

Request Body#

Field Type Required
email string Yes
role enum(admin, editor, viewer) Yes
action enum(upsert, remove) Yes

Response#

Error (400):

{
  error,
  issues,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/internal/members' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Internal Members#

Endpoint: GET /admin/internal/members Authentication: Admin (Required)

Description#

Snapshot of this store's federated members: every user that holds one of the three standard roles, with its store role. Used by the SysOp reconcile job to detect + heal drift. Users with no standard role are omitted (they're not part of the federation).

Response#

Success:

{
  members,
}

Also returns:

{
  members,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/internal/members' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Internal Sales-metrics#

Endpoint: GET /admin/internal/sales-metrics Authentication: Admin (Required)

Response#

Success:

{
  total,
  days,
  meta,
}

Error (400):

{
  message,
  issues,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  code,
  message,
  maxDays,
  requestedDays,
}

Error (500):

{
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/internal/sales-metrics' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Internal Superplane-cart#

Endpoint: POST /admin/internal/superplane-cart Authentication: Admin (Required)

Request Body#

Field Type Required
email string Yes
first_name string No
last_name string No
region_id string No
sales_channel_id string No
currency_code string No
purchase_mode enum(subscription, one_time) No
items record No
metadata record No

Response#

Success (200):

{
  cart_id,
  checkout_url,
  customer_id,
  attributed,
}

Error (400):

{
  error,
  issues,
}

Error (422):

{
  error,
}

Error (422):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/internal/superplane-cart' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Internal Unified-context#

Endpoint: POST /admin/internal/unified-context Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  ok,
  cart_id,
  stamped,
}

Error (400):

{
  error,
}

Error (404):

{
  error,
}

Error (409):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/internal/unified-context' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Konnektive Outbound-sync :orderId Force#

Endpoint: POST /admin/konnektive/outbound-sync/:orderId/force Authentication: Admin (Required)

Description#

POST /admin/konnektive/outbound-sync/:orderId/force Force immediate sync of an order (bypass modification window) Use cases: - Urgent orders requiring immediate fulfillment - Manual correction after failed sync - Customer service requests @returns Sync result with Konnektive customer ID and order ID

URL Parameters#

Parameter Type Required Description
orderId string Yes OrderId identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (200):

{
  message,
  result,
}

Error (400):

{
  error,
  message,
  errorCode,
  attempts,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/konnektive/outbound-sync/:orderId/force' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Konnektive Outbound-sync :orderId Retry#

Endpoint: POST /admin/konnektive/outbound-sync/:orderId/retry Authentication: Admin (Required)

Description#

POST /admin/konnektive/outbound-sync/:orderId/retry Retry a failed sync for a specific order Use cases: - Recover from transient API errors - Retry after fixing product SKU mappings - Retry after Konnektive service restoration @returns Sync result with success/failure status

URL Parameters#

Parameter Type Required Description
orderId string Yes OrderId identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (200):

{
  message,
  result,
}

Error (400):

{
  error,
  message,
  errorCode,
  attempts,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/konnektive/outbound-sync/:orderId/retry' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Konnektive Outbound-sync :orderId Status#

Endpoint: GET /admin/konnektive/outbound-sync/:orderId/status Authentication: Admin (Required)

Description#

GET /admin/konnektive/outbound-sync/:orderId/status Get sync status for a specific order @returns Sync status including scheduled time, attempts, Konnektive IDs, errors

URL Parameters#

Parameter Type Required Description
orderId string Yes OrderId identifier

Response#

Success (200):

{
  status,
}

Error (404):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/konnektive/outbound-sync/:orderId/status' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Konnektive Outbound-sync Failed#

Endpoint: GET /admin/konnektive/outbound-sync/failed Authentication: Admin (Required)

Description#

GET /admin/konnektive/outbound-sync/failed List all failed syncs for troubleshooting Query params: - limit: Maximum number of results (default: 50) @returns List of failed sync records with error details

Response#

Success (200):

{
  failedSyncs,
  count,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/konnektive/outbound-sync/failed' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Konnektive Outbound-sync Statistics#

Endpoint: GET /admin/konnektive/outbound-sync/statistics Authentication: Admin (Required)

Description#

GET /admin/konnektive/outbound-sync/statistics Get overall sync statistics and metrics Metrics include: - Total syncs by status (scheduled, pending, synced, failed) - Average modifications per order (Flow Builder upsells) - Average sync attempts (retry metrics) @returns Comprehensive sync statistics

Response#

Success (200):

{
  statistics,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/konnektive/outbound-sync/statistics' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Konnektive Product-mapping#

Endpoint: GET /admin/konnektive/product-mapping Authentication: Admin (Required)

Description#

GET /admin/konnektive/product-mapping Get all product SKU mappings (OmniCart SKU → Konnektive product_id) @returns Map of OmniCart SKUs to Konnektive product IDs

Response#

Success (200):

{
  mapping,
  count,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/konnektive/product-mapping' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Konnektive Product-mapping#

Endpoint: POST /admin/konnektive/product-mapping Authentication: Admin (Required)

Description#

POST /admin/konnektive/product-mapping Add or update product SKU mappings Request body: { "mappings": { "OMNICART_SKU": "KONNEKTIVE_PRODUCT_ID", ... } } @returns Updated mapping

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (200):

{
  message,
  mapping,
  count,
}

Error (400):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/konnektive/product-mapping' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Konnektive Product-mapping#

Endpoint: DELETE /admin/konnektive/product-mapping Authentication: Admin (Required)

Description#

DELETE /admin/konnektive/product-mapping Remove product SKU mappings Request body: { "skus": ["OMNICART_SKU1", "OMNICART_SKU2", ...] } @returns Updated mapping

Response#

Success (200):

{
  message,
  removedCount,
  mapping,
  count,
}

Error (400):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/konnektive/product-mapping' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Konnektive Products#

Endpoint: GET /admin/konnektive/products Authentication: Admin (Required)

Description#

GET /admin/konnektive/products Fetch Konnektive products from the Konnektive API

Response#

Success (200):

{
  products,
}

Error (503):

{
  error,
}

Error (500):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/konnektive/products' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing#

Endpoint: GET /admin/marketing Authentication: Admin (Required)

Response#

Success:

{
  success,
  data,
}

Error (500):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Ad-sets#

Endpoint: GET /admin/marketing/ad-sets Authentication: Admin (Required)

Description#

// List ad sets

Response#

Success:

{
  success,
  data,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/ad-sets' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Ad-sets#

Endpoint: POST /admin/marketing/ad-sets Authentication: Admin (Required)

Description#

// Create ad set

Request Body#

Field Type Required
campaignId string No
status enum No
limit number No
offset number No

Response#

Success (201):

{
  success,
  data,
}

Error (404):

{
  success,
  message,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/ad-sets' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Ai-insights#

Endpoint: GET /admin/marketing/ai-insights Authentication: Admin (Required)

Response#

Success:

{
  success,
  data,
}

Also returns:

{
  success,
  data,
}

Error (500):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/ai-insights' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Analytics-simple#

Endpoint: GET /admin/marketing/analytics-simple Authentication: Admin (Required)

Response#

Success:

{
  platforms,
  totals,
  dateRange,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/analytics-simple' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Analytics Platforms#

Endpoint: GET /admin/marketing/analytics/platforms Authentication: Admin (Required)

Response#

Success:

{
  success,
  data,
}

Also returns:

{
  success,
  data,
}

Error (500):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/analytics/platforms' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Attribution#

Endpoint: GET /admin/marketing/attribution Authentication: Admin (Required)

Response#

Success:

{
  success,
  data,
}

Also returns:

{
  success,
  data,
}

Error (500):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/attribution' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Campaigns#

Endpoint: GET /admin/marketing/campaigns Authentication: Admin (Required)

Description#

// List campaigns

Response#

Success:

{
  success,
  data,
  meta,
}

Also returns:

{
  success,
  data,
  meta,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/campaigns' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Campaigns#

Endpoint: POST /admin/marketing/campaigns Authentication: Admin (Required)

Description#

// Create campaign

Request Body#

Field Type Required
name string Yes
platform enum Yes
platform_campaign_id string Yes
status enum No
objective string No
budget number No
start_date string No
end_date string No
metadata record No

Response#

Success (201):

{
  success,
  data,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/campaigns' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Campaigns :id#

Endpoint: GET /admin/marketing/campaigns/:id Authentication: Admin (Required)

Description#

// Get campaign by ID

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  success,
  data,
}

Also returns:

{
  success,
  data,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/campaigns/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PATCH Admin Marketing Campaigns :id#

Endpoint: PATCH /admin/marketing/campaigns/:id Authentication: Admin (Required)

Description#

// Update campaign

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

Field Type Required
name string No
status enum No
budget number No
end_date string No
metadata record No

Response#

Success:

{
  success,
  data,
  message,
}

Example Request#

curl -X PATCH 'https://your-store.omnicart.cc/admin/marketing/campaigns/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Marketing Campaigns :id#

Endpoint: DELETE /admin/marketing/campaigns/:id Authentication: Admin (Required)

Description#

// Delete campaign

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  success,
  message,
  archived,
}

Also returns:

{
  success,
  message,
  deleted,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/marketing/campaigns/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Campaigns :id Insights#

Endpoint: GET /admin/marketing/campaigns/:id/insights Authentication: Admin (Required)

Description#

// Get campaign insights

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  success,
  data,
}

Error (404):

{
  success,
  message,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/campaigns/:id/insights' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Clickhouse#

Endpoint: GET /admin/marketing/clickhouse Authentication: Admin (Required)

Description#

// GET /admin/marketing/clickhouse - Get ClickHouse configuration

Response#

Success:

{
  success,
  data,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/clickhouse' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Clickhouse#

Endpoint: POST /admin/marketing/clickhouse Authentication: Admin (Required)

Description#

// POST /admin/marketing/clickhouse - Save ClickHouse configuration

Request Body#

Field Type Required
url unknown Yes
database string Yes
user string Yes
password string Yes

Response#

Success:

{
  success,
  message,
  data,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/clickhouse' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Marketing Clickhouse#

Endpoint: DELETE /admin/marketing/clickhouse Authentication: Admin (Required)

Description#

// DELETE /admin/marketing/clickhouse - Remove ClickHouse configuration

Response#

Success:

{
  success,
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/marketing/clickhouse' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Creatives#

Endpoint: GET /admin/marketing/creatives Authentication: Admin (Required)

Description#

// List creatives

Response#

Success:

{
  success,
  data,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/creatives' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Creatives#

Endpoint: POST /admin/marketing/creatives Authentication: Admin (Required)

Description#

// Create creative

Request Body#

Field Type Required
adSetId string No
campaignId string No
type enum No
status enum No
performanceStatus enum No
limit number No
offset number No
order enum(created_at, ctr, conversions, spend) No
direction enum(ASC, DESC) No

Response#

Success (201):

{
  success,
  data,
}

Error (404):

{
  success,
  message,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/creatives' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Credentials#

Endpoint: GET /admin/marketing/credentials Authentication: Admin (Required)

Description#

// GET - Get credentials for all platforms

Response#

Success:

{
  success,
  data,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/credentials' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Credentials#

Endpoint: POST /admin/marketing/credentials Authentication: Admin (Required)

Description#

// POST - Save credentials for a platform

Request Body#

Field Type Required
platform enum Yes
facebook_app_id string No
facebook_app_secret string No
facebook_access_token string No
facebook_ad_account_id string No
facebook_webhook_verify_token string No
google_client_id string No
google_client_secret string No
google_refresh_token string No
google_developer_token string No
google_customer_id string No
google_webhook_secret string No
tiktok_app_id string No
tiktok_app_secret string No
tiktok_access_token string No
tiktok_advertiser_id string No
tiktok_webhook_secret string No
tiktok_webhook_verify_token string No
clickhouse_url string No
clickhouse_database string No
clickhouse_user string No
clickhouse_password string No
campaign_sync_enabled boolean No
campaign_sync_schedule string No
incremental_sync_enabled boolean No
incremental_sync_schedule string No

Response#

Success:

{
  success,
  message,
  data,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/credentials' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PUT Admin Marketing Credentials#

Endpoint: PUT /admin/marketing/credentials Authentication: Admin (Required)

Description#

// PUT - Update credentials for a platform

Request Body#

Field Type Required
platform enum Yes
facebook_app_id string No
facebook_app_secret string No
facebook_access_token string No
facebook_ad_account_id string No
facebook_webhook_verify_token string No
google_client_id string No
google_client_secret string No
google_refresh_token string No
google_developer_token string No
google_customer_id string No
google_webhook_secret string No
tiktok_app_id string No
tiktok_app_secret string No
tiktok_access_token string No
tiktok_advertiser_id string No
tiktok_webhook_secret string No
tiktok_webhook_verify_token string No
clickhouse_url string No
clickhouse_database string No
clickhouse_user string No
clickhouse_password string No
campaign_sync_enabled boolean No
campaign_sync_schedule string No
incremental_sync_enabled boolean No
incremental_sync_schedule string No

Response#

Success:

{
  success,
  message,
  data,
}

Example Request#

curl -X PUT 'https://your-store.omnicart.cc/admin/marketing/credentials' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Marketing Credentials#

Endpoint: DELETE /admin/marketing/credentials Authentication: Admin (Required)

Description#

// DELETE - Remove credentials for a platform

Response#

Success:

{
  success,
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/marketing/credentials' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Customer-journey :customerId#

Endpoint: GET /admin/marketing/customer-journey/:customerId Authentication: Admin (Required)

Description#

// Get customer journey analysis

URL Parameters#

Parameter Type Required Description
customerId string Yes CustomerId identifier

Response#

Success:

{
  success,
  data,
}

Error (404):

{
  success,
  message,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/customer-journey/:customerId' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Dashboard#

Endpoint: GET /admin/marketing/dashboard Authentication: Admin (Required)

Response#

Success:

{
  metrics,
  platformBreakdown,
  recentCampaigns,
  timeSeriesData,
  dateRange,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/dashboard' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Paid-acquisition#

Endpoint: GET /admin/marketing/paid-acquisition Authentication: Admin (Required)

Description#

GET /admin/marketing/paid-acquisition Generate paid acquisition operational report with query parameters

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/paid-acquisition' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Paid-acquisition#

Endpoint: POST /admin/marketing/paid-acquisition Authentication: Admin (Required)

Description#

POST /admin/marketing/paid-acquisition Generate paid acquisition operational report with advanced filtering

Request Body#

Field Type Required
start_date string Yes
end_date string Yes
platforms string No
campaigns string No
funnel_stages string No
funnel_types string No
attribution_model unknown No
attribution_window_days string No
granularity unknown No
drill_down_dimensions string No
metrics string No
sort_by string No
sort_order enum(asc, desc) No
limit string No
offset string No

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/paid-acquisition' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Paid-acquisition Export#

Endpoint: POST /admin/marketing/paid-acquisition/export Authentication: Admin (Required)

Description#

POST /admin/marketing/paid-acquisition/export Export paid acquisition operational report in various formats

Request Body#

Field Type Required
reportRequest record No
format unknown Yes
includeCharts boolean No
includeRawData boolean No
customFields array No
fileName string No

Response#

Success:

{
  success,
  data,
  meta,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/paid-acquisition/export' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

Endpoint: GET /admin/marketing/paid-acquisition/search Authentication: Admin (Required)

Description#

GET /admin/marketing/paid-acquisition/search Search and filter paid acquisition data with query parameters

Response#

Success:

{
  success,
  data,
  facets,
  meta,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/paid-acquisition/search' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Paid-acquisition Search#

Endpoint: POST /admin/marketing/paid-acquisition/search Authentication: Admin (Required)

Description#

POST /admin/marketing/paid-acquisition/search Advanced search with complex filtering and faceted search

Request Body#

Field Type Required
query string No
facets string No
platforms string No
campaigns string No
funnel_stages string No
funnel_types string No
attribution_model unknown No
start_date string No
end_date string No
min_spend string No
max_spend string No
min_roas string No
max_roas string No
min_conversions string No
max_conversions string No
countries string No
regions string No
age_groups string No
genders string No
device_types string No
sort_by string No
sort_order enum(asc, desc) No
limit string No
offset string No

Response#

Success:

{
  success,
  data,
  facets,
  aggregations,
  meta,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/paid-acquisition/search' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Platforms#

Endpoint: GET /admin/marketing/platforms Authentication: Admin (Required)

Description#

// Get platform overview

Response#

Success:

{
  success,
  data,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/platforms' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Simple#

Endpoint: GET /admin/marketing/simple Authentication: Admin (Required)

Response#

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/simple' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Sync#

Endpoint: POST /admin/marketing/sync Authentication: Admin (Required)

Description#

// Sync campaigns from advertising platforms

Request Body#

Field Type Required
platform enum Yes
accountId string Yes
syncType enum(campaigns, full) No
options object No

Response#

Success:

{
  success,
  data,
  message,
}

Error (400):

{
  success,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/sync' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Sync Campaign#

Endpoint: POST /admin/marketing/sync/campaign Authentication: Admin (Required)

Description#

// POST - Trigger campaign sync

Request Body#

Field Type Required
platform enum No
accountId string No

Response#

Success:

{
  success,
  message,
  data,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/sync/campaign' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Sync Incremental#

Endpoint: POST /admin/marketing/sync/incremental Authentication: Admin (Required)

Description#

// POST - Trigger incremental sync

Request Body#

Field Type Required
platform enum No
lookbackDays number No

Response#

Success:

{
  success,
  message,
  data,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/sync/incremental' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Webhooks Facebook#

Endpoint: GET /admin/marketing/webhooks/facebook Authentication: Admin (Required)

Description#

// GET endpoint for webhook verification

Response#

Error (400):

{
  success,
  message,
  errors,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/webhooks/facebook' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Webhooks Facebook#

Endpoint: POST /admin/marketing/webhooks/facebook Authentication: Admin (Required)

Description#

// POST endpoint for webhook events

Request Body#

Field Type Required
hub.mode unknown Yes
hub.challenge string Yes
hub.verify_token string Yes

Response#

Success (200):

{
  success,
  received,
  processed,
  errors,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/webhooks/facebook' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

HEAD Admin Marketing Webhooks Facebook#

Endpoint: HEAD /admin/marketing/webhooks/facebook Authentication: Admin (Required)

Description#

// Health check endpoint

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X HEAD 'https://your-store.omnicart.cc/admin/marketing/webhooks/facebook' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Webhooks Google#

Endpoint: POST /admin/marketing/webhooks/google Authentication: Admin (Required)

Description#

// POST endpoint for Google Ads webhook events

Request Body#

Field Type Required
customerId string Yes
eventType enum(update, update, update, new, tracked, tracked, view, tracked, exhausted, violation) Yes
timestamp string Yes
data record No
signature string Yes

Response#

Success (200):

{
  success,
  received,
  eventType,
  processed,
}

Also returns (200):

{
  success,
  received,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/webhooks/google' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Webhooks Google#

Endpoint: GET /admin/marketing/webhooks/google Authentication: Admin (Required)

Description#

// GET endpoint for webhook verification (if Google implements it)

Response#

Success (200):

{
  status,
  webhook,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/webhooks/google' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Marketing Webhooks Tiktok#

Endpoint: POST /admin/marketing/webhooks/tiktok Authentication: Admin (Required)

Description#

// POST endpoint for TikTok webhook events

Request Body#

Field Type Required
event_type enum(track, complete, impression, click, view, view, submit, add_to_cart, checkout, purchase, install, open, status_change, exhausted) Yes
timestamp number Yes
advertiser_id string Yes
data record No

Response#

Success (200):

{
  success,
  received,
  event_type,
  processed,
}

Also returns (200):

{
  success,
  received,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/marketing/webhooks/tiktok' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Marketing Webhooks Tiktok#

Endpoint: GET /admin/marketing/webhooks/tiktok Authentication: Admin (Required)

Description#

// GET endpoint for webhook verification

Response#

Success (200):

{
  code,
  message,
}

Also returns (200):

{
  status,
  webhook,
}

Error (401):

{
  code,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/marketing/webhooks/tiktok' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

HEAD Admin Marketing Webhooks Tiktok#

Endpoint: HEAD /admin/marketing/webhooks/tiktok Authentication: Admin (Required)

Description#

// HEAD endpoint for health check

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X HEAD 'https://your-store.omnicart.cc/admin/marketing/webhooks/tiktok' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Me#

Endpoint: GET /admin/me Authentication: Admin (Required)

Description#

GET /admin/me Returns the currently logged-in admin user

Response#

Success:

{
  user,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/me' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin My-stores#

Endpoint: GET /admin/my-stores Authentication: Admin (Required)

Response#

Success:

{
  stores,
}

Also returns:

{
  stores,
}

Also returns:

{
  stores,
}

Also returns:

{
  stores,
}

Also returns:

{
  stores,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/my-stores' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin My-stores Switch#

Endpoint: POST /admin/my-stores/switch Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  error,
}

Also returns:

{
  redirectUrl,
  expiresInSeconds,
}

Error (400):

{
  error,
}

Error (503):

{
  error,
}

Error (403):

{
  error,
}

Error (502):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/my-stores/switch' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Payment-diagnostics#

Endpoint: GET /admin/payment-diagnostics Authentication: Admin (Required)

Description#

GET /admin/payment-diagnostics Diagnostic endpoint to identify payment session issues

Response#

Success:

{
  ...diagnostics
  summary,
}

Error (400):

{
  message,
}

Error (404):

{
  message,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/payment-diagnostics' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Payment-diagnostics#

Endpoint: POST /admin/payment-diagnostics Authentication: Admin (Required)

Description#

POST /admin/payment-diagnostics/cleanup Force cleanup of stale payment sessions

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  success,
  cleaned,
  failed,
  details,
  duration,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/payment-diagnostics' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Payments :id Sync-stripe#

Endpoint: POST /admin/payments/:id/sync-stripe Authentication: Admin (Required)

Description#

POST /admin/payments/:id/sync-stripe Syncs payment status from Stripe to OmniCart. Fetches the latest payment intent status including: - Payment status (succeeded, canceled, etc.) - Dispute status (if disputed) - Refund status Updates the payment record metadata with current Stripe status.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (200):

{
  success,
  payment_id,
  stripe_payment_intent,
  status,
  warnings,
  sync_details,
}

Error (404):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Error (500):

{
  type,
  message,
}

Error (400):

{
  type,
  message,
  code,
}

Error (500):

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/payments/:id/sync-stripe' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Promotions :id :rule_type#

Endpoint: GET /admin/promotions/:id/:rule_type Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier
rule_type string Yes Rule_type identifier

Response#

Success:

{
  rules,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/promotions/:id/:rule_type' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Promotions :id Rule-divergence#

Endpoint: GET /admin/promotions/:id/rule-divergence Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/promotions/:id/rule-divergence' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Promotions :id Rule-divergence#

Endpoint: POST /admin/promotions/:id/rule-divergence Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  applied,
  mode,
  synced_product_ids,
  synced_products,
  ...serialise(after.promotion, after.divergence, after.missingProducts, after.plan)
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/promotions/:id/rule-divergence' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Promotions Rule-attribute-options :rule_type#

Endpoint: GET /admin/promotions/rule-attribute-options/:rule_type Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
rule_type string Yes Rule_type identifier

Response#

Success:

{
  attributes,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/promotions/rule-attribute-options/:rule_type' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Promotions Rule-value-options :rule_type :rule_attribute_id#

Endpoint: GET /admin/promotions/rule-value-options/:rule_type/:rule_attribute_id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
rule_type string Yes Rule_type identifier
rule_attribute_id string Yes Rule_attribute_id identifier

Response#

Success:

{
  values,
  count,
  offset,
  limit,
}

Also returns:

{
  values,
  count,
  estimate_count,
  offset,
  limit,
}

Also returns:

{
  values,
  count,
  offset,
  limit,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/promotions/rule-value-options/:rule_type/:rule_attribute_id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Purchase-orders#

Endpoint: GET /admin/purchase-orders Authentication: Admin (Required)

Response#

Success:

{
  purchase_orders,
  count,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/purchase-orders' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Purchase-orders#

Endpoint: POST /admin/purchase-orders Authentication: Admin (Required)

Request Body#

Field Type Required
inventory_item_id string No
variant_id string No
location_id string Yes
quantity string Yes
unit_cost string Yes
valuation_method enum(FIFO, LIFO, WEIGHTED_AVG) No
supplier_id string No
purchase_date string No
currency_code string No
notes string No
metadata record No

Response#

Success (201):

{
  module_enabled,
  purchase_order,
  inventory_costs,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
  issues,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (400):

{
  message,
}

Error (500):

{
  message,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/purchase-orders' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Renewals#

Endpoint: GET /admin/renewals Authentication: Admin (Required)

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/renewals' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Renewals :id#

Endpoint: GET /admin/renewals/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/renewals/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Renewals :id Approve-changes#

Endpoint: POST /admin/renewals/:id/approve-changes Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/renewals/:id/approve-changes' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Renewals :id Force#

Endpoint: POST /admin/renewals/:id/force Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/renewals/:id/force' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Renewals :id Reject-changes#

Endpoint: POST /admin/renewals/:id/reject-changes Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/renewals/:id/reject-changes' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Reviews#

Endpoint: GET /admin/reviews Authentication: Admin (Required)

Response#

Success:

{
  reviews,
  count,
  limit,
  offset,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/reviews' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Reviews Status#

Endpoint: POST /admin/reviews/status Authentication: Admin (Required)

Request Body#

Field Type Required
ids array Yes
status enum(pending, approved, rejected) Yes

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/reviews/status' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Scheduled-jobs#

Endpoint: GET /admin/scheduled-jobs Authentication: Admin (Required)

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/scheduled-jobs' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Scheduled-jobs :name#

Endpoint: GET /admin/scheduled-jobs/:name Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
name string Yes Name identifier

Response#

Error (400):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/scheduled-jobs/:name' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Send#

Endpoint: GET /admin/send Authentication: Admin (Required)

Description#

Parent route for /admin/send This route handles delegation to sub-routes

Response#

Error (404):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/send' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Send#

Endpoint: POST /admin/send Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Error (404):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/send' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Send Email-templates#

Endpoint: GET /admin/send/email-templates Authentication: Admin (Required)

Description#

GET /admin/send/email-templates List all email templates with optional filtering

Response#

Success:

{
  templates,
  count,
}

Error (400):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/send/email-templates' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Send Email-templates#

Endpoint: POST /admin/send/email-templates Authentication: Admin (Required)

Description#

POST /admin/send/email-templates Create a new email template

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (201):

{
  template,
}

Error (400):

{
  error,
}

Error (400):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/send/email-templates' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Send Email-templates :id#

Endpoint: GET /admin/send/email-templates/:id Authentication: Admin (Required)

Description#

GET /admin/send/email-templates/:id Get a specific email template

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  template,
}

Error (404):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/send/email-templates/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PUT Admin Send Email-templates :id#

Endpoint: PUT /admin/send/email-templates/:id Authentication: Admin (Required)

Description#

PUT /admin/send/email-templates/:id Update an email template

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  template,
}

Error (400):

{
  error,
}

Error (404):

{
  error,
}

Error (404):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X PUT 'https://your-store.omnicart.cc/admin/send/email-templates/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Send Email-templates :id#

Endpoint: DELETE /admin/send/email-templates/:id Authentication: Admin (Required)

Description#

DELETE /admin/send/email-templates/:id Delete an email template (soft delete)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  success,
}

Error (404):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/send/email-templates/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Send Email-templates :id Preview#

Endpoint: POST /admin/send/email-templates/:id/preview Authentication: Admin (Required)

Description#

POST /admin/send/email-templates/:id/preview Preview an email template with sample or custom data

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  preview,
}

Error (404):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/send/email-templates/:id/preview' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Send Email-templates :id Render#

Endpoint: POST /admin/send/email-templates/:id/render Authentication: Admin (Required)

Description#

POST /admin/send/email-templates/:id/render Render an email template with sample data

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  rendered,
  sampleData,
}

Error (400):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/send/email-templates/:id/render' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Send Email-templates Validate#

Endpoint: POST /admin/send/email-templates/validate Authentication: Admin (Required)

Description#

POST /admin/send/email-templates/validate Validate email template syntax without saving

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  isValid,
  message,
}

Error (400):

{
  error,
}

Error (400):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/send/email-templates/validate' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Site-types#

Endpoint: GET /admin/site-types Authentication: Admin (Required)

Response#

Success:

{
  items,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/site-types' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Site-types#

Endpoint: POST /admin/site-types Authentication: Admin (Required)

Request Body#

Field Type Required
key string Yes
label string No
framework string No
active boolean No
template_owner string No
template_repo string No
repo_provider string No
repo_owner string No
repo_name string No
default_branch string No
suggested_envs any No

Response#

Success:

{
  item,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/site-types' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Site-types :id#

Endpoint: GET /admin/site-types/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  item,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/site-types/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PATCH Admin Site-types :id#

Endpoint: PATCH /admin/site-types/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

Field Type Required
label string No
framework string No
active boolean No
template_owner string No
template_repo string No
repo_provider string No
repo_owner string No
repo_name string No
default_branch string No
suggested_envs any No

Response#

Success:

{
  item,
}

Example Request#

curl -X PATCH 'https://your-store.omnicart.cc/admin/site-types/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Site-types :id#

Endpoint: DELETE /admin/site-types/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/site-types/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscription-analytics Export#

Endpoint: GET /admin/subscription-analytics/export Authentication: Admin (Required)

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-analytics/export' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscription-analytics Kpis#

Endpoint: GET /admin/subscription-analytics/kpis Authentication: Admin (Required)

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-analytics/kpis' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscription-analytics Rebuild#

Endpoint: POST /admin/subscription-analytics/rebuild Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (200):

{
  rebuild,
}

Also returns:

{
  type,
  message,
}

Error (400):

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscription-analytics/rebuild' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

Endpoint: GET /admin/subscription-analytics/trends Authentication: Admin (Required)

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-analytics/trends' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscription-logs#

Endpoint: GET /admin/subscription-logs Authentication: Admin (Required)

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-logs' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscription-logs :id#

Endpoint: GET /admin/subscription-logs/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-logs/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscription-offers#

Endpoint: GET /admin/subscription-offers Authentication: Admin (Required)

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-offers' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscription-offers#

Endpoint: POST /admin/subscription-offers Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscription-offers' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscription-offers :id#

Endpoint: GET /admin/subscription-offers/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-offers/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscription-offers :id#

Endpoint: POST /admin/subscription-offers/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscription-offers/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Subscription-offers :id#

Endpoint: DELETE /admin/subscription-offers/:id Authentication: Admin (Required)

Description#

Remove a plan offer. Until now an offer could only be disabled, so a list accumulated every one created by mistake and there was no way to tell those apart from offers deliberately paused. The delete is soft: the record stays available to anyone reconstructing why a subscription renewed at the price it did.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success (200):

{
  id,
  object,
  deleted,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/subscription-offers/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscription-offers :id Toggle#

Endpoint: POST /admin/subscription-offers/:id/toggle Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscription-offers/:id/toggle' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscription-settings#

Endpoint: GET /admin/subscription-settings Authentication: Admin (Required)

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscription-settings' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscription-settings#

Endpoint: POST /admin/subscription-settings Authentication: Admin (Required)

Request Body#

Field Type Required
default_trial_days number No
dunning_retry_intervals array No
max_dunning_attempts number No
default_renewal_behavior unknown No
default_cancellation_behavior unknown No
expected_version number No
reason string No

Response#

Success:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscription-settings' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscriptions#

Endpoint: GET /admin/subscriptions Authentication: Admin (Required)

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscriptions' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscriptions :id#

Endpoint: GET /admin/subscriptions/:id Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscriptions/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Cancel#

Endpoint: POST /admin/subscriptions/:id/cancel Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/cancel' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscriptions :id Notes#

Endpoint: GET /admin/subscriptions/:id/notes Authentication: Admin (Required)

Description#

GET /admin/subscriptions/:id/notes Returns all notes for a subscription

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  notes,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscriptions/:id/notes' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Notes#

Endpoint: POST /admin/subscriptions/:id/notes Authentication: Admin (Required)

Description#

POST /admin/subscriptions/:id/notes Add a new note to a subscription Body: { content: string, tag?: "Called" | "Email" | "Issue" | "Shipping" | "Refund" | null }

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  note,
  notes,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/notes' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Subscriptions :id Notes :noteId#

Endpoint: DELETE /admin/subscriptions/:id/notes/:noteId Authentication: Admin (Required)

Description#

DELETE /admin/subscriptions/:id/notes/:noteId Delete a specific note from a subscription

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier
noteId string Yes NoteId identifier

Response#

Success:

{
  success,
  notes,
}

Error (404):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/subscriptions/:id/notes/:noteId' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

PUT Admin Subscriptions :id Notes :noteId#

Endpoint: PUT /admin/subscriptions/:id/notes/:noteId Authentication: Admin (Required)

Description#

PUT /admin/subscriptions/:id/notes/:noteId Update a specific note (content and tag; author and created_at are preserved) Body: { content: string, tag?: "Called" | "Email" | "Issue" | "Shipping" | "Refund" | null }

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier
noteId string Yes NoteId identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  note,
  notes,
}

Error (404):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X PUT 'https://your-store.omnicart.cc/admin/subscriptions/:id/notes/:noteId' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Pause#

Endpoint: POST /admin/subscriptions/:id/pause Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/pause' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Subscriptions :id Payment-method#

Endpoint: GET /admin/subscriptions/:id/payment-method Authentication: Admin (Required)

Description#

GET /admin/subscriptions/:id/payment-method The card a subscription renews on: { provider_id, payment_method: { id, type, brand, last4, exp_month, exp_year } | null }. Lists the Stripe customer's saved methods through the payment module and picks the one payment_context.payment_method_reference names. The raw payment_context is never returned.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success (200):

{
  provider_id,
  payment_method,
}

Also returns:

{
  type,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/subscriptions/:id/payment-method' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Payment-method#

Endpoint: POST /admin/subscriptions/:id/payment-method Authentication: Admin (Required)

Description#

POST /admin/subscriptions/:id/payment-method Body { setup_intent_id, retry_dunning? = true }. Verifies the SetupIntent at Stripe (succeeded, on this customer, minted for this subscription), writes the new method into payment_context, logs subscription.payment_method_updated, and on a PAST_DUE subscription runs the dunning retry POST /admin/dunning/:id/retry-now runs. Response: the subscription detail plus payment_method_summary and dunning_retry (ran | skipped_no_case | skipped_retrying | skipped_max_attempts | disabled | failed), with dunning_case_id and dunning_retry_error when a case was involved. The card is saved before the detail is read back. A detail read that fails still answers 200, with subscription: null and detail_error set — a 500 there would tell the operator to retry an action that already charged.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  type,
  message,
}

Also returns (200):

{
  ...(detail ?? { subscription: null })
  detail_error,
  payment_method_summary,
  dunning_retry,
  dunning_case_id,
  dunning_retry_error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/payment-method' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Payment-method Setup#

Endpoint: POST /admin/subscriptions/:id/payment-method/setup Authentication: Admin (Required)

Description#

POST /admin/subscriptions/:id/payment-method/setup Start a card replacement: create a Stripe SetupIntent on the subscription's Stripe customer and return what the admin form needs to confirm it. The SetupIntent is created through the subscription's own payment provider (live or sandbox), so its secret key and the publishable key returned here belong to the same Stripe account. metadata.subscription_id is stamped here and checked again when the intent comes back. Response: { setup_intent_id, client_secret, publishable_key, provider_id, account_holder_id, sandbox }.

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success (200):

{
  setup_intent_id,
  client_secret,
  publishable_key,
  provider_id,
  account_holder_id,
  sandbox,
}

Also returns:

{
  type,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/payment-method/setup' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Resume#

Endpoint: POST /admin/subscriptions/:id/resume Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/resume' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Schedule-plan-change#

Endpoint: POST /admin/subscriptions/:id/schedule-plan-change Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/schedule-plan-change' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Update-discount#

Endpoint: POST /admin/subscriptions/:id/update-discount Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/update-discount' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Update-next-cycle-discount#

Endpoint: POST /admin/subscriptions/:id/update-next-cycle-discount Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/update-next-cycle-discount' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Update-quantity#

Endpoint: POST /admin/subscriptions/:id/update-quantity Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/update-quantity' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Update-renewal#

Endpoint: POST /admin/subscriptions/:id/update-renewal Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/update-renewal' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Subscriptions :id Update-shipping-address#

Endpoint: POST /admin/subscriptions/:id/update-shipping-address Authentication: Admin (Required)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/subscriptions/:id/update-shipping-address' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Ultracart#

Endpoint: GET /admin/ultracart Authentication: Admin (Required)

Description#

GET /admin/ultracart Get UltraCart module status and statistics

Response#

Success:

{
  status,
  health,
  statistics,
  scheduledSync,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/ultracart' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Ultracart#

Endpoint: POST /admin/ultracart Authentication: Admin (Required)

Description#

POST /admin/ultracart Manually sync an order to UltraCart (respects modification window) Body: { orderId: string }

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  success,
  message,
  ultracartOrderId,
  attempts,
}

Also returns:

{
  success,
  error,
  message,
  errorCode,
}

Error (400):

{
  error,
  ...formattedErrors
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/ultracart' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Ultracart Force-sync#

Endpoint: POST /admin/ultracart/force-sync Authentication: Admin (Required)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  success,
  message,
  ultracartOrderId,
  attempts,
}

Error (400):

{
  error,
  ...formattedErrors
}

Error (400):

{
  success,
  message,
  error,
  errorCode,
  attempts,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/ultracart/force-sync' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Ultracart Modification-window#

Endpoint: GET /admin/ultracart/modification-window Authentication: Admin (Required)

Response#

Success:

{
  orderId,
  canModify,
  syncStatus,
  scheduledSyncAt,
  modificationWindowExpiresAt,
  isLocked,
  modificationCount,
  lastModifiedAt,
}

Error (400):

{
  error,
  ...formattedErrors
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/ultracart/modification-window' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Ultracart Modification-window#

Endpoint: POST /admin/ultracart/modification-window Authentication: Admin (Required)

Description#

POST /admin/ultracart/modification-window Reset modification window for an order (extends sync delay) Body: { orderId: string }

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  success,
  message,
  ...result
}

Error (400):

{
  error,
  ...formattedErrors
}

Error (400):

{
  error,
  message,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/ultracart/modification-window' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Ultracart Scheduled#

Endpoint: GET /admin/ultracart/scheduled Authentication: Admin (Required)

Response#

Success:

{
  orders,
  stats,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/ultracart/scheduled' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Ultracart Scheduled#

Endpoint: POST /admin/ultracart/scheduled Authentication: Admin (Required)

Description#

POST /admin/ultracart/scheduled Manually trigger processing of scheduled syncs

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  success,
  message,
  ...result
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/ultracart/scheduled' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Ultracart Stats#

Endpoint: GET /admin/ultracart/stats Authentication: Admin (Required)

Response#

Success:

{
  health,
  sync,
  scheduled,
  delayedSyncConfig,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/ultracart/stats' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Vibe#

Endpoint: GET /admin/vibe Authentication: Admin (Required)

Description#

GET /admin/vibe/* Serve Vibe SDK static files from vibe-static/ directory Note: This route handles both /admin/vibe and /admin/vibe/* paths by extracting the path from the request URL.

Response#

The handler does not return an object literal, so the response shape is not derivable from the source.

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/vibe' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Vibesdk Config :siteId#

Endpoint: GET /admin/vibesdk/config/:siteId Authentication: Admin (Required)

Description#

GET /admin/vibesdk/config/:siteId Get VibeSDK configuration for a specific site Returns configuration needed to initialize the embedded VibeSDK

URL Parameters#

Parameter Type Required Description
siteId string Yes SiteId identifier

Response#

Error (400):

{
  error,
}

Error (404):

{
  error,
}

Error (500):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/vibesdk/config/:siteId' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Vibesdk Proxy#

Endpoint: POST /admin/vibesdk/proxy Authentication: Admin (Required)

Description#

POST /admin/vibesdk/proxy Proxy requests to VibeSDK with our GitHub credentials This allows the embedded VibeSDK to access our GitHub repos through our backend authentication

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Error (400):

{
  error,
}

Error (404):

{
  error,
}

Error (400):

{
  error,
}

Error (401):

{
  error,
}

Error (400):

{
  error,
}

Error (500):

{
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/vibesdk/proxy' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Vibesdk Sso-token#

Endpoint: GET /admin/vibesdk/sso-token Authentication: Admin (Required)

Description#

GET /admin/vibesdk/sso-token?siteId=... Returns a short-lived JWT for embedded VibeSDK sessions.

Response#

Success:

{
  token,
}

Error (400):

{
  error,
}

Error (500):

{
  error,
}

Error (404):

{
  error,
}

Error (500):

{
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/vibesdk/sso-token' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Vibesdk Validate-sso#

Endpoint: POST /admin/vibesdk/validate-sso Authentication: Admin (Required)

Description#

POST /admin/vibesdk/validate-sso Validates SSO tokens from embedded VibeSDK sessions. Called by VibeSDK worker to verify authentication tokens. Expected header: Authorization: Bearer {ssoToken} Returns user data for VibeSDK session creation.

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  user,
  validated_at,
  token_expires_at,
}

Error (401):

{
  error,
}

Error (500):

{
  error,
}

Error (401):

{
  error,
  details,
}

Error (401):

{
  error,
}

Error (500):

{
  error,
  message,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/vibesdk/validate-sso' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Webhook-logs#

Endpoint: GET /admin/webhook-logs Authentication: Admin (Required)

Description#

GET /admin/webhook-logs List all webhook logs with filtering and pagination Query params: - provider: Filter by provider (stripe, paypal, nmi, etc.) - event_type: Filter by event type - status: Filter by status (received, processing, success, failed, skipped) - order_id: Filter by order ID - payment_id: Filter by payment ID - from_date: Filter from date (ISO string) - to_date: Filter to date (ISO string) - limit: Number of results (default 50) - offset: Pagination offset (default 0)

Response#

Success:

{
  webhook_logs,
  count,
  limit,
  offset,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/webhook-logs' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Webhook-logs :id#

Endpoint: GET /admin/webhook-logs/:id Authentication: Admin (Required)

Description#

GET /admin/webhook-logs/:id Get a single webhook log by ID with full details

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success:

{
  webhook_log,
}

Error (404):

{
  message,
  error,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/webhook-logs/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

DELETE Admin Webhook-logs :id#

Endpoint: DELETE /admin/webhook-logs/:id Authentication: Admin (Required)

Description#

DELETE /admin/webhook-logs/:id Delete a webhook log (for cleanup purposes)

URL Parameters#

Parameter Type Required Description
id string Yes Id identifier

Response#

Success (200):

{
  id,
  deleted,
}

Error (404):

{
  message,
  error,
}

Example Request#

curl -X DELETE 'https://your-store.omnicart.cc/admin/webhook-logs/:id' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

POST Admin Webhook-logs Cleanup#

Endpoint: POST /admin/webhook-logs/cleanup Authentication: Admin (Required)

Description#

POST /admin/webhook-logs/cleanup Cleanup old webhook logs Body: - days_to_keep: Number of days to keep logs (default 30)

Request Body#

This route does not declare a validation schema, so the accepted fields are not derivable from the source. Check the handler before relying on a particular body.

Response#

Success:

{
  success,
  deleted_count,
  days_kept,
}

Error (500):

{
  success,
  error,
}

Example Request#

curl -X POST 'https://your-store.omnicart.cc/admin/webhook-logs/cleanup' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Webhook-logs Providers#

Endpoint: GET /admin/webhook-logs/providers Authentication: Admin (Required)

Description#

GET /admin/webhook-logs/providers Get list of unique providers that have sent webhooks

Response#

Success:

{
  providers,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/webhook-logs/providers' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'

GET Admin Webhook-logs Stats#

Endpoint: GET /admin/webhook-logs/stats Authentication: Admin (Required)

Description#

GET /admin/webhook-logs/stats Get webhook statistics and analytics Query params: - provider: Filter by provider - from_date: Filter from date (ISO string) - to_date: Filter to date (ISO string)

Response#

Success:

{
  stats,
}

Example Request#

curl -X GET 'https://your-store.omnicart.cc/admin/webhook-logs/stats' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json'