Import parts
Upserts parts. A row with a sku updates that part; a row without one creates a new part at site_name and is assigned a generated SKU. An unknown sku is a row error, since SKUs are server-owned. Per-row errors are returned. Per-row errors cover row *data*; a row carrying an unrecognised *column* is a schema error and rejects the whole import with a 400 naming the row and key, so no rows are applied. Strip extra columns (e.g. on_hand, stock_status) before re-importing an exported file.
Authorization
LuxorAPIKey Use your API key here.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v2/commander/parts/import" \ -H "Content-Type: application/json" \ -d '{ "rows": [ { "name": "string", "category": "hashboard" } ] }'{ "created_count": 10, "updated_count": 4, "errors": [ { "row_index": 7, "message": "unit_cost must be a non-negative amount" } ]}{ "statusCode": 400, "code": "FST_ERR_VALIDATION", "error": "Bad Request", "message": "body/end_date Required"}{ "statusCode": 403, "code": "7", "error": "Forbidden", "message": "[permission_denied] site_id does not belong to this workspace"}Bulk delete parts
Soft-deletes (archives) many catalog parts by id.
Adjust part stock
Applies a signed stock delta to a part with a reason (restock, correction, damaged, other). The site is taken from the part — a part belongs to exactly one site — so `site_id` is deprecated: it is still accepted for older integrations, but ignored. Returns the updated part.