Store imports API
REST endpoints for store imports in SKUFlow: 10 operations with parameters, request and response fields, permissions and curl examples.
Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.
| Operation | Endpoint | Risk |
|---|---|---|
| The DecoNetwork connection | GET /organizations/{organizationId}/store-imports/deconetwork/connection | read |
| Connect DecoNetwork | PUT /organizations/{organizationId}/store-imports/deconetwork/connection | sensitive |
| Disconnect DecoNetwork | DELETE /organizations/{organizationId}/store-imports/deconetwork/connection | sensitive |
| List the DecoNetwork site's stores | GET /organizations/{organizationId}/store-imports/deconetwork/stores | read |
| List store imports | GET /organizations/{organizationId}/store-imports | read |
| Preview a DecoNetwork store | POST /organizations/{organizationId}/store-imports | write |
| A store import | GET /organizations/{organizationId}/store-imports/{storeImportId} | read |
| Delete a store import record | DELETE /organizations/{organizationId}/store-imports/{storeImportId} | sensitive |
| Apply a store import | POST /organizations/{organizationId}/store-imports/{storeImportId}/apply | sensitive |
| Undo a store import | POST /organizations/{organizationId}/store-imports/{storeImportId}/undo | sensitive |
The DecoNetwork connection
GET /organizations/{organizationId}/store-imports/deconetwork/connection
Whether a DecoNetwork login is saved (the site's address and the server's mode; the username and password are never answered). Read-only; call before listing DecoNetwork stores.
| Permission | stores.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | storeImports_connection (toolset stores) |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/deconetwork/connection" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
connected | boolean | A login is saved and DecoNetwork accepted it. |
status | enum | Error: DecoNetwork refused the saved login since; save it again. One of CONNECTED, DISCONNECTED, ERROR. |
siteUrl | string or null | The DecoNetwork site's address (where its API is). |
mode | enum | fake: this server answers from synthetic fixtures (not production). One of fake, live, off. |
connectedAt | string (date-time) or null | |
lastError | string or null |
Connect DecoNetwork
PUT /organizations/{organizationId}/store-imports/deconetwork/connection
Saves the DecoNetwork site's address and a staff login (use a dedicated staff account; the site needs DecoNetwork's API apps, an Enterprise feature) after DecoNetwork accepted it with one order search. The password is stored encrypted and never answered or logged. 400 when DecoNetwork refuses the login or can't be reached. The login reads orders (the site's stores, production files, coupons) and blank costs; it changes nothing in DecoNetwork.
| Permission | stores.manage (Owner, Admin, Staff) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | storeImports_connect (toolset stores) |
| Plan | Online stores: the Grow plan and up. |
| Approval | Over MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
siteUrl | string | Yes | The DecoNetwork site's address, e.g. https://www.example.com (https is assumed). Up to 300 characters. |
username | string | Yes | A DecoNetwork staff login. Up to 200 characters. |
password | string | Yes | Its password (stored encrypted, never returned). Up to 500 characters. |
Example
curl -X PUT "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/deconetwork/connection" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"siteUrl":"https://example.com","username":"string","password":"string"}'Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
connected | boolean | A login is saved and DecoNetwork accepted it. |
status | enum | Error: DecoNetwork refused the saved login since; save it again. One of CONNECTED, DISCONNECTED, ERROR. |
siteUrl | string or null | The DecoNetwork site's address (where its API is). |
mode | enum | fake: this server answers from synthetic fixtures (not production). One of fake, live, off. |
connectedAt | string (date-time) or null | |
lastError | string or null |
Disconnect DecoNetwork
DELETE /organizations/{organizationId}/store-imports/deconetwork/connection
Destructive: forgets the saved DecoNetwork login. Stores and products already imported stay; storefronts can still be previewed (without production files or blank costs).
| Permission | stores.manage (Owner, Admin, Staff) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | storeImports_disconnect (toolset stores) |
| Approval | Over MCP, this tool always waits for your approval in SKUFlow. See Approvals. |
Example
curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/deconetwork/connection" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
connected | boolean | A login is saved and DecoNetwork accepted it. |
status | enum | Error: DecoNetwork refused the saved login since; save it again. One of CONNECTED, DISCONNECTED, ERROR. |
siteUrl | string or null | The DecoNetwork site's address (where its API is). |
mode | enum | fake: this server answers from synthetic fixtures (not production). One of fake, live, off. |
connectedAt | string (date-time) or null | |
lastError | string or null |
List the DecoNetwork site's stores
GET /organizations/{organizationId}/store-imports/deconetwork/stores
The stores of the connected DecoNetwork site with their addresses, as its orders of the last year name them (DecoNetwork has no API that lists stores; a store with no orders isn't listed: preview it by its address). Reads DecoNetwork; changes nothing. 409 without a connection (PUT /store-imports/deconetwork/connection).
| Permission | stores.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | storeImports_sites (toolset stores) |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/deconetwork/stores" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
siteUrl | string | |
items | array of object | |
items[].id | string | DecoNetwork's store id. |
items[].name | string | |
items[].url | string | The storefront's address: preview it with POST /store-imports. |
items[].orders | integer | Its orders in the period read. |
List store imports
GET /organizations/{organizationId}/store-imports
The business's store imports, newest first, with their status, summary, the store made and the result. Read-only.
| Permission | stores.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | storeImports_list (toolset stores) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | No | 1–100. |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
items | array of object | |
items[].id | string | |
items[].source | string | DECONETWORK. |
items[].sourceUrl | string | |
items[].sourceName | string | |
items[].status | enum | PREVIEWED (nothing made yet), QUEUED / RUNNING (applying), APPLIED, FAILED (error; apply again), UNDONE. One of PREVIEWED, QUEUED, RUNNING, APPLIED, FAILED, UNDONE. |
items[].customerId | string or null | |
items[].customer | object or null | |
items[].customer.id | string | |
items[].customer.name | string | |
items[].newCustomerName | string or null | Made when applying, when no customer was picked. |
items[].storeId | string or null | |
items[].store | object or null | The SKUFlow store made (a DRAFT until the owner opens it). |
items[].store.id | string | |
items[].store.name | string | |
items[].store.status | string | |
items[].store.url | string | |
items[].options | object | |
items[].options.storeName | string or null | |
items[].options.allowanceCents | integer or null | Integer cents. |
items[].options.payOverAllowanceByCard | boolean | |
items[].result | object or null | |
items[].result.customerId | string or null | |
items[].result.storeId | string or null | |
items[].result.counts | object | |
items[].result.products | array of object | |
items[].result.warnings | array of string | |
items[].result.todo | array of string | What the owner still has to do before opening the store. |
items[].progress | object or null | |
items[].progress.done | integer | |
items[].progress.total | integer | |
items[].progress.phase | string | |
items[].error | string or null | |
items[].createdAt | string (date-time) | |
items[].queuedAt | string (date-time) or null | |
items[].appliedAt | string (date-time) or null | |
items[].undoneAt | string (date-time) or null | |
items[].summary | object | |
items[].summary.products | integer | |
items[].summary.categories | integer | |
items[].summary.existing | integer | |
items[].summary.fromSupplier | integer | |
items[].summary.toCreate | integer | |
items[].summary.productionFiles | integer | |
items[].summary.placeholders | integer | |
items[].summary.withProblems | integer |
Preview a DecoNetwork store
POST /organizations/{organizationId}/store-imports
Reads a DecoNetwork storefront (its public pages; with a saved login also blank costs, production files and coupons from DecoNetwork's API) and matches it, writing nothing but this import record: every product with its blank's match (EXISTING catalog product, SUPPLIER style to import, or CREATE), its decorations, where its artwork comes from (PRODUCTION_FILE or PLACEHOLDER), DecoNetwork's price per size and problems. Give the customer the store is for (customerId, GET /customers) or leave it out to make one named newCustomerName (default the store's name) when applying. Then POST /store-imports/{storeImportId}/apply.
| Permission | stores.manage (Owner, Admin, Staff) |
| Risk | write, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it. |
| MCP tool | storeImports_preview (toolset stores) |
| Plan | Online stores: the Grow plan and up. |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
storeUrl | string | Yes | The DecoNetwork storefront's address, e.g. https://store.example.com (GET /store-imports/deconetwork/stores). Up to 300 characters. |
customerId | string or null | No | The customer the store is for (GET /customers). |
newCustomerName | string or null | No | Without customerId: the customer made when applying. Up to 200 characters. |
storeName | string or null | No | The SKUFlow store's name (default DecoNetwork's). Up to 200 characters. |
allowanceCents | integer or null | No | Each person's allowance in the new store (cents); left out, the owner sets it before opening. 0–100000000. |
payOverAllowanceByCard | boolean | No | Anything over the allowance is paid by card (default true: DecoNetwork's coupon plus card). |
Example
curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports" \
-H "Authorization: Bearer $SKUFLOW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"storeUrl":"https://example.com"}'Response
201: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | |
source | string | DECONETWORK. |
sourceUrl | string | |
sourceName | string | |
status | enum | PREVIEWED (nothing made yet), QUEUED / RUNNING (applying), APPLIED, FAILED (error; apply again), UNDONE. One of PREVIEWED, QUEUED, RUNNING, APPLIED, FAILED, UNDONE. |
customerId | string or null | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
newCustomerName | string or null | Made when applying, when no customer was picked. |
storeId | string or null | |
store | object or null | The SKUFlow store made (a DRAFT until the owner opens it). |
store.id | string | |
store.name | string | |
store.status | string | |
store.url | string | |
options | object | |
options.storeName | string or null | |
options.allowanceCents | integer or null | Integer cents. |
options.payOverAllowanceByCard | boolean | |
result | object or null | |
result.customerId | string or null | |
result.storeId | string or null | |
result.counts | object | |
result.counts.productsMatched | integer | |
result.counts.productsFromSupplier | integer | |
result.counts.productsCreated | integer | |
result.counts.artworkFromFiles | integer | |
result.counts.artworkPlaceholders | integer | |
result.counts.designs | integer | |
result.counts.customerProductsCreated | integer | |
result.counts.customerProductsRepriced | integer | |
result.counts.storeProducts | integer | |
result.counts.mockups | integer | |
result.products | array of object | |
result.products[].sourceId | string | |
result.products[].name | string | |
result.products[].productId | string or null | |
result.products[].designId | string or null | |
result.products[].customerProductId | string or null | |
result.products[].storeProductId | string or null | |
result.products[].error | string or null | |
result.warnings | array of string | |
result.todo | array of string | What the owner still has to do before opening the store. |
progress | object or null | |
progress.done | integer | |
progress.total | integer | |
progress.phase | string | |
error | string or null | |
createdAt | string (date-time) | |
queuedAt | string (date-time) or null | |
appliedAt | string (date-time) or null | |
undoneAt | string (date-time) or null | |
preview | object | |
preview.store | object | |
preview.store.name | string | |
preview.store.url | string | |
preview.store.logoUrl | string or null | |
preview.store.categories | array of string | |
preview.rows | array of object | |
preview.rows[].sourceId | string | DecoNetwork's decorated product id. |
preview.rows[].name | string | |
preview.rows[].url | string | The product's page on the storefront. |
preview.rows[].categoryName | string or null | |
preview.rows[].image | string or null | DecoNetwork's mockup (an address on the storefront). |
preview.rows[].priceCents | integer or null | DecoNetwork's price for the base size. |
preview.rows[].sizePrices | array of object | |
preview.rows[].colors | array of string | |
preview.rows[].sizes | array of string | |
preview.rows[].blank | object | |
preview.rows[].match | object | |
preview.rows[].decorations | array of object | |
preview.rows[].artwork | array of object | |
preview.rows[].problems | array of string | |
preview.summary | object | |
preview.summary.products | integer | |
preview.summary.categories | integer | |
preview.summary.existing | integer | |
preview.summary.fromSupplier | integer | |
preview.summary.toCreate | integer | |
preview.summary.productionFiles | integer | |
preview.summary.placeholders | integer | |
preview.summary.withProblems | integer | |
preview.discounts | object or null | Coupons and gift certificates shoppers used in DecoNetwork's recent orders (with a login). |
preview.discounts.ordersRead | integer | |
preview.discounts.coupons | array of object | |
preview.discounts.giftCertificateOrders | integer | |
preview.discounts.creditOrders | integer | |
preview.notes | array of string | |
preview.usedLogin | boolean | The DecoNetwork login was used (production files, blank costs, coupons). |
A store import
GET /organizations/{organizationId}/store-imports/{storeImportId}
One store import: the preview (every product with its match, decorations, artwork source, prices per size and problems), progress while applying, and the result (what was made, warnings, what the owner still has to do). Poll it after POST …/apply. Read-only.
| Permission | stores.read (Owner, Admin, Staff, Member) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | storeImports_get (toolset stores) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
storeImportId | path | string | Yes | The store import (GET /store-imports). |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/{storeImportId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | |
source | string | DECONETWORK. |
sourceUrl | string | |
sourceName | string | |
status | enum | PREVIEWED (nothing made yet), QUEUED / RUNNING (applying), APPLIED, FAILED (error; apply again), UNDONE. One of PREVIEWED, QUEUED, RUNNING, APPLIED, FAILED, UNDONE. |
customerId | string or null | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
newCustomerName | string or null | Made when applying, when no customer was picked. |
storeId | string or null | |
store | object or null | The SKUFlow store made (a DRAFT until the owner opens it). |
store.id | string | |
store.name | string | |
store.status | string | |
store.url | string | |
options | object | |
options.storeName | string or null | |
options.allowanceCents | integer or null | Integer cents. |
options.payOverAllowanceByCard | boolean | |
result | object or null | |
result.customerId | string or null | |
result.storeId | string or null | |
result.counts | object | |
result.counts.productsMatched | integer | |
result.counts.productsFromSupplier | integer | |
result.counts.productsCreated | integer | |
result.counts.artworkFromFiles | integer | |
result.counts.artworkPlaceholders | integer | |
result.counts.designs | integer | |
result.counts.customerProductsCreated | integer | |
result.counts.customerProductsRepriced | integer | |
result.counts.storeProducts | integer | |
result.counts.mockups | integer | |
result.products | array of object | |
result.products[].sourceId | string | |
result.products[].name | string | |
result.products[].productId | string or null | |
result.products[].designId | string or null | |
result.products[].customerProductId | string or null | |
result.products[].storeProductId | string or null | |
result.products[].error | string or null | |
result.warnings | array of string | |
result.todo | array of string | What the owner still has to do before opening the store. |
progress | object or null | |
progress.done | integer | |
progress.total | integer | |
progress.phase | string | |
error | string or null | |
createdAt | string (date-time) | |
queuedAt | string (date-time) or null | |
appliedAt | string (date-time) or null | |
undoneAt | string (date-time) or null | |
preview | object | |
preview.store | object | |
preview.store.name | string | |
preview.store.url | string | |
preview.store.logoUrl | string or null | |
preview.store.categories | array of string | |
preview.rows | array of object | |
preview.rows[].sourceId | string | DecoNetwork's decorated product id. |
preview.rows[].name | string | |
preview.rows[].url | string | The product's page on the storefront. |
preview.rows[].categoryName | string or null | |
preview.rows[].image | string or null | DecoNetwork's mockup (an address on the storefront). |
preview.rows[].priceCents | integer or null | DecoNetwork's price for the base size. |
preview.rows[].sizePrices | array of object | |
preview.rows[].colors | array of string | |
preview.rows[].sizes | array of string | |
preview.rows[].blank | object | |
preview.rows[].match | object | |
preview.rows[].decorations | array of object | |
preview.rows[].artwork | array of object | |
preview.rows[].problems | array of string | |
preview.summary | object | |
preview.summary.products | integer | |
preview.summary.categories | integer | |
preview.summary.existing | integer | |
preview.summary.fromSupplier | integer | |
preview.summary.toCreate | integer | |
preview.summary.productionFiles | integer | |
preview.summary.placeholders | integer | |
preview.summary.withProblems | integer | |
preview.discounts | object or null | Coupons and gift certificates shoppers used in DecoNetwork's recent orders (with a login). |
preview.discounts.ordersRead | integer | |
preview.discounts.coupons | array of object | |
preview.discounts.giftCertificateOrders | integer | |
preview.discounts.creditOrders | integer | |
preview.notes | array of string | |
preview.usedLogin | boolean | The DecoNetwork login was used (production files, blank costs, coupons). |
Delete a store import record
DELETE /organizations/{organizationId}/store-imports/{storeImportId}
Destructive: deletes the import's record (its preview and result). What it made stays: undo first to remove that. 409 while it runs.
| Permission | stores.manage (Owner, Admin, Staff) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | storeImports_delete (toolset stores) |
| Approval | Over MCP, this tool always waits for your approval in SKUFlow. See Approvals. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
storeImportId | path | string | Yes | The store import (GET /store-imports). |
Example
curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/{storeImportId}" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
deleted | true |
Apply a store import
POST /organizations/{organizationId}/store-imports/{storeImportId}/apply
Customer-visible prices: starts making what the preview showed, in the background (poll GET /store-imports/{storeImportId}): the customer (when new), a DRAFT store (never opened: the owner opens it) with DecoNetwork's categories and logo, each product's catalog product (matched, imported from the supplier, or made), the customer's artwork (production files downloaded, else the store picture as a placeholder), a design per product, the customer's products with DecoNetwork's price as their FIXED store price (size upcharges where sizes cost more) and the store items following them. Applying again updates in place and sets those customer products' store prices to DecoNetwork's again, which moves every store following them. 409 while another import runs or after undo.
| Permission | stores.manage (Owner, Admin, Staff) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | storeImports_apply (toolset stores) |
| Plan | Online stores: the Grow plan and up. |
| Approval | Over MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
storeImportId | path | string | Yes | The store import (GET /store-imports). |
Example
curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/{storeImportId}/apply" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | |
source | string | DECONETWORK. |
sourceUrl | string | |
sourceName | string | |
status | enum | PREVIEWED (nothing made yet), QUEUED / RUNNING (applying), APPLIED, FAILED (error; apply again), UNDONE. One of PREVIEWED, QUEUED, RUNNING, APPLIED, FAILED, UNDONE. |
customerId | string or null | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
newCustomerName | string or null | Made when applying, when no customer was picked. |
storeId | string or null | |
store | object or null | The SKUFlow store made (a DRAFT until the owner opens it). |
store.id | string | |
store.name | string | |
store.status | string | |
store.url | string | |
options | object | |
options.storeName | string or null | |
options.allowanceCents | integer or null | Integer cents. |
options.payOverAllowanceByCard | boolean | |
result | object or null | |
result.customerId | string or null | |
result.storeId | string or null | |
result.counts | object | |
result.counts.productsMatched | integer | |
result.counts.productsFromSupplier | integer | |
result.counts.productsCreated | integer | |
result.counts.artworkFromFiles | integer | |
result.counts.artworkPlaceholders | integer | |
result.counts.designs | integer | |
result.counts.customerProductsCreated | integer | |
result.counts.customerProductsRepriced | integer | |
result.counts.storeProducts | integer | |
result.counts.mockups | integer | |
result.products | array of object | |
result.products[].sourceId | string | |
result.products[].name | string | |
result.products[].productId | string or null | |
result.products[].designId | string or null | |
result.products[].customerProductId | string or null | |
result.products[].storeProductId | string or null | |
result.products[].error | string or null | |
result.warnings | array of string | |
result.todo | array of string | What the owner still has to do before opening the store. |
progress | object or null | |
progress.done | integer | |
progress.total | integer | |
progress.phase | string | |
error | string or null | |
createdAt | string (date-time) | |
queuedAt | string (date-time) or null | |
appliedAt | string (date-time) or null | |
undoneAt | string (date-time) or null | |
preview | object | |
preview.store | object | |
preview.store.name | string | |
preview.store.url | string | |
preview.store.logoUrl | string or null | |
preview.store.categories | array of string | |
preview.rows | array of object | |
preview.rows[].sourceId | string | DecoNetwork's decorated product id. |
preview.rows[].name | string | |
preview.rows[].url | string | The product's page on the storefront. |
preview.rows[].categoryName | string or null | |
preview.rows[].image | string or null | DecoNetwork's mockup (an address on the storefront). |
preview.rows[].priceCents | integer or null | DecoNetwork's price for the base size. |
preview.rows[].sizePrices | array of object | |
preview.rows[].colors | array of string | |
preview.rows[].sizes | array of string | |
preview.rows[].blank | object | |
preview.rows[].match | object | |
preview.rows[].decorations | array of object | |
preview.rows[].artwork | array of object | |
preview.rows[].problems | array of string | |
preview.summary | object | |
preview.summary.products | integer | |
preview.summary.categories | integer | |
preview.summary.existing | integer | |
preview.summary.fromSupplier | integer | |
preview.summary.toCreate | integer | |
preview.summary.productionFiles | integer | |
preview.summary.placeholders | integer | |
preview.summary.withProblems | integer | |
preview.discounts | object or null | Coupons and gift certificates shoppers used in DecoNetwork's recent orders (with a login). |
preview.discounts.ordersRead | integer | |
preview.discounts.coupons | array of object | |
preview.discounts.giftCertificateOrders | integer | |
preview.discounts.creditOrders | integer | |
preview.notes | array of string | |
preview.usedLogin | boolean | The DecoNetwork login was used (production files, blank costs, coupons). |
Undo a store import
POST /organizations/{organizationId}/store-imports/{storeImportId}/undo
Destructive: deletes the store it made (409 once that store took orders: close it instead) and what imports of that DecoNetwork store made for this customer that nothing else uses (customer products, designs, artwork, catalog products); what is used elsewhere is kept and listed in result.undo. Matched catalog products and the customer stay.
| Permission | stores.manage (Owner, Admin, Staff) |
| Risk | sensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access. |
| MCP tool | storeImports_undo (toolset stores) |
| Approval | Over MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals. |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
storeImportId | path | string | Yes | The store import (GET /store-imports). |
Example
curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/store-imports/{storeImportId}/undo" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
id | string | |
source | string | DECONETWORK. |
sourceUrl | string | |
sourceName | string | |
status | enum | PREVIEWED (nothing made yet), QUEUED / RUNNING (applying), APPLIED, FAILED (error; apply again), UNDONE. One of PREVIEWED, QUEUED, RUNNING, APPLIED, FAILED, UNDONE. |
customerId | string or null | |
customer | object or null | |
customer.id | string | |
customer.name | string | |
newCustomerName | string or null | Made when applying, when no customer was picked. |
storeId | string or null | |
store | object or null | The SKUFlow store made (a DRAFT until the owner opens it). |
store.id | string | |
store.name | string | |
store.status | string | |
store.url | string | |
options | object | |
options.storeName | string or null | |
options.allowanceCents | integer or null | Integer cents. |
options.payOverAllowanceByCard | boolean | |
result | object or null | |
result.customerId | string or null | |
result.storeId | string or null | |
result.counts | object | |
result.counts.productsMatched | integer | |
result.counts.productsFromSupplier | integer | |
result.counts.productsCreated | integer | |
result.counts.artworkFromFiles | integer | |
result.counts.artworkPlaceholders | integer | |
result.counts.designs | integer | |
result.counts.customerProductsCreated | integer | |
result.counts.customerProductsRepriced | integer | |
result.counts.storeProducts | integer | |
result.counts.mockups | integer | |
result.products | array of object | |
result.products[].sourceId | string | |
result.products[].name | string | |
result.products[].productId | string or null | |
result.products[].designId | string or null | |
result.products[].customerProductId | string or null | |
result.products[].storeProductId | string or null | |
result.products[].error | string or null | |
result.warnings | array of string | |
result.todo | array of string | What the owner still has to do before opening the store. |
progress | object or null | |
progress.done | integer | |
progress.total | integer | |
progress.phase | string | |
error | string or null | |
createdAt | string (date-time) | |
queuedAt | string (date-time) or null | |
appliedAt | string (date-time) or null | |
undoneAt | string (date-time) or null | |
preview | object | |
preview.store | object | |
preview.store.name | string | |
preview.store.url | string | |
preview.store.logoUrl | string or null | |
preview.store.categories | array of string | |
preview.rows | array of object | |
preview.rows[].sourceId | string | DecoNetwork's decorated product id. |
preview.rows[].name | string | |
preview.rows[].url | string | The product's page on the storefront. |
preview.rows[].categoryName | string or null | |
preview.rows[].image | string or null | DecoNetwork's mockup (an address on the storefront). |
preview.rows[].priceCents | integer or null | DecoNetwork's price for the base size. |
preview.rows[].sizePrices | array of object | |
preview.rows[].colors | array of string | |
preview.rows[].sizes | array of string | |
preview.rows[].blank | object | |
preview.rows[].match | object | |
preview.rows[].decorations | array of object | |
preview.rows[].artwork | array of object | |
preview.rows[].problems | array of string | |
preview.summary | object | |
preview.summary.products | integer | |
preview.summary.categories | integer | |
preview.summary.existing | integer | |
preview.summary.fromSupplier | integer | |
preview.summary.toCreate | integer | |
preview.summary.productionFiles | integer | |
preview.summary.placeholders | integer | |
preview.summary.withProblems | integer | |
preview.discounts | object or null | Coupons and gift certificates shoppers used in DecoNetwork's recent orders (with a login). |
preview.discounts.ordersRead | integer | |
preview.discounts.coupons | array of object | |
preview.discounts.giftCertificateOrders | integer | |
preview.discounts.creditOrders | integer | |
preview.notes | array of string | |
preview.usedLogin | boolean | The DecoNetwork login was used (production files, blank costs, coupons). |