Miridia
Portal
Inventory

Transfer orders

The transfer orders operations of the Core API.

Base URL: https://api.miridia.io. Read Authentication and Conventions before you call these operations.

MethodPathOperation
GET/api/v1/transfer-ordersGet transfer orders
POST/api/v1/transfer-ordersCreate 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}/tracesGet activity traces
POST/api/v1/transfer-orders/{transferOrderId}/dispatchDispatch transfer order
POST/api/v1/transfer-orders/{transferOrderId}/receiptsReceive 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

NameInTypeRequiredDescription
Pagequeryinteger (int32)NoLimits: minimum 1.
PageSizequeryinteger (int32)NoLimits: minimum 1, maximum 100.
$orderbyquerystringNoExample: "created_at desc" or "name asc"
$filterquerystringNoApply 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'".
$searchquerystringNoProvide a search value which would inherit the 'CONTAINS' behaviour.
originLocationIdquerystring (uuid)No
destinationLocationIdquerystring (uuid)No
statusqueryenum TransferOrderStatusNoOne of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled.

Response

200. Returns a PagedResult envelope. Each item in data is TransferOrderResponse.

Request
curl -X GET "https://api.miridia.io/api/v1/transfer-orders" \
  -H "Authorization: Bearer $MIRIDIA_TOKEN" \
  -H "X-Business-Id: $MIRIDIA_BUSINESS_ID"
Response
{
  "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.

FieldTypeRequiredDescription
originLocationIdstring (uuid)Yes
destinationLocationIdstring (uuid)Yes
statusenum TransferOrderStatusNoOne of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled.
expectedArrivalDatestring (date-time)No
notesstringNo
itemsCreateTransferOrderItemRequest[]Yes

Response

200. Returns a SingleResult envelope. The data field is TransferOrderResponse.

Request
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
    }
  ]
}'
Response
{
  "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

NameInTypeRequiredDescription
transferOrderIdpathstring (uuid)Yes

Response

200. Returns a SingleResult envelope. The data field is TransferOrderResponse.

Request
curl -X GET "https://api.miridia.io/api/v1/transfer-orders/{transferOrderId}" \
  -H "Authorization: Bearer $MIRIDIA_TOKEN" \
  -H "X-Business-Id: $MIRIDIA_BUSINESS_ID"
Response
{
  "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

NameInTypeRequiredDescription
transferOrderIdpathstring (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).

FieldTypeRequiredDescription
transferOrderIdstring (uuid)NoBound from the route, not the body.
statusenum TransferOrderStatusNoOne of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled.
expectedArrivalDatestring (date-time)No
notesstringNo

Response

200. Returns a SingleResult envelope. The data field is TransferOrderResponse.

Request
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"
}'
Response
{
  "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

NameInTypeRequiredDescription
transferOrderIdpathstring (uuid)Yes

Response

200. Returns a PagedResult envelope. Each item in data is ActivityTrace.

Request
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"
Response
{
  "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

NameInTypeRequiredDescription
transferOrderIdpathstring (uuid)Yes

Request body

Send JSON with the shape DispatchTransferOrderCommand. Only valid from Approved.

FieldTypeRequiredDescription
transferOrderIdstring (uuid)NoBound from the route, not the body.
effectiveDatestring (date-time)NoOptional 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.

Request
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"
}'
Response
{
  "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

NameInTypeRequiredDescription
transferOrderIdpathstring (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).

FieldTypeRequiredDescription
transferOrderIdstring (uuid)NoBound from the route, not the body.
effectiveDatestring (date-time)NoOptional business-date override for the TransferIn movement(s) and, once fully received, the DateReceived stamp (defaults to now). See receive.
itemsReceiveTransferOrderItemRequest[]Yes

Response

200. Returns a SingleResult envelope. The data field is TransferOrderResponse.

Request
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
    }
  ]
}'
Response
{
  "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.

FieldTypeDescription
idstring (uuid)
activityTypeenum ActivityTypeOne of: System, User.
userIdstring (uuid)
codestring
titlestring
messagestring
sourcestring
actionLinkstring
levelenum NotificationLevelOne of: Standard, Info, Warning, Error, Success, Recommendation.
dateOfActivitystring (date-time)
isDashboardOnlyboolean
iconenum MdiIconOne 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.

FieldTypeDescription
productIdstring (uuid)
quantitynumber (double)
ReceiveTransferOrderItemRequest

Per-item quantity supplied on a receiving action against an in-transit transfer order.

FieldTypeDescription
productIdstring (uuid)
quantityReceivednumber (double)
TransferOrderItemResponse
FieldTypeDescription
idstring (uuid)
productIdstring (uuid)
productTitlestring
productCodestring
productSkustring
quantitynumber (double)
unitenum UnitOfMeasureOne of: Each, Kilogram, Gram, Litre, Millilitre, Metre, Centimetre, SquareMetre, CubicMetre, Pair, Pack, Box, Roll, Sheet.
quantityReceivednumber (double)
quantityRemainingnumber (double)
unitCostnumber (double)
TransferOrderResponse
FieldTypeDescription
idstring (uuid)
codestring
originLocationIdstring (uuid)
originLocationTitlestring
destinationLocationIdstring (uuid)
destinationLocationTitlestring
statusenum TransferOrderStatusOne of: Draft, Requested, Approved, InTransit, PartiallyReceived, Received, Rejected, Cancelled.
requestedByUserIdstring (uuid)
expectedArrivalDatestring (date-time)
dateDispatchedstring (date-time)
dateReceivedstring (date-time)
notesstring
dateCreatedstring (date-time)
dateModifiedstring (date-time)
itemsTransferOrderItemResponse[]