Magento 1
List Integration Instances
Lists every Magento 1 integration instance on the account. Returns all instances in a single response with no pagination, so callers can populate pickers or iterate instances without paging.
Create Integration Instance
Creates a Magento 1 integration instance from the supplied SOAP credentials and settings, and creates the linked sales channel record in the same request.
Get Integration Instance
Returns a single Magento 1 integration instance by id, including its connection status, settings, mirrored order and product counts, and last-sync timestamps. The SOAP API key is never returned — only `api_key_set` indicates whether one is stored.
Update Integration Instance
Updates a Magento 1 integration instance. All fields are optional — only the keys you send are changed. Credentials are merged, so omitting `connection_settings.api_key` keeps the stored key intact rather than clearing it.
Delete Integration Instance
Deletes a Magento 1 integration instance and cleans up its linked sales channel, mirrored orders and products, and mapping records.
Get Activity Log
Paginated change history for orders belonging to this integration instance. Each entry records a change event (created, updated, etc.), who made it, and a JSON `properties` payload holding the before/after attributes and the source of the change. Since Magento 1 is polled rather than pushing webhooks, this is the closest thing to a per-store event feed. Authenticate with a Personal Access Token (PAT) Bearer token.
Sync Orders
Starts a background pull of orders from the Magento 1 store into SKU.io. Returns a `tracked_job_log_id` you can poll for progress. Only one order sync runs per instance at a time — a second request while one is running is ignored.
Sync Products
Starts a background pull of products from the Magento 1 store into SKU.io. Returns a `tracked_job_log_id` you can poll for progress. Only one product sync runs per instance at a time.
Sync Inventory
Starts an inventory push from SKU.io to the Magento 1 store. The push fans out into batched jobs, so no `tracked_job_log_id` is returned — the response only confirms the push was queued. Inventory is pushed only from production environments and only for instances with inventory sync enabled; elsewhere the push is skipped.
List Orders
Lists Magento 1 orders for one integration instance (the local mirror of orders pulled from the store). Scope with the `instance_id` query param — without it an empty page is returned so another store's orders never leak. Paginated (default 15/page).
Get Order Filter Options
Returns the distinct status, state, currency, and shipping-method values that actually appear in the orders for the given integration instance, so the list filters only offer options that return rows. Returns empty arrays when the instance cannot be resolved.
Get Order
Returns a single Magento 1 order with its line items (each resolving the linked SKU.io product when mapped) and a summary of the linked SKU sales order.
Get Raw Order Data
Fetches the full order payload live from the Magento 1 store (the deep `salesOrderInfo` SOAP response) for the 'View Raw Data' panel. Magento 1 order mirrors carry no stored raw blob, so this reads on demand from the store. Returns 422 if the store call fails.
Refetch Order
Re-pulls a single order from the Magento 1 store, re-persists the local mirror, and returns the refreshed order. Returns 422 if the store call fails.
Archive Order
Archives a single Magento 1 order so it is excluded from the active list and never auto-creates a SKU sales order. Idempotent — returns `archived: false` if it was already archived.
Unarchive Order
Restores a previously archived Magento 1 order to the active list. Idempotent — returns `unarchived: false` if it was already active.
Bulk Archive Orders
Archives multiple Magento 1 orders on the instance. Already-archived orders are skipped and not counted.
Bulk Unarchive Orders
Restores multiple archived Magento 1 orders on the instance to active. Already-active orders are skipped and not counted.
Get Latest Sync Info
Aggregated metrics for the orders refresh modal: the latest imported order, total order count, the created / pending / archived split, and the last-synced timestamp (derived from the freshest mirror write — Magento 1 has no sync cursor).
Create SKU Orders
Creates SKU.io sales orders from selected Magento 1 orders, or from every unlinked, non-archived order on the instance when `create_all_orders` is true. Runs as a background job — returns a `tracked_job_log_id` to poll. Already-linked and archived orders are skipped.
Update SKU Order
Refetches a single Magento 1 order and re-syncs the status fields on its linked SKU.io sales order. Returns 403 if the order does not belong to the instance, 404 if no SKU order is linked, 422 if the update failed.
Bulk Update SKU Orders
Refetches the given Magento 1 orders and re-syncs the status fields (order/fulfillment/payment status) on their linked SKU.io sales orders. A single order is processed synchronously; multiple orders run as a background job with a `tracked_job_log_id`.
Delete Orders
Permanently delete Magento 1 orders from SKU.io (the mirror records), cascading to any linked SKU sales order + order items. This does NOT delete anything in the Magento 1 store. Distinct from Delete SKU Orders, which only unlinks.
Delete SKU Order
Deletes the SKU.io sales order linked to a single Magento 1 order (the Magento 1 order is kept). Optionally archives the Magento 1 order afterwards via the `archive_magento1_order` query flag. Returns 403 if the order does not belong to the instance, 404 if no SKU order is linked.
Bulk Delete SKU Orders
Deletes the SKU.io sales orders linked to the given Magento 1 orders (the Magento 1 orders themselves are kept). A single order is deleted synchronously; multiple orders run as a background job with a `tracked_job_log_id`. Optionally archives the Magento 1 orders afterwards so they are not re-created on the next sync.
Submit Tracking
Queues a shipment (with tracking) back to the Magento 1 store for this order, using the most recent fulfilled shipment that carries a tracking number on the linked SKU sales order. Magento 1 is merchant-fulfilled, so tracking always applies. Returns 422 if no SKU order is linked or no fulfilled shipment with a tracking number exists.
Search Orders
Live-search the connected Magento 1 store for orders by increment id or customer email. Returns shallow matches, each flagged with whether it already exists in SKU.io.
Download Single Order
Fetch a single order from the Magento 1 store by its increment id and persist it into SKU.io. Use this to import a specific order surfaced by Search Orders.
List Products (Cross-Instance)
Lists Magento 1 catalog products (the local mirror pulled from the store) for ONE integration instance. Scope with the `instance_id` query param — it is REQUIRED here; without it an empty page is returned so another store's catalog never leaks (the controller refuses to fall back to `::first()`). Paginated (default 10/page on this cross-instance route).
List Products by Instance
Lists Magento 1 catalog products for the instance given in the path (the instance-scoped variant of the cross-instance index — same pagination, sorting, search, and filters, but the instance comes from the URL rather than `instance_id`).
Get Product Filter Options
Distinct filter option values for the products listing filter chips — the set of product types, statuses, and visibilities present in this instance's mirrored catalog.
Get Latest Product Sync Info
Product sync summary powering the 'Latest Synced Product' header card on the Refresh-from-Magento-1 modal: total/mapped/unmapped/archived counts plus the last-synced timestamp.
Refresh Products (Tracked)
Starts a background product refresh from the Magento 1 store into SKU.io. Returns a `tracked_job_log_id` you can poll for progress.
Bulk Product Operation (Sync)
Runs a bulk operation on catalog products synchronously — best for small 'Selected Only' requests. For large 'All Filtered' sets that may exceed the HTTP timeout, use Bulk Product Operation (Tracked) instead.
Bulk Product Operation (Tracked)
Starts a tracked bulk operation on catalog products — best for 'All Filtered' requests that may exceed the HTTP timeout. Returns a `tracked_job_log_id` to poll for progress. Same body contract as the synchronous Bulk endpoint.
Get Bulk Operation Progress
Progress for a tracked bulk product operation job — the tracked job log (status, processed/total, errors).
Smart-Match Product
Returns smart-match candidates for a catalog product: the best exact-SKU match plus fuzzy name/SKU candidates. Powers the per-row mapping modal.
Create SKU Product from Magento Product
Creates a new SKU.io product from the catalog product's data and links it. If a SKU.io product with the matching SKU already exists, the manager links to it instead of creating a duplicate. Returns 422 if the catalog product is already mapped (unmap it first).
Map Product
Maps a single catalog product to a specific SKU.io product chosen in the smart-match modal. Replaces any existing mapping in place. Returns the refreshed Magento 1 product resource (with its `product_listing`).
Unmap Product
Removes the SKU.io product link for a single catalog product.
Get Raw Product Data (Live)
Fetches the raw catalog payload for a product LIVE from the Magento 1 store via the SOAP Core API (mirrors Shopify's 'Load Raw Data' panel). Magento 1 mirror tables carry no `raw_data` column, so there is no cached fallback — a store/SOAP error surfaces as 422.
Get Product
Shows a single Magento 1 catalog product with its linked SKU.io product listing (when mapped). 404 if the product does not belong to the given instance.
Search Products
Live-search the connected Magento 1 catalog by SKU or name. Returns shallow matches, each flagged with whether it already exists in SKU.io.
Download Single Product
Fetch a single catalog product from the Magento 1 store by its product id (deep data + live stock) and persist it into SKU.io. Use this to import a specific product surfaced by Search Products.
Get Field Mappings
Current Magento 1 → SKU.io field-mapping config for the instance — what the Map dialog's 'Field Mapping' section edits. Returns the available source (Magento) fields, the constrained set of target (SKU) fields, the default mappings, the instance's custom overrides, and the effective (merged) mappings.
Update Field Mappings
Upserts the per-instance field-mapping config. Target (`sku_field`) values are constrained to the exact keys `Magento1Product::applyDataMapping()` resolves (sku, item_name, price, weight, length, width, height), so a saved mapping never silently no-ops at product-creation time.
List Inventory Comparison
Lists the inventory-comparison rows for a Magento 1 instance — one row per mapped product listing — comparing the SKU.io on-hand quantity against the last-known Magento 1 store quantity, with the variance and a per-row sync status (synced / variance / needs_recalc).
Get Inventory Summary
Returns aggregate inventory statistics for a Magento 1 instance: total mapped items, in-sync count, variance count, needs-recalculation count, in-stock / out-of-stock counts, the last fetch and last push timestamps, and the (never-fetched) count. Powers the summary cards above the inventory comparison list.
Fetch Inventory Levels (Tracked)
Starts a tracked job that reads the current stock level from Magento 1 for every mapped product and writes it into the comparison cache (the store-side column). Use this to refresh the Magento 1 quantities shown in the comparison before deciding what to push. Returns a `tracked_job_log_id` you can poll for progress.
Recache Inventory (Tracked)
Starts a tracked job that recomputes SKU.io on-hand quantities for every mapped product listing on the instance and refreshes the comparison cache. Use this when the SKU.io side is stale (status = needs_recalc). Returns a `tracked_job_log_id` you can poll for progress.
Push Inventory (Tracked)
Starts a tracked job that pushes SKU.io on-hand quantities to Magento 1 for the mapped products with a variance. The outbound inventory sync gate (per-instance sync settings) is enforced inside the job — when outbound inventory sync is disabled the job still completes successfully, pushing nothing. Returns a `tracked_job_log_id` you can poll for progress.