Work Order API
Create and manage work orders to build assembly items. Work orders track the manufacturing process from planning through completion, including component consumption and assembly production.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /record/v1/workOrder | Retrieve list of work orders |
| GET | /record/v1/workOrder/{id} | Retrieve specific work order |
| POST | /record/v1/workOrder | Create new work order |
| PATCH | /record/v1/workOrder/{id} | Update existing work order |
| DELETE | /record/v1/workOrder/{id} | Delete work order |
Key Fields
Header Fields
| Field | Type | Description | Required |
|---|---|---|---|
| assemblyItem | Object | Assembly item to be built (reference to item record) | Yes |
| quantity | Number | Quantity to be assembled | Yes |
| subsidiary | Object | Subsidiary where work order is created | Yes |
| location | Object | Inventory location for the assembly | Yes |
| startDate | Date | Planned start date (format: YYYY-MM-DD) | No |
| endDate | Date | Planned end date (format: YYYY-MM-DD) | No |
| tranId | String | Work order number (auto-generated if not provided) | No |
| status | String | Work order status (Planned, Released, InProcess, Built, Closed) | No |
| memo | String | Notes or comments about the work order | No |
| department | Object | Department reference | No |
| class | Object | Class reference | No |
| manufacturingRouting | Object | Manufacturing routing to use | No |
| billOfMaterials | Object | Bill of materials reference | No |
| revisionMemo | String | Revision notes | No |
| buildable | Number | Quantity that can currently be built | Read-only |
| built | Number | Quantity already built | Read-only |
| customForm | Object | Custom form reference | No |
| createdDate | DateTime | Date work order was created | Read-only |
| lastModifiedDate | DateTime | Date work order was last modified | Read-only |
Sublist: Component (item)
| Field | Type | Description | Required |
|---|---|---|---|
| item | Object | Component item reference | Yes |
| quantity | Number | Quantity required per assembly | Yes |
| quantityCommitted | Number | Quantity committed to this work order | No |
| componentYield | Number | Expected yield percentage | No |
| units | Object | Unit of measure | No |
| description | String | Component description | No |
| bomQuantity | Number | Quantity from BOM | Read-only |
Example: Create Work Order
Request
POST /record/v1/workOrder
Content-Type: application/json
{
"assemblyItem": {
"id": "800"
},
"quantity": 100,
"subsidiary": {
"id": "1"
},
"location": {
"id": "1"
},
"startDate": "2025-12-26",
"endDate": "2026-01-05",
"memo": "Q1 Production Run - Widget Assembly",
"department": {
"id": "5"
},
"class": {
"id": "3"
},
"item": {
"items": [
{
"item": {
"id": "789"
},
"quantity": 200,
"componentYield": 98
},
{
"item": {
"id": "790"
},
"quantity": 100
}
]
}
}
Response
{
"id": "3001",
"assemblyItem": {
"id": "800",
"refName": "Assembly Widget A"
},
"quantity": 100,
"subsidiary": {
"id": "1",
"refName": "Parent Company"
},
"location": {
"id": "1",
"refName": "Main Warehouse"
},
"startDate": "2025-12-26",
"endDate": "2026-01-05",
"tranId": "WO-2025-001",
"status": {
"id": "Planned",
"refName": "Planned"
},
"memo": "Q1 Production Run - Widget Assembly",
"department": {
"id": "5",
"refName": "Manufacturing"
},
"class": {
"id": "3",
"refName": "Production"
},
"buildable": 100,
"built": 0,
"createdDate": "2025-12-25T10:30:00Z",
"lastModifiedDate": "2025-12-25T10:30:00Z",
"item": {
"items": [
{
"item": {
"id": "789",
"refName": "Component Part A"
},
"quantity": 200,
"quantityCommitted": 200,
"componentYield": 98
},
{
"item": {
"id": "790",
"refName": "Component Part B"
},
"quantity": 100,
"quantityCommitted": 100
}
]
},
"links": [
{
"rel": "self",
"href": "https://your-account.suitetalk.api.netsuite.com/services/rest/record/v1/workOrder/3001"
}
]
}
Example: Update Work Order
Request
PATCH /record/v1/workOrder/3001
Content-Type: application/json
{
"quantity": 120,
"endDate": "2026-01-08",
"memo": "Q1 Production Run - Widget Assembly (Increased Quantity)",
"item": {
"items": [
{
"item": {
"id": "789"
},
"quantity": 240
},
{
"item": {
"id": "790"
},
"quantity": 120
}
]
}
}
Response
{
"id": "3001",
"assemblyItem": {
"id": "800",
"refName": "Assembly Widget A"
},
"quantity": 120,
"endDate": "2026-01-08",
"memo": "Q1 Production Run - Widget Assembly (Increased Quantity)",
"buildable": 120,
"lastModifiedDate": "2025-12-25T14:20:00Z",
"links": [
{
"rel": "self",
"href": "https://your-account.suitetalk.api.netsuite.com/services/rest/record/v1/workOrder/3001"
}
]
}
Sublists and Components
Component Items (item)
The item sublist defines the components required to build the assembly. Each line item represents a material or component that will be consumed during the manufacturing process.
Fields:
item: Reference to the component itemquantity: Quantity needed per assembly unitcomponentYield: Expected yield percentage (accounts for waste/scrap)quantityCommitted: Amount reserved for this work order
Example:
"item": {
"items": [
{
"item": {"id": "789"},
"quantity": 2,
"componentYield": 95
}
]
}
Query Filters
Filter by Status
GET /record/v1/workOrder?q=status EQUAL 'Planned'
Filter by Assembly Item
GET /record/v1/workOrder?q=assemblyItem EQUAL 800
Filter by Date Range
GET /record/v1/workOrder?q=startDate BETWEEN '2025-12-01' AND '2025-12-31'
Filter by Subsidiary and Location
GET /record/v1/workOrder?q=subsidiary EQUAL 1 AND location EQUAL 1
Expand Related Records
GET /record/v1/workOrder/3001?expandSubResources=true
Work Order Status Flow
Work orders follow a defined lifecycle:
- Planned - Initial state when created
- Released - Approved and ready to start production
- In Process - Manufacturing has begun
- Built - Assembly quantity has been completed
- Closed - Work order is finalized and closed
Important Notes
-
Assembly Item Requirement: The
assemblyItemmust be an item with type "Assembly/Bill of Materials" -
Component Availability: Components must have sufficient inventory or be set to allow negative inventory
-
BOM Integration: If a BOM exists for the assembly item, components are automatically populated. Manual components can override BOM values
-
Status Changes:
- Status transitions typically follow the defined flow
- Some status changes may require specific permissions
- Built and Closed statuses are usually set via Work Order Completion and Work Order Close transactions
-
Quantity Management:
quantity: Total quantity to buildbuildable: Quantity that can currently be built (based on component availability)built: Quantity already completed
-
Inventory Commitment: Creating a work order commits component inventory but does not reduce available quantities until components are issued
-
Modifications:
- Work orders in "Built" or "Closed" status may have limited edit capabilities
- Changes to quantity may require adjusting component quantities
-
Deletion: Work orders with related transactions (completions, issues, closes) cannot be deleted
-
Custom Forms: Custom work order forms may include additional required fields
-
Manufacturing Routing: If a routing is specified, it defines the production steps and resources required
-
Multi-subsidiary: Work orders are subsidiary-specific and components must be available in the specified subsidiary
-
Permissions: Requires "Work Order" permission with appropriate access level (Create/Edit/View)