Transfer orders
Base URL: https://api.miridia.io. Read Authentication and Conventions before you call these operations.
| Method | Path | Operation |
|---|---|---|
| GET | /api/v1/transfer-orders | Get transfer orders |
| POST | /api/v1/transfer-orders | Create transfer order |
| GET | /api/v1/transfer-orders/{transferOrderId} | Get transfer order |
| PATCH | /api/v1/transfer-orders/{transferOrderId} | Patch transfer order |
| GET | /api/v1/transfer-orders/{transferOrderId}/traces | Get activity traces |
| POST | /api/v1/transfer-orders/{transferOrderId}/dispatch | Dispatch transfer order |
| POST | /api/v1/transfer-orders/{transferOrderId}/receipts | Receive transfer order |
Get transfer orders
GET/api/v1/transfer-orders
Access. Send a bearer token or an API key. The caller needs the TransferOrders 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. |
originLocationId | query | string (uuid) | No | |
destinationLocationId | query | string (uuid) | No | |
status | query | enum TransferOrderStatus | No | One of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled. |
Response
200. Returns a PagedResult envelope. Each item in data is TransferOrderResponse.
curl -X GET "https://api.miridia.io/api/v1/transfer-orders" \
-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",
"code": "string",
"originLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"originLocationTitle": "string",
"destinationLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationLocationTitle": "string",
"status": "Draft",
"requestedByUserId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"dateDispatched": "2026-09-29T08:00:00Z",
"dateReceived": "2026-09-29T08:00:00Z",
"notes": "string",
"dateCreated": "2026-09-29T08:00:00Z",
"dateModified": "2026-09-29T08:00:00Z",
"items": [
{}
]
}
],
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
]
}Create transfer order
POST/api/v1/transfer-orders
Creates a transfer order as Draft (default. A direct DC-to-DC rebalance not yet approved) or Requested (a replenishment request from the receiving side).
Access. Send a bearer token or an API key. The caller needs the TransferOrders modify permission.
Request body
Send JSON with the shape CreateTransferOrderCommand. Creates a transfer order. Status accepts only Draft (default. A direct DC-to-DC rebalance not yet approved) or Requested (a replenishment request from the receiving side. RequestedBy is stamped from the ambient user context). Any other status is rejected; later transitions go through PATCH/dispatch/receive.
| Field | Type | Required | Description |
|---|---|---|---|
originLocationId | string (uuid) | Yes | |
destinationLocationId | string (uuid) | Yes | |
status | enum TransferOrderStatus | No | One of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled. |
expectedArrivalDate | string (date-time) | No | |
notes | string | No | |
items | CreateTransferOrderItemRequest[] | Yes |
Response
200. Returns a SingleResult envelope. The data field is TransferOrderResponse.
curl -X POST "https://api.miridia.io/api/v1/transfer-orders" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"originLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "Draft",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"notes": "string",
"items": [
{
"productId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"quantity": 0
}
]
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": "string",
"originLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"originLocationTitle": "string",
"destinationLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationLocationTitle": "string",
"status": "Draft",
"requestedByUserId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"dateDispatched": "2026-09-29T08:00:00Z",
"dateReceived": "2026-09-29T08:00:00Z",
"notes": "string",
"dateCreated": "2026-09-29T08:00:00Z",
"dateModified": "2026-09-29T08:00:00Z",
"items": [
{}
]
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Get transfer order
GET/api/v1/transfer-orders/{transferOrderId}
Access. Send a bearer token or an API key. The caller needs the TransferOrders view permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
transferOrderId | path | string (uuid) | Yes |
Response
200. Returns a SingleResult envelope. The data field is TransferOrderResponse.
curl -X GET "https://api.miridia.io/api/v1/transfer-orders/{transferOrderId}" \
-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",
"code": "string",
"originLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"originLocationTitle": "string",
"destinationLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationLocationTitle": "string",
"status": "Draft",
"requestedByUserId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"dateDispatched": "2026-09-29T08:00:00Z",
"dateReceived": "2026-09-29T08:00:00Z",
"notes": "string",
"dateCreated": "2026-09-29T08:00:00Z",
"dateModified": "2026-09-29T08:00:00Z",
"items": [
{}
]
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Patch transfer order
PATCH/api/v1/transfer-orders/{transferOrderId}
Partial update of status (guarded transitions) and editable header fields.
Access. Send a bearer token or an API key. The caller needs the TransferOrders modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
transferOrderId | path | string (uuid) | Yes |
Request body
Send JSON with the shape PatchTransferOrderCommand. Partial update of a transfer order's status and editable header fields. Every field is nullable and only applied when non-null. Status accepts only guarded transitions: Requested → Approved or Rejected; Draft → Approved (the direct-transfer path skips the request hop); Cancelled from any pre-dispatch state (Draft/Requested/Approved).
| Field | Type | Required | Description |
|---|---|---|---|
transferOrderId | string (uuid) | No | Bound from the route, not the body. |
status | enum TransferOrderStatus | No | One of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled. |
expectedArrivalDate | string (date-time) | No | |
notes | string | No |
Response
200. Returns a SingleResult envelope. The data field is TransferOrderResponse.
curl -X PATCH "https://api.miridia.io/api/v1/transfer-orders/{transferOrderId}" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"transferOrderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "Draft",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"notes": "string"
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": "string",
"originLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"originLocationTitle": "string",
"destinationLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationLocationTitle": "string",
"status": "Draft",
"requestedByUserId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"dateDispatched": "2026-09-29T08:00:00Z",
"dateReceived": "2026-09-29T08:00:00Z",
"notes": "string",
"dateCreated": "2026-09-29T08:00:00Z",
"dateModified": "2026-09-29T08:00:00Z",
"items": [
{}
]
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Get activity traces
GET/api/v1/transfer-orders/{transferOrderId}/traces
Get transfer order activity traces
Access. Send a bearer token or an API key. The caller needs the TransferOrders view permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
transferOrderId | path | string (uuid) | Yes |
Response
200. Returns a PagedResult envelope. Each item in data is ActivityTrace.
curl -X GET "https://api.miridia.io/api/v1/transfer-orders/{transferOrderId}/traces" \
-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",
"activityType": "System",
"userId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": "string",
"title": "string",
"message": "string",
"source": "string",
"actionLink": "string",
"level": "Standard",
"dateOfActivity": "2026-09-29T08:00:00Z",
"isDashboardOnly": true,
"icon": "SyncAlert"
}
],
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
]
}Dispatch transfer order
POST/api/v1/transfer-orders/{transferOrderId}/dispatch
Access. Send a bearer token or an API key. The caller needs the TransferOrders modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
transferOrderId | path | string (uuid) | Yes |
Request body
Send JSON with the shape DispatchTransferOrderCommand. Only valid from Approved.
| Field | Type | Required | Description |
|---|---|---|---|
transferOrderId | string (uuid) | No | Bound from the route, not the body. |
effectiveDate | string (date-time) | No | Optional business-date override for the TransferOut movement and DateDispatched stamp (defaults to now). See dispatch. |
Response
200. Returns a SingleResult envelope. The data field is TransferOrderResponse.
curl -X POST "https://api.miridia.io/api/v1/transfer-orders/{transferOrderId}/dispatch" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"transferOrderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"effectiveDate": "2026-09-29T08:00:00Z"
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": "string",
"originLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"originLocationTitle": "string",
"destinationLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationLocationTitle": "string",
"status": "Draft",
"requestedByUserId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"dateDispatched": "2026-09-29T08:00:00Z",
"dateReceived": "2026-09-29T08:00:00Z",
"notes": "string",
"dateCreated": "2026-09-29T08:00:00Z",
"dateModified": "2026-09-29T08:00:00Z",
"items": [
{}
]
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}Receive transfer order
POST/api/v1/transfer-orders/{transferOrderId}/receipts
Access. Send a bearer token or an API key. The caller needs the TransferOrders modify permission.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
transferOrderId | path | string (uuid) | Yes |
Request body
Send JSON with the shape ReceiveTransferOrderCommand. Receives some or all of an in-transit transfer order. Only valid while InTransit or PartiallyReceived. Items not listed are left untouched (a further partial receipt).
| Field | Type | Required | Description |
|---|---|---|---|
transferOrderId | string (uuid) | No | Bound from the route, not the body. |
effectiveDate | string (date-time) | No | Optional business-date override for the TransferIn movement(s) and, once fully received, the DateReceived stamp (defaults to now). See receive. |
items | ReceiveTransferOrderItemRequest[] | Yes |
Response
200. Returns a SingleResult envelope. The data field is TransferOrderResponse.
curl -X POST "https://api.miridia.io/api/v1/transfer-orders/{transferOrderId}/receipts" \
-H "Authorization: Bearer $MIRIDIA_TOKEN" \
-H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"transferOrderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"effectiveDate": "2026-09-29T08:00:00Z",
"items": [
{
"productId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"quantityReceived": 0
}
]
}'{
"message": "string",
"messages": [
{
"title": "string",
"message": "string",
"level": "Standard",
"icon": "SyncAlert",
"code": "string"
}
],
"data": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"code": "string",
"originLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"originLocationTitle": "string",
"destinationLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"destinationLocationTitle": "string",
"status": "Draft",
"requestedByUserId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"expectedArrivalDate": "2026-09-29T08:00:00Z",
"dateDispatched": "2026-09-29T08:00:00Z",
"dateReceived": "2026-09-29T08:00:00Z",
"notes": "string",
"dateCreated": "2026-09-29T08:00:00Z",
"dateModified": "2026-09-29T08:00:00Z",
"items": [
{}
]
},
"statusCode": "OK",
"canRead": true,
"canEdit": true,
"canDelete": true
}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. |
CreateTransferOrderItemRequest
A line item supplied on transfer-order creation.
| Field | Type | Description |
|---|---|---|
productId | string (uuid) | |
quantity | number (double) |
ReceiveTransferOrderItemRequest
Per-item quantity supplied on a receiving action against an in-transit transfer order.
| Field | Type | Description |
|---|---|---|
productId | string (uuid) | |
quantityReceived | number (double) |
TransferOrderItemResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
productId | string (uuid) | |
productTitle | string | |
productCode | string | |
productSku | string | |
quantity | number (double) | |
unit | enum UnitOfMeasure | One of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet. |
quantityReceived | number (double) | |
quantityRemaining | number (double) | |
unitCost | number (double) |
TransferOrderResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
code | string | |
originLocationId | string (uuid) | |
originLocationTitle | string | |
destinationLocationId | string (uuid) | |
destinationLocationTitle | string | |
status | enum TransferOrderStatus | One of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled. |
requestedByUserId | string (uuid) | |
expectedArrivalDate | string (date-time) | |
dateDispatched | string (date-time) | |
dateReceived | string (date-time) | |
notes | string | |
dateCreated | string (date-time) | |
dateModified | string (date-time) | |
items | TransferOrderItemResponse[] |