# Sites Deployments **Category:** Admin **Base URL:** `/admin/sites` **Authentication:** Required **Routes:** 15 routes documented ## Overview This section documents 15 API routes for sites deployments. > ⚠️ **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 | |--------|----------|-------------| | GET | `/admin/sites` | No description | | POST | `/admin/sites` | No description | | GET | `/admin/sites/:id` | No description | | POST | `/admin/sites/:id` | No description | | DELETE | `/admin/sites/:id` | No description | | GET | `/admin/sites/:id/domains` | No description | | POST | `/admin/sites/:id/domains` | No description | | GET | `/admin/sites/:id/env` | No description | | POST | `/admin/sites/:id/env` | No description | | POST | `/admin/sites/:id/env/sync` | No description | | GET | `/admin/sites/:id/integrations` | GET /admin/sites/:id/integrations Fetch all API credentials ... | | POST | `/admin/sites/:id/integrations` | POST /admin/sites/:id/integrations Link API credentials to a... | | DELETE | `/admin/sites/:id/integrations` | DELETE /admin/sites/:id/integrations Unlink API credentials ... | | GET | `/admin/sites/:id/products` | No description | | POST | `/admin/sites/:id/redeploy` | No description | | POST | `/admin/sites/:id/repo/commit` | No description | | GET | `/admin/sites/:id/repo/file` | No description | | GET | `/admin/sites/:id/repo/tree` | No description | | GET | `/admin/sites/:id/sales-channels` | No description | | POST | `/admin/sites/:id/sales-channels` | No description | | GET | `/admin/sites/:id/store-config` | GET /admin/sites/:id/store-config Fetch comprehensive store ... | | POST | `/admin/sites/:id/vercel/link` | No description | | POST | `/admin/sites/provision` | No description | --- ## GET Admin Sites **Endpoint:** `GET /admin/sites` **Authentication:** Admin (Required) ### Response **Success:** ```typescript { sites, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites **Endpoint:** `POST /admin/sites` **Authentication:** Admin (Required) ### Request Body | Field | Type | Required | |-------|------|----------| | `name` | string | Yes | | `slug` | string | Yes | | `salesChannelIds` | array | No | | `type` | enum(storefront, funnel, customer_portal, partner_portal) | No | | `framework` | enum(NEXTJS, ASTRO, REMIX, NUXT, SVELTEKIT) | No | | `repo_provider` | enum(GITHUB, GITLAB, BITBUCKET) | No | | `repo_owner` | string | No | | `repo_name` | string | No | | `status` | enum(PROVISIONING, ACTIVE, FAILED, ARCHIVED) | No | | `template_owner` | string | No | | `template_repo` | string | No | | `brand_id` | string | No | ### Response **Success:** ```typescript { site, } ``` **Error (409):** ```typescript { message, } ``` **Error (400):** ```typescript { message, } ``` **Error (500):** ```typescript { message, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id **Endpoint:** `GET /admin/sites/:id` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { site, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id **Endpoint:** `POST /admin/sites/:id` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body | Field | Type | Required | |-------|------|----------| | `sales_channel_ids` | array | No | | `brand_id` | string | No | | `selected_persona_ids` | array | No | | `name` | string | No | | `status` | enum(provisioning, active, failed, archived) | No | ### Response **Success:** ```typescript { site, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## DELETE Admin Sites :id **Endpoint:** `DELETE /admin/sites/: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 ```bash curl -X DELETE 'https://your-store.omnicart.cc/admin/sites/:id' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Domains **Endpoint:** `GET /admin/sites/:id/domains` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { domains, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/domains' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Domains **Endpoint:** `POST /admin/sites/:id/domains` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body | Field | Type | Required | |-------|------|----------| | `domain` | string | Yes | | `vercel_link` | boolean | No | | `add_www` | boolean | No | | `proxied_after_verify` | boolean | No | ### Response The handler does not return an object literal, so the response shape is not derivable from the source. ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/domains' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Env **Endpoint:** `GET /admin/sites/:id/env` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { env_vars, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/env' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Env **Endpoint:** `POST /admin/sites/:id/env` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body | Field | Type | Required | |-------|------|----------| | `name` | string | Yes | | `value` | string | Yes | | `target` | string | No | | `is_secret` | boolean | No | ### Response **Success:** ```typescript { env, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/env' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Env Sync **Endpoint:** `POST /admin/sites/:id/env/sync` **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:** ```typescript { siteId, status, count, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/env/sync' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Integrations **Endpoint:** `GET /admin/sites/:id/integrations` **Authentication:** Admin (Required) ### Description GET /admin/sites/:id/integrations Fetch all API credentials linked to this site ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { siteId, linkedIntegrations, availableIntegrations, count, } ``` **Error (500):** ```typescript { error, details, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/integrations' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Integrations **Endpoint:** `POST /admin/sites/:id/integrations` **Authentication:** Admin (Required) ### Description POST /admin/sites/:id/integrations Link API credentials to a site and auto-add env vars ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body | Field | Type | Required | |-------|------|----------| | `credentialIds` | array | Yes | ### Response **Success:** ```typescript { siteId, linkedCount, addedEnvVars, success, } ``` **Error (400):** ```typescript { error, details, } ``` **Error (500):** ```typescript { error, details, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/integrations' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## DELETE Admin Sites :id Integrations **Endpoint:** `DELETE /admin/sites/:id/integrations` **Authentication:** Admin (Required) ### Description DELETE /admin/sites/:id/integrations Unlink API credentials from a site and remove env vars ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { siteId, unlinkedCount, removedEnvVars, success, } ``` **Error (400):** ```typescript { error, details, } ``` **Error (500):** ```typescript { error, details, } ``` ### Example Request ```bash curl -X DELETE 'https://your-store.omnicart.cc/admin/sites/:id/integrations' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Products **Endpoint:** `GET /admin/sites/:id/products` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { siteId, products, count, } ``` **Also returns:** ```typescript { siteId, products, count, } ``` **Also returns:** ```typescript { siteId, products, count, } ``` **Error (500):** ```typescript { error, details, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/products' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Redeploy **Endpoint:** `POST /admin/sites/:id/redeploy` **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:** ```typescript { status, siteId, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/redeploy' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Repo Commit **Endpoint:** `POST /admin/sites/:id/repo/commit` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body | Field | Type | Required | |-------|------|----------| | `path` | string | Yes | | `content` | string | Yes | | `message` | string | Yes | | `branch` | string | No | | `sha` | string | No | ### Response **Success:** ```typescript { success, commit, content, } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/repo/commit' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Repo File **Endpoint:** `GET /admin/sites/:id/repo/file` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { path, sha, encoding, content, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/repo/file' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Repo Tree **Endpoint:** `GET /admin/sites/:id/repo/tree` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { branch, path, items, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/repo/tree' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Sales-channels **Endpoint:** `GET /admin/sites/:id/sales-channels` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { siteId, salesChannels, count, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/sales-channels' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Sales-channels **Endpoint:** `POST /admin/sites/:id/sales-channels` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body | Field | Type | Required | |-------|------|----------| | `salesChannelIds` | array | Yes | ### Response **Success:** ```typescript { siteId, ...result } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/sales-channels' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## GET Admin Sites :id Store-config **Endpoint:** `GET /admin/sites/:id/store-config` **Authentication:** Admin (Required) ### Description GET /admin/sites/:id/store-config Fetch comprehensive store configuration for a site including: - Store metadata (name, currencies, default settings) - Regions with payment providers and countries - Sales channels - Shipping options - Tax settings ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Response **Success:** ```typescript { siteId, store, regions, salesChannels, paymentProviders, siteLinkedChannels, } ``` **Also returns:** ```typescript { siteId, store, regions, salesChannels, paymentProviders, siteLinkedChannels, } ``` **Also returns:** ```typescript { siteId, store, regions, salesChannels, paymentProviders, siteLinkedChannels, } ``` **Error (500):** ```typescript { error, details, } ``` ### Example Request ```bash curl -X GET 'https://your-store.omnicart.cc/admin/sites/:id/store-config' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites :id Vercel Link **Endpoint:** `POST /admin/sites/:id/vercel/link` **Authentication:** Admin (Required) ### URL Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `id` | string | Yes | Id identifier | ### Request Body | Field | Type | Required | |-------|------|----------| | `project_id` | string | No | | `project_name` | string | No | | `team_id` | string | No | ### Response The handler does not return an object literal, so the response shape is not derivable from the source. ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/:id/vercel/link' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` --- ## POST Admin Sites Provision **Endpoint:** `POST /admin/sites/provision` **Authentication:** Admin (Required) ### Request Body | Field | Type | Required | |-------|------|----------| | `name` | string | Yes | | `slug` | string | Yes | | `salesChannelIds` | array | No | | `type` | enum(storefront, funnel, customer_portal, partner_portal) | No | | `template_owner` | string | No | | `template_repo` | string | No | | `repo_owner` | string | No | | `repo_name` | string | No | | `team_id` | string | No | ### Response **Success:** ```typescript { status, ...r } ``` ### Example Request ```bash curl -X POST 'https://your-store.omnicart.cc/admin/sites/provision' \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' ``` ---