Assembly Item API
Create and manage items assembled from component parts.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /record/v1/assemblyItem | List assembly items |
GET | /record/v1/assemblyItem/{id} | Get specific item |
POST | /record/v1/assemblyItem | Create item |
PATCH | /record/v1/assemblyItem/{id} | Update item |
DELETE | /record/v1/assemblyItem/{id} | Delete item |
Key Fields
| Field | Type | Description | Required |
|---|---|---|---|
itemId | string | Item name/SKU | Yes (if not auto-numbered) |
displayName | string | Display name | No |
description | string | Item description | No |
subsidiary | object | Subsidiary reference | Yes (OneWorld) |
assetAccount | object | Inventory asset account | Yes |
cogsAccount | object | Cost of goods sold account | Yes |
incomeAccount | object | Income/revenue account | Yes |
costingMethod | object | Costing method | Yes |
cost | number | Build cost (calculated from BOM) | Read-only |
basePrice | number | Selling price | No |
buildTime | number | Build time in minutes | No |
member | collection | Bill of materials (BOM) | Yes |
isInactive | boolean | Inactive status | No |
Example: Create Assembly Item
Request
POST /record/v1/assemblyItem
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"itemId": "ASSEMBLY-001",
"displayName": "Deluxe Widget Kit",
"description": "Complete widget assembly with premium components",
"salesDescription": "Professional-grade widget assembly - ready to use",
"subsidiary": {
"id": "1"
},
"assetAccount": {
"id": "120"
},
"cogsAccount": {
"id": "500"
},
"incomeAccount": {
"id": "400"
},
"costingMethod": {
"id": "AVERAGE"
},
"basePrice": 299.99,
"buildTime": 30,
"member": {
"items": [
{
"item": { "id": "789" },
"quantity": 2,
"itemSource": "STOCK"
},
{
"item": { "id": "790" },
"quantity": 1,
"itemSource": "STOCK"
},
{
"item": { "id": "791" },
"quantity": 4,
"itemSource": "STOCK"
}
]
}
}
Response
{
"id": "850",
"itemId": "ASSEMBLY-001",
"displayName": "Deluxe Widget Kit",
"description": "Complete widget assembly with premium components",
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"assetAccount": {
"id": "120",
"refName": "Inventory Asset"
},
"cogsAccount": {
"id": "500",
"refName": "Cost of Goods Sold"
},
"incomeAccount": {
"id": "400",
"refName": "Sales Revenue"
},
"costingMethod": {
"id": "AVERAGE",
"refName": "Average"
},
"cost": 75.50,
"basePrice": 299.99,
"buildTime": 30,
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/assemblyItem/850"
}
]
}
Example: Update Assembly Item
Request
PATCH /record/v1/assemblyItem/850
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"basePrice": 319.99,
"buildTime": 25,
"description": "Complete widget assembly with premium components - NEW improved design"
}
Response
{
"id": "850",
"itemId": "ASSEMBLY-001",
"basePrice": 319.99,
"buildTime": 25,
"description": "Complete widget assembly with premium components - NEW improved design",
"lastModifiedDate": "2025-12-25T11:15:00Z",
"links": [
{
"rel": "self",
"href": "https://ACCOUNT_ID.suitetalk.api.netsuite.com/services/rest/record/v1/assemblyItem/850"
}
]
}
Sublists
Member Sublist (Bill of Materials)
| Field | Type | Description | Required |
|---|---|---|---|
item | object | Component item reference | Yes |
quantity | number | Quantity needed per assembly | Yes |
itemSource | string | Source (STOCK, PHANTOM) | No |
componentYield | number | Expected yield percentage | No |
bomQuantity | number | Alternate BOM quantity | No |
Example with multiple components:
{
"member": {
"items": [
{
"item": { "id": "789" },
"quantity": 2,
"itemSource": "STOCK"
},
{
"item": { "id": "790" },
"quantity": 1,
"itemSource": "STOCK"
},
{
"item": { "id": "791" },
"quantity": 4,
"itemSource": "STOCK",
"componentYield": 95
}
]
}
}
Pricing Sublist
| Field | Type | Description | Required |
|---|---|---|---|
level | object | Price level reference | Yes |
price | number | Price for this level | Yes |
Locations Sublist
| Field | Type | Description | Required |
|---|---|---|---|
location | object | Location reference | Yes |
quantityOnHand | number | Current on-hand quantity | Read-only |
reorderPoint | number | Reorder point | No |
preferredStockLevel | number | Preferred stock level | No |
buildTime | number | Location-specific build time | No |
Query Filters
Find Active Assemblies
GET /record/v1/assemblyItem?q=isInactive=false
Find by SKU Pattern
GET /record/v1/assemblyItem?q=itemId LIKE 'ASSEMBLY%'
Find by Name
GET /record/v1/assemblyItem?q=displayName LIKE '%Kit%'
Find by Component
GET /record/v1/assemblyItem?q=member.item='789'
Find by Price Range
GET /record/v1/assemblyItem?q=basePrice BETWEEN 200 AND 400
Expand Related Records
GET /record/v1/assemblyItem/850?expandSubResources=true
Important Notes
Bill of Materials (BOM)
BOM Definition:
- List of components required to build one assembly
- Quantities are per finished assembly unit
- Component costs roll up to assembly cost
- Can include other assemblies (multi-level BOM)
Example BOM:
Assembly: Deluxe Widget Kit (1 unit requires):
- Blue Widget (Item 789): 2 units
- Red Widget (Item 790): 1 unit
- Screws (Item 791): 4 units
Phantom Items:
{
"member": {
"items": [
{
"item": { "id": "792" },
"quantity": 1,
"itemSource": "PHANTOM"
}
]
}
}
- Phantom items are sub-assemblies that don't stock
- Components pass through to parent assembly
- Useful for logical grouping without inventory tracking
Assembly Costing
Cost Calculation:
- Assembly cost = sum of (component cost × quantity)
- Automatically calculated based on BOM
- Updates when component costs change
- Read-only field on assembly item
Example:
Component costs:
- Blue Widget: $25.00 × 2 = $50.00
- Red Widget: $15.00 × 1 = $15.00
- Screws: $0.50 × 4 = $2.00
Total Assembly Cost: $67.00
Assembly Build Process
Build Workflow:
-
Create Work Order (optional)
- Schedule production
- Reserve components
- Track build progress
-
Create Assembly Build
- Consumes component inventory
- Creates finished assembly inventory
- Posts to GL (component → finished goods)
Without Work Order (Quick Build):
POST /record/v1/assemblyBuild
{
"item": { "id": "850" },
"quantity": 10,
"buildDate": "2025-12-25"
}
With Work Order:
POST /record/v1/workOrder
{
"assemblyItem": { "id": "850" },
"quantity": 100,
"startDate": "2025-12-25"
}
Component Availability
Build Constraints:
- All components must be available to build
- System checks component inventory before build
- Can configure partial builds if allowed
- Location-specific component availability
Checking Availability:
GET /record/v1/assemblyItem/850?expandSubResources=true
Response includes component availability at each location.
Multi-Level Assemblies
Nested Assemblies:
{
"member": {
"items": [
{
"item": { "id": "851" },
"quantity": 1,
"itemSource": "STOCK"
}
]
}
}
- Assemblies can contain other assemblies
- Component costs cascade up levels
- Build parent assembly or sub-assemblies separately
- Plan build order (bottom-up)
Build Time Tracking
Build Time Settings:
{
"buildTime": 30
}
- Measured in minutes per assembly
- Used for capacity planning
- Can override per location
- Helps schedule production
Yield Management
Component Yield:
{
"member": {
"items": [
{
"item": { "id": "791" },
"quantity": 4,
"componentYield": 95
}
]
}
}
- Account for scrap/waste in production
- 95% yield = 5% expected waste
- System adjusts quantities for actual yield
- Tracks yield variance
Selling Assemblies
As-Is Sales:
- Sell from finished goods inventory
- Reduces assembly on-hand
- Does not affect component inventory
Build-to-Order:
- Sell on sales order
- Create work order or assembly build
- Build as needed for order
- Ship when assembly complete
Disassembly
Disassemble Finished Goods:
POST /record/v1/assemblyUnbuild
{
"item": { "id": "850" },
"quantity": 5,
"unbuildDate": "2025-12-25"
}
- Reverses assembly build
- Returns components to inventory
- Reduces finished assembly quantity
- Useful for rework or changes
Work in Process (WIP)
WIP Tracking:
- Work orders track WIP inventory
- Components move to WIP when issued
- Finished goods created on completion
- WIP account holds in-process value
Permissions Required
- Create: Assembly Item > Create permission
- Edit: Assembly Item > Edit permission
- View: Assembly Item > View permission
- Delete: Assembly Item > Delete permission
- Build: Assembly Build > Create permission
Deletion Constraints
- Cannot delete with transaction history
- Cannot delete with inventory on hand
- Cannot delete if used in other assemblies
- Inactivate instead
Best Practices
- Accurate BOMs: Maintain precise component quantities
- Cost Review: Regularly review component costs
- Build Times: Set realistic build times for planning
- Multi-Level Planning: Plan complex assemblies bottom-up
- Yield Tracking: Monitor actual vs expected yield
- Component Availability: Ensure components in stock before builds
- Location Planning: Build at locations with component inventory
- Version Control: Use revisions to track BOM changes
Assembly vs Kit
Assembly Item:
- Components assembled before shipping
- Creates finished goods inventory
- Has build process and cost
- Components not separately visible
Kit Item:
- Components ship separately
- No assembly process
- Components remain separate
- Customer receives individual parts
Choose assembly when:
- Manufacturing/production required
- Want to track finished goods inventory
- Components lose individual identity
- Need to track build costs and time
See Also
- Work Order - Schedule assembly builds
- Assembly Build - Build assemblies
- Assembly Unbuild - Disassemble items
- Inventory Item - Component items
- Kit Item - Kits (non-assembled bundles)
- BOM Revision - BOM version control