ILGFUSE

Submit master data records

POST/api/v2/master-dataMaster Data in Fuse

Create or update products in your catalogue. Accepts an array of master data records. The whole batch is accepted with a 202, or rejected with a 400 that lists every failing record and field.

Examples

Complete, valid payloads for the scenarios we see most. Pick one to load it into the panel.

Values shown like YOUR_SITE are your own configuration, not literals — substitute the values from your onboarding pack. The sandbox checks shape only, so a payload can pass there and still be rejected by the warehouse.

Mandatory fieldsRequired for every customer, every time. Everything else is optional or covered by your onboarding configuration.
  • SKU IDproduct.identifiers.skuId
  • Business IDproduct.identifiers.businessId
  • NMFC Codeproduct.identifiers.nmfcCode
  • Descriptionproduct.information.description
  • Country of originproduct.information.countryOfOrigin
  • Classification groupsproduct.classification.groups
  • Hazardous (empty if not hazardous)product.quality.hazardCode

Request schema

The body is an array of records in this shape. Pick a scenario above to see a complete, valid payload.

  • productobjectThe product being created or updated. One record per SKU.
    • identifiersobjectHow this product is identified, in your systems and ours.
      • skuIdstringmandatorymin length 1Your primary SKU code — the identifier every order line refers back to.
      • businessIdstringmandatorymin length 1Your Fuse business ID. Must match the businessId you authenticate with.
      • customerIdstringAn end-customer account this product belongs to, where you segment your catalogue per customer.
      • nmfcCodestringmandatoryNational Motor Freight Classification code — the freight class used on shipping paperwork and carrier rating. Not validated against a lookup; carried through to shipping documents as-is. Provide it for any product that ships palletised/LTL in North America; use your freight forwarder's classification.
    • informationobjectDescriptive details shown on warehouse screens and paperwork.
      • statusstringProduct lifecycle status in your catalogue.
      • descriptionstringmandatorymin length 1Short product description — appears on pick screens, labels, and delivery paperwork.
      • textstringLonger free-text description, where the short one is not enough.
      • categoriesarray of stringFree-form category labels for your own reporting.
      • countryOfOriginstringmandatoryISO 3166 country code where the product is manufactured — required for customs on export orders.
      • costnumberUnit cost price, used for insurance and customs valuation.
    • classificationobjectHow the product is grouped and packed.
      • groupsarray of stringmandatoryClassification groups — free-form reporting buckets, not validated lookups. By convention the first entry is a business/customer-driven grouping and the second a product-type grouping.
      • boxUnitstringThe pack level a full box represents (e.g. INNER).
      • boxQuantityintegerUnits per full box.
      • itemUnitstringThe selling unit of measure — a real warehouse unit code ("EA" is the common each/unit code); descriptive strings like "EACH" are rejected downstream.
    • lifecycleobjectBatch, expiry, serial, and rotation behaviour — how stock of this product is tracked and picked.
      • lifeintegerShelf life in days.
      • expiryRequiredstring"1" if every receipt must capture an expiry date, otherwise "0" (defaults to "0"). Pair with an expiry-aware rotationMethod or expiry is captured at goods-in and then ignored at pick.
      • productionRequiredstring"1" if every receipt must capture a production date, otherwise "0".
      • batchRequiredstring"1" if stock is batch-tracked, otherwise "0". One-character flags — not "Y"/"N".
      • serialRequiredstring"1" if each unit carries a serial number, otherwise "0".
      • countrystringCountry restriction for stock rotation rules, where used.
      • rotationMethodstringWarehouse rotation lookup code (max 2 characters) deciding which stock is picked first. Unset defaults to "X1" (lowest slot quantity — no date awareness); batch/expiry-tracked products should set an expiry-aware code such as "F0" (FIFO by expiry) or "F4" (FEFO).
      • typestringProduct type lookup code, where your setup uses one.
      • classstringProduct class lookup code, where your setup uses one.
      • valuestringProduct value band, where your setup uses one.
    • dimensionsobjectPhysical dimensions and weights, for cartonisation and freight quoting.
      • boxobjectDimensions of a full box (outer pack).
        • heightnumberBox height in your account's configured unit.
        • widthnumberBox width.
        • depthnumberBox depth.
        • weightnumberBox gross weight.
      • itemobjectDimensions of a single selling unit.
        • heightnumberItem height.
        • widthnumberItem width.
        • depthnumberItem depth.
        • weightnumberItem weight.
    • qualityobjectQuality-control and hazard classification.
      • stagestringInbound QC stage this product routes through, where used.
      • qastringQuality-assurance code, where used.
      • qcstringQuality-control code, where used.
      • hazardCodestringmandatoryHazard classification lookup code for dangerous goods. Empty string means not hazardous; a hazmat product carries the code your site has configured.
    • maintenanceobjectAdministrative maintenance flags.
      • maintenanceIndicatorstringMaintenance state indicator, where used.
      • dateHeldstringDate the product record was placed on hold.
    • valuesobjectPack-quantity values.
      • innernumberUnits per inner pack (multipack).
    • manufacturerobjectManufacturer details for reporting and paperwork.
      • namestringManufacturer name.
      • codestringYour code for the manufacturer.
    • customisationsarray of objectFree-form key/value metadata attached to the product. Note: master data uses key/value; sales orders and work orders use name/value.
      • keystringmin length 1Attribute name (e.g. Colour, Season).
      • valuestringmin length 1Attribute value.
    • alternativesarray of objectAdditional barcodes for the same SKU. The type is a barcode-type lookup code (max 2 characters) — "10" each/unit, "08" inner pack, "09" outer case. An unrecognised or over-length type is silently dropped rather than rejected.
      • barcodestringThe barcode value (EAN/UPC).
      • typestringBarcode-type lookup code — "10" unit, "08" inner, "09" outer.
      • referencestringPack-quantity convention for pack barcodes: "INN,<qty>" or "OUT,<qty>"; the unit code (e.g. "EA") for unit barcodes.
  • nmfcobjectFreight-classification detail backing the header NMFC code — density, class, and unit of measure for carrier rating. Provide when your products ship LTL/palletised and your forwarder rates by NMFC.
    • codestringThe NMFC item code.
    • classstringThe freight class (e.g. 55–500) for this item.
    • descriptionstringThe commodity description as it should appear on the bill of lading.
    • unitOfMeasurestringUnit the density/class is expressed against.
    • densitynumberDensity (weight per cubic unit) used to derive the freight class.

Headers

Request
  • AuthorizationBasic base64(businessId:apiKey)required

    HTTP Basic. Username is your businessId, password is your API key.

  • Content-Typeapplication/jsonrequired
  • x-correlation-idoptional

    Your own trace id for this request. Adopted for every log line Fuse writes while processing it, and returned as `correlationId` in the response body. Omitted: Fuse generates one.

Response
  • Content-Typeapplication/jsonrequired

    On 202.

  • Content-Typeapplication/problem+jsonrequired

    On 400, 401.

Responses

202application/json

Every record passed validation and is queued for the warehouse.

{
  "success": true,
  "recordCount": 1,
  "messageIds": [
    "11384719623456789"
  ],
  "correlationId": "550e8400-e29b-41d4-a716-446655440000"
}
Body fields
  • successbooleanIndicates if the request was successfully accepted
  • recordCountnumberNumber of records accepted for processing
  • messageIdsarray of stringPub/Sub message IDs for tracking
  • correlationIdstringCorrelation ID for request tracing
400application/problem+json

No record was accepted. Every failing record is listed, by its index in the array you sent.

{
  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
  "title": "Bad Request",
  "status": 400,
  "detail": "Validation failed for one or more records",
  "instance": "/api/v2/master-data",
  "errors": [
    {
      "index": 0,
      "errors": [
        "identifiers.businessId: Required",
        "shipmentLines.0.quantities.ordered: Expected number, received string"
      ]
    }
  ]
}
Body fields
  • typestringA URI reference that identifies the problem type
  • titlestringA short, human-readable summary of the problem type
  • statusnumberThe HTTP status code generated by the origin server for this occurrence of the problem
  • detailstringA human-readable explanation specific to this occurrence of the problem
  • instancestringA URI reference that identifies the specific occurrence of the problem
  • errorsarray of objectValidation errors (extension field for 400 Bad Request responses). For field-level validation errors (from Zod), this is an array of FieldValidationErrorDto. For batch validation errors, this is an array of RecordValidationErrorDto.
401application/problem+json

Credentials missing, malformed, or not recognised for this business.

{
  "type": "https://tools.ietf.org/html/rfc7235#section-3.1",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Unauthorized",
  "instance": "/api/v2/master-data"
}
Body fields
  • typestringA URI reference that identifies the problem type
  • titlestringA short, human-readable summary of the problem type
  • statusnumberThe HTTP status code generated by the origin server for this occurrence of the problem
  • detailstringA human-readable explanation specific to this occurrence of the problem
  • instancestringA URI reference that identifies the specific occurrence of the problem
  • errorsarray of objectValidation errors (extension field for 400 Bad Request responses). For field-level validation errors (from Zod), this is an array of FieldValidationErrorDto. For batch validation errors, this is an array of RecordValidationErrorDto.