Bills of material
Base URL: https://api.miridia.io. Read Authentication and Conventions before you call these operations.
| Method | Path | Operation |
|---|---|---|
| GET | /api/v1/bom | Get BOMs |
| POST | /api/v1/bom | Create BOM |
| GET | /api/v1/bom/{bomId} | Get BOM |
| PUT | /api/v1/bom/{bomId} | Update BOM |
| DELETE | /api/v1/bom/{bomId} | Delete BOM |
| POST | /api/v1/bom/{bomId}/activate | Activate BOM |
| POST | /api/v1/bom/{bomId}/line-items | Add BOM line item |
| PUT | /api/v1/bom/{bomId}/line-items/{lineItemId} | Update BOM line item |
| DELETE | /api/v1/bom/{bomId}/line-items/{lineItemId} | Delete BOM line item |
| GET | /api/v1/bom/{bomId}/cost | Get BOM cost |
| GET | /api/v1/bom/{bomId}/work-orders | Get BOM work orders |
Get BOMs
GET/api/v1/bom
Access. Send a bearer token or an API key. The caller needs the Products view permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Page | query | integer (int32) | No | Limits: minimum 1. |
PageSize | query | integer (int32) | No | Limits: minimum 1, maximum 100. |
$orderby | query | string | No | Example: "created_at desc" or "name asc" |
$filter | query | string | No | Apply a ODATA style filter to the query to add a fixed constraint. For example, if you want to filter by the creation date, you would set the filter to "created_at ge 2022-01-01". Or if you want to filter by a specific status, you would set the filter to "status eq 'active'". |
$search | query | string | No | Provide a search value which would inherit the 'CONTAINS' behaviour. |
Response
200. Returns a PagedResult envelope. Each item in data is BomResponse.
curl -X GET "https://api.miridia.io/api/v1/bom" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID"{
"count": 0,
"totalCount": 0,
"page": 0,
"finalPage": 0,
"pageSize": 0,
"hasMore": true,
"statusCode": "OK",
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
}
],
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
]
}Create BOM
POST/api/v1/bom
Access. Send a bearer token or an API key. The caller needs the Products modify permission.
Request body
Send JSON with the shape CreateBomCommand.
| Field | Type | Required | Description |
|---|---|---|---|
parentProductId | string (uuid) | No | |
title | string | No | |
description | string | No | |
bomType | enum BomType | No | One of: Assembly, Kit. |
status | enum BomStatus | No | One of: Draft, Active, Blocked, Superseded. |
revisionNumber | integer (int32) | No | |
effectiveDate | string (date-time) | No | |
expiryDate | string (date-time) | No | |
assemblyInstructions | string | No | |
outputQuantity | number (double) | No | |
lineItems | BomLineItemRequest[] | No | |
costLines | BomCostLineRequest[] | No |
Response
200. Returns a SingleResult envelope. The data field is BomResponse.
curl -X POST "https://api.miridia.io/api/v1/bom" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{
"componentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"quantityRequired": 0,
"unit": "Each",
"scrapFactorPercent": 0,
"sortOrder": 0,
"notes": "string"
}
],
"costLines": [
{
"description": "string",
"costType": "FixedPerUnit",
"costAmount": 0,
"glAccountCode": "string",
"sortOrder": 0
}
]
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Get BOM
GET/api/v1/bom/{bomId}
Access. Send a bearer token or an API key. The caller needs the Products view permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes |
Response
200. Returns a SingleResult envelope. The data field is BomResponse.
curl -X GET "https://api.miridia.io/api/v1/bom/{bomId}" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID"{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Update BOM
PUT/api/v1/bom/{bomId}
Access. Send a bearer token or an API key. The caller needs the Products modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes |
Request body
Send JSON with the shape UpdateBomCommand.
| Field | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | No | |
parentProductId | string (uuid) | No | |
title | string | No | |
description | string | No | |
bomType | enum BomType | No | One of: Assembly, Kit. |
status | enum BomStatus | No | One of: Draft, Active, Blocked, Superseded. |
revisionNumber | integer (int32) | No | |
effectiveDate | string (date-time) | No | |
expiryDate | string (date-time) | No | |
assemblyInstructions | string | No | |
outputQuantity | number (double) | No | |
lineItems | BomLineItemRequest[] | No | |
costLines | BomCostLineRequest[] | No |
Response
200. Returns a SingleResult envelope. The data field is BomResponse.
curl -X PUT "https://api.miridia.io/api/v1/bom/{bomId}" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{
"componentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"quantityRequired": 0,
"unit": "Each",
"scrapFactorPercent": 0,
"sortOrder": 0,
"notes": "string"
}
],
"costLines": [
{
"description": "string",
"costType": "FixedPerUnit",
"costAmount": 0,
"glAccountCode": "string",
"sortOrder": 0
}
]
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Delete BOM
DELETE/api/v1/bom/{bomId}
Access. Send a bearer token or an API key. The caller needs the Products delete permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes |
Response
200. Returns a SingleResult envelope. The data field is boolean.
curl -X DELETE "https://api.miridia.io/api/v1/bom/{bomId}" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID"{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": true,
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Activate BOM
POST/api/v1/bom/{bomId}/activate
Access. Send a bearer token or an API key. The caller needs the Products modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes |
Response
200. Returns a SingleResult envelope. The data field is BomResponse.
curl -X POST "https://api.miridia.io/api/v1/bom/{bomId}/activate" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID"{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Add BOM line item
POST/api/v1/bom/{bomId}/line-items
Access. Send a bearer token or an API key. The caller needs the Products modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes |
Request body
Send JSON with the shape AddBomLineItemCommand.
| Field | Type | Required | Description |
|---|---|---|---|
bomId | string (uuid) | No | |
componentProductId | string (uuid) | No | |
quantityRequired | number (double) | No | |
unit | enum UnitOfMeasure | No | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
scrapFactorPercent | number (double) | No | |
sortOrder | integer (int32) | No | |
notes | string | No |
Response
200. Returns a SingleResult envelope. The data field is BomResponse.
curl -X POST "https://api.miridia.io/api/v1/bom/{bomId}/line-items" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"bomId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"componentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"quantityRequired": 0,
"unit": "Each",
"scrapFactorPercent": 0,
"sortOrder": 0,
"notes": "string"
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Update BOM line item
PUT/api/v1/bom/{bomId}/line-items/{lineItemId}
Access. Send a bearer token or an API key. The caller needs the Products modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes | |
lineItemId | path | string (uuid) | Yes |
Request body
Send JSON with the shape UpdateBomLineItemCommand.
| Field | Type | Required | Description |
|---|---|---|---|
bomId | string (uuid) | No | |
lineItemId | string (uuid) | No | |
componentProductId | string (uuid) | No | |
quantityRequired | number (double) | No | |
unit | enum UnitOfMeasure | No | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
scrapFactorPercent | number (double) | No | |
sortOrder | integer (int32) | No | |
notes | string | No |
Response
200. Returns a SingleResult envelope. The data field is BomResponse.
curl -X PUT "https://api.miridia.io/api/v1/bom/{bomId}/line-items/{lineItemId}" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"bomId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"lineItemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"componentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"quantityRequired": 0,
"unit": "Each",
"scrapFactorPercent": 0,
"sortOrder": 0,
"notes": "string"
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Delete BOM line item
DELETE/api/v1/bom/{bomId}/line-items/{lineItemId}
Access. Send a bearer token or an API key. The caller needs the Products modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes | |
lineItemId | path | string (uuid) | Yes |
Response
200. Returns a SingleResult envelope. The data field is BomResponse.
curl -X DELETE "https://api.miridia.io/api/v1/bom/{bomId}/line-items/{lineItemId}" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID"{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"parentProductTitle": "string",
"parentProductCode": "string",
"title": "string",
"description": "string",
"bomType": "Assembly",
"status": "Draft",
"revisionNumber": 0,
"effectiveDate": "2026-09-29T08:00:00Z",
"expiryDate": "2026-09-29T08:00:00Z",
"assemblyInstructions": "string",
"outputQuantity": 0,
"lineItems": [
{}
],
"costLines": [
{}
],
"dateModified": "2026-09-29T08:00:00Z",
"dateCreated": "2026-09-29T08:00:00Z"
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Get BOM cost
GET/api/v1/bom/{bomId}/cost
Access. Send a bearer token or an API key. The caller needs the Products view permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes | |
asOfDate | query | string (date-time) | No |
Response
200. Returns a SingleResult envelope. The data field is BomCostBreakdownResponse.
curl -X GET "https://api.miridia.io/api/v1/bom/{bomId}/cost" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID"{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"bomId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"asOfDate": "2026-09-29T08:00:00Z",
"lineCosts": [
{}
],
"materialSubtotal": 0,
"scrapTotal": 0,
"productionSubtotal": 0,
"productionCosts": [
{}
],
"totalCost": 0,
"outputQuantity": 0,
"unitMaterialCost": 0,
"unitProductionCost": 0,
"unitCost": 0,
"sellingPrice": 0,
"grossMargin": 0,
"marginPercent": 0
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Get BOM work orders
GET/api/v1/bom/{bomId}/work-orders
Returns the work orders that used this bill of materials, in the same page shape as GET /work-orders.
Access. Send a bearer token or an API key. The caller needs the Products view permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
bomId | path | string (uuid) | Yes | |
Page | query | integer (int32) | No | Limits: minimum 1. |
PageSize | query | integer (int32) | No | Limits: minimum 1, maximum 100. |
$orderby | query | string | No | Example: "created_at desc" or "name asc" |
$filter | query | string | No | Apply a ODATA style filter to the query to add a fixed constraint. For example, if you want to filter by the creation date, you would set the filter to "created_at ge 2022-01-01". Or if you want to filter by a specific status, you would set the filter to "status eq 'active'". |
$search | query | string | No | Provide a search value which would inherit the 'CONTAINS' behaviour. |
Response
200. Returns a PagedResult envelope. Each item in data is WorkOrderResponse.
curl -X GET "https://api.miridia.io/api/v1/bom/{bomId}/work-orders" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID"Models
The operations on this page use these object types. Select a type to see its fields.
ActivityTrace
Refer to ActionMessage. An activity trace becomes an action message once the response to the client is sent.
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
activityType | enum ActivityType | One of: System, User. |
userId | string (uuid) | |
code | string | |
title | string | |
message | string | |
source | string | |
actionLink | string | |
level | enum NotificationLevel | One of: Standard, Info, Warning, Error, Success, Recommendation. |
dateOfActivity | string (date-time) | |
isDashboardOnly | boolean | |
icon | enum MdiIcon | One of: None, SyncAlert, Autorenew, Check, CheckMarkedCircle, AlertCircle, TruckDeliveryOutline, TruckFastOutline, PackageCheck, Warehouse, SwapHorizontal, AccountCheck, AccountRemove, AccountCancel, Delete. |
BomCostBreakdownResponse
| Field | Type | Description |
|---|---|---|
bomId | string (uuid) | |
asOfDate | string (date-time) | |
lineCosts | BomLineCostResponse[] | |
materialSubtotal | number (double) | |
scrapTotal | number (double) | |
productionSubtotal | number (double) | |
productionCosts | BomProductionCostResponse[] | Per-cost-line detail behind ProductionSubtotal. The ResolvedCost values sum to it. |
totalCost | number (double) | Batch cost. To produce OutputQuantity finished units. |
outputQuantity | number (double) | The BOM's batch yield (finished units per run). |
unitMaterialCost | number (double) | |
unitProductionCost | number (double) | |
unitCost | number (double) | Cost per finished unit (TotalCost ÷ OutputQuantity). Compares to SellingPrice. |
sellingPrice | number (double) | |
grossMargin | number (double) | Per-unit margin: SellingPrice − UnitCost. |
marginPercent | number (double) |
BomCostLineRequest
| Field | Type | Description |
|---|---|---|
description | string | |
costType | enum BomCostType | One of: FixedPerUnit, Percentage, HourlyRate. |
costAmount | number (double) | |
glAccountCode | string | |
sortOrder | integer (int32) |
BomCostLineResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
description | string | |
costType | enum BomCostType | One of: FixedPerUnit, Percentage, HourlyRate. |
costAmount | number (double) | |
glAccountCode | string | |
sortOrder | integer (int32) |
BomLineCostResponse
| Field | Type | Description |
|---|---|---|
lineItemId | string (uuid) | |
componentProductId | string (uuid) | |
componentTitle | string | |
unitPrice | number (double) | Price of one CostedUnit (pack-normalised). |
quantityRequired | number (double) | Recipe quantity as authored, in RecipeUnit. |
recipeUnit | enum UnitOfMeasure | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
costedQuantity | number (double) | Recipe quantity converted into the price's unit (what UnitPrice multiplies). |
costedUnit | enum UnitOfMeasure | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
unitMismatch | boolean | True when the recipe unit couldn't convert to the price unit; raw quantity was used. |
scrapFactorPercent | number (double) | |
baseMaterialCost | number (double) | |
lineMaterialCost | number (double) |
BomLineItemRequest
| Field | Type | Description |
|---|---|---|
componentProductId | string (uuid) | |
quantityRequired | number (double) | |
unit | enum UnitOfMeasure | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
scrapFactorPercent | number (double) | |
sortOrder | integer (int32) | |
notes | string |
BomLineItemResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
componentProductId | string (uuid) | |
componentTitle | string | |
componentCode | string | |
componentSku | string | |
componentType | enum ProductType | One of: FinishedGood, RawMaterial, Component, Consumable, Service. |
quantityRequired | number (double) | |
unit | enum UnitOfMeasure | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
scrapFactorPercent | number (double) | |
sortOrder | integer (int32) | |
notes | string | |
isExpandable | boolean |
BomProductionCostResponse
| Field | Type | Description |
|---|---|---|
costLineId | string (uuid) | |
description | string | |
costType | enum BomCostType | One of: FixedPerUnit, Percentage, HourlyRate. |
costAmount | number (double) | The amount as authored on the cost line. For Percentage this is the percentage, not money. |
glAccountCode | string | |
sortOrder | integer (int32) | |
resolvedCost | number (double) | The money this line contributes to the batch, after its cost type is applied. |
BomResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
parentProductId | string (uuid) | |
parentProductTitle | string | |
parentProductCode | string | |
title | string | |
description | string | |
bomType | enum BomType | One of: Assembly, Kit. |
status | enum BomStatus | One of: Draft, Active, Blocked, Superseded. |
revisionNumber | integer (int32) | |
effectiveDate | string (date-time) | |
expiryDate | string (date-time) | |
assemblyInstructions | string | |
outputQuantity | number (double) | |
lineItems | BomLineItemResponse[] | |
costLines | BomCostLineResponse[] | |
dateModified | string (date-time) | |
dateCreated | string (date-time) |
MetadataFileAttachment
Not quite as complete as the normal FileAttachment aggregate.
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
type | enum MetadataAttachmentType | One of: File, Link. |
fileAttachmentId | string (uuid) | Left as Guid.Empty for Link entries. |
title | string | |
url | string | |
contentType | string | |
description | string |
WorkOrderMaterialResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
componentProductId | string (uuid) | |
componentTitle | string | |
componentCode | string | |
componentSku | string | |
componentType | enum ProductType | One of: FinishedGood, RawMaterial, Component, Consumable, Service. |
plannedQuantity | number (double) | |
consumedQuantity | number (double) | |
unit | enum UnitOfMeasure | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
WorkOrderProducedLotResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
lotNumber | string | |
expiryDate | string (date-time) |
WorkOrderResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
reference | string | |
description | string | |
revisionNumber | integer (int32) | |
outputProductId | string (uuid) | |
outputProductTitle | string | |
outputProductCode | string | |
bomId | string (uuid) | |
bomRevisionNumber | integer (int32) | |
processId | string (uuid) | |
processRevisionNumber | integer (int32) | |
productionLocationId | string (uuid) | |
productionLocationTitle | string | |
assignedToUserId | string (uuid) | The user who should run this work order. Null when unassigned. |
assignedToName | string | |
status | enum WorkOrderStatus | One of: Planned, InProgress, Completed, Cancelled. |
plannedQuantity | number (double) | |
producedQuantity | number (double) | |
scrappedQuantity | number (double) | |
scrapReason | string | Explains the scrapped quantity. Null when nothing was scrapped. |
scheduledStart | string (date-time) | |
actualStart | string (date-time) | |
actualEnd | string (date-time) | |
totalCost | number (double) | |
unitCost | number (double) | |
materials | WorkOrderMaterialResponse[] | |
steps | WorkOrderStepResponse[] | |
producedLot | WorkOrderProducedLotResponse | |
serialNumbers | WorkOrderSerialNumberResponse[] | |
attachments | MetadataFileAttachment[] | File attachments associated with the work order (batch records, quality certificates, photographs). |
traces | ActivityTrace[] | Activity traces recorded against the work order. |
WorkOrderSerialNumberResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
serialNumber | string | |
status | enum SerialNumberStatus | One of: Available, Consumed, Shipped, Scrapped. |
WorkOrderStepResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
stepNumber | integer (int32) | |
title | string | |
instructions | string | |
status | enum WorkOrderStepStatus | One of: Pending, InProgress, Done, Skipped. |
startedAt | string (date-time) | |
completedAt | string (date-time) | |
completedByUserId | string (uuid) | |
completedByName | string | |
assignedToUserId | string (uuid) | The user who should carry out this step. Null when unassigned. |
assignedToName | string | |
requiresQualityCheck | boolean | Marks this step as a quality checkpoint. |
qualityCheckPassed | boolean | The recorded pass/fail result of the quality check. Null until recorded. |
notes | string |