Miridia
Portal
Inventory

Locations

The locations operations of the Core API.

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

MethodPathOperation
GET/api/v1/LocationsGet all locations
POST/api/v1/LocationsCreate location
GET/api/v1/Locations/{locationId}Get location
PUT/api/v1/Locations/{locationId}Update location
GET/api/v1/Locations/{locationId}/capabilitiesGet location capabilities
PUT/api/v1/Locations/{locationId}/capabilitiesUpdate location capabilities

Get all locations

GET/api/v1/Locations

Access. Send a bearer token or an API key. The caller needs the Settings 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.

Response

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

Request
curl -X GET "https://api.miridia.io/api/v1/Locations" \
  -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",
      "title": "string",
      "description": "string",
      "locationType": "Office",
      "isDefault": true,
      "address": {},
      "code": "string",
      "canProduce": true,
      "dateCreated": "2026-09-29T08:00:00Z",
      "dateModified": "2026-09-29T08:00:00Z"
    }
  ],
  "messages": [
    {
      "title": "string",
      "message": "string",
      "level": "Standard",
      "icon": "SyncAlert",
      "code": "string"
    }
  ]
}

Create location

POST/api/v1/Locations

Access. Send a bearer token or an API key. The caller needs the Settings modify permission.

Request body

Send JSON with the shape CreateBusinessLocationCommand.

FieldTypeRequiredDescription
businessIdstring (uuid)No
titlestringYesLimits: maximum 255 characters.
descriptionstringNo
locationTypeenum BusinessLocationTypeNoOne of: Office, Warehouse, Storefront, Remote, Other, Headquarters, Factory.
addressUpdateAddressRequestYes
codestringNoLimits: maximum 50 characters.

Response

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

Request
curl -X POST "https://api.miridia.io/api/v1/Locations" \
  -H "Authorization: Bearer $MIRIDIA_TOKEN" \
  -H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "title": "string",
  "description": "string",
  "locationType": "Office",
  "address": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "placeId": "string",
    "name": "string",
    "website": "https://example.com",
    "fullAddress": "string",
    "street": "string",
    "suburb": "string",
    "city": "string",
    "country": "string",
    "postcode": "string",
    "unit": "string",
    "number": "string",
    "province": "string",
    "latitude": 0,
    "longitude": 0
  },
  "code": "string"
}'
Response
{
  "message": "string",
  "messages": [
    {
      "title": "string",
      "message": "string",
      "level": "Standard",
      "icon": "SyncAlert",
      "code": "string"
    }
  ],
  "data": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "title": "string",
    "description": "string",
    "locationType": "Office",
    "isDefault": true,
    "address": {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "placeId": "string",
      "name": "string",
      "website": "string",
      "fullAddress": "string",
      "street": "string",
      "suburb": "string",
      "city": "string",
      "country": "string",
      "postcode": "string",
      "unit": "string",
      "number": "string",
      "province": "string",
      "latitude": 0,
      "longitude": 0
    },
    "code": "string",
    "canProduce": true,
    "dateCreated": "2026-09-29T08:00:00Z",
    "dateModified": "2026-09-29T08:00:00Z"
  },
  "statusCode": "OK",
  "canRead": true,
  "canEdit": true,
  "canDelete": true
}

Get location

GET/api/v1/Locations/{locationId}

Access. Send a bearer token or an API key. The caller needs the Settings view permission.

Parameters

NameInTypeRequiredDescription
locationIdpathstring (uuid)Yes

Response

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

Request
curl -X GET "https://api.miridia.io/api/v1/Locations/{locationId}" \
  -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",
    "title": "string",
    "description": "string",
    "locationType": "Office",
    "isDefault": true,
    "address": {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "placeId": "string",
      "name": "string",
      "website": "string",
      "fullAddress": "string",
      "street": "string",
      "suburb": "string",
      "city": "string",
      "country": "string",
      "postcode": "string",
      "unit": "string",
      "number": "string",
      "province": "string",
      "latitude": 0,
      "longitude": 0
    },
    "code": "string",
    "canProduce": true,
    "dateCreated": "2026-09-29T08:00:00Z",
    "dateModified": "2026-09-29T08:00:00Z"
  },
  "statusCode": "OK",
  "canRead": true,
  "canEdit": true,
  "canDelete": true
}

Update location

PUT/api/v1/Locations/{locationId}

Access. Send a bearer token or an API key. The caller needs the Settings modify permission.

Parameters

NameInTypeRequiredDescription
locationIdpathstring (uuid)Yes

Request body

Send JSON with the shape UpdateBusinessLocationCommand.

FieldTypeRequiredDescription
businessIdstring (uuid)No
locationIdstring (uuid)No
titlestringYesLimits: maximum 255 characters.
descriptionstringNo
locationTypeenum BusinessLocationTypeNoOne of: Office, Warehouse, Storefront, Remote, Other, Headquarters, Factory.
addressUpdateAddressRequestYes
isDefaultbooleanNoPromotes/demotes the default flag. null/omitted leaves the default flag untouched; true promotes this location (demoting the current default in the same transaction) unless it is already the default; false is a no-op unless this location is the current default, in which case the request is rejected. There is no way to reach a no-default state.
codestringNoLimits: maximum 50 characters.

Response

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

Request
curl -X PUT "https://api.miridia.io/api/v1/Locations/{locationId}" \
  -H "Authorization: Bearer $MIRIDIA_TOKEN" \
  -H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "businessId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "locationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "title": "string",
  "description": "string",
  "locationType": "Office",
  "address": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "placeId": "string",
    "name": "string",
    "website": "https://example.com",
    "fullAddress": "string",
    "street": "string",
    "suburb": "string",
    "city": "string",
    "country": "string",
    "postcode": "string",
    "unit": "string",
    "number": "string",
    "province": "string",
    "latitude": 0,
    "longitude": 0
  },
  "isDefault": true,
  "code": "string"
}'
Response
{
  "message": "string",
  "messages": [
    {
      "title": "string",
      "message": "string",
      "level": "Standard",
      "icon": "SyncAlert",
      "code": "string"
    }
  ],
  "data": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "title": "string",
    "description": "string",
    "locationType": "Office",
    "isDefault": true,
    "address": {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "placeId": "string",
      "name": "string",
      "website": "string",
      "fullAddress": "string",
      "street": "string",
      "suburb": "string",
      "city": "string",
      "country": "string",
      "postcode": "string",
      "unit": "string",
      "number": "string",
      "province": "string",
      "latitude": 0,
      "longitude": 0
    },
    "code": "string",
    "canProduce": true,
    "dateCreated": "2026-09-29T08:00:00Z",
    "dateModified": "2026-09-29T08:00:00Z"
  },
  "statusCode": "OK",
  "canRead": true,
  "canEdit": true,
  "canDelete": true
}

Get location capabilities

GET/api/v1/Locations/{locationId}/capabilities

Returns this location's procurement/fulfilment capability flags. A location with no persisted capabilities returns the no-restriction defaults (every flag true, no default fulfiller) rather than a 404.

Access. Send a bearer token or an API key. The caller needs the Settings view permission.

Parameters

NameInTypeRequiredDescription
locationIdpathstring (uuid)Yes

Response

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

Request
curl -X GET "https://api.miridia.io/api/v1/Locations/{locationId}/capabilities" \
  -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": {
    "locationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "mayCreatePurchaseOrders": true,
    "mayRequestTransferOrders": true,
    "mayFulfillTransferOrders": true,
    "mayCreateSalesOrders": true,
    "mayProduce": true,
    "defaultFulfillmentLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "dateCreated": "2026-09-29T08:00:00Z",
    "dateModified": "2026-09-29T08:00:00Z"
  },
  "statusCode": "OK",
  "canRead": true,
  "canEdit": true,
  "canDelete": true
}

Update location capabilities

PUT/api/v1/Locations/{locationId}/capabilities

Nothing acts on these flags today. They exist for the future sub-business hierarchy work to express which locations may buy or fulfil for themselves.

Access. Send a bearer token or an API key. The caller needs the Settings modify permission.

Parameters

NameInTypeRequiredDescription
locationIdpathstring (uuid)Yes

Request body

Send JSON with the shape UpdateBusinessLocationCapabilitiesCommand.

FieldTypeRequiredDescription
locationIdstring (uuid)NoBound from the route, not the body.
mayCreatePurchaseOrdersbooleanNo
mayRequestTransferOrdersbooleanNo
mayFulfillTransferOrdersbooleanNo
mayCreateSalesOrdersbooleanNo
mayProducebooleanNo
defaultFulfillmentLocationIdstring (uuid)No

Response

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

Request
curl -X PUT "https://api.miridia.io/api/v1/Locations/{locationId}/capabilities" \
  -H "Authorization: Bearer $MIRIDIA_TOKEN" \
  -H "X-Business-Id: $MIRIDIA_BUSINESS_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "locationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "mayCreatePurchaseOrders": true,
  "mayRequestTransferOrders": true,
  "mayFulfillTransferOrders": true,
  "mayCreateSalesOrders": true,
  "mayProduce": true,
  "defaultFulfillmentLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}'
Response
{
  "message": "string",
  "messages": [
    {
      "title": "string",
      "message": "string",
      "level": "Standard",
      "icon": "SyncAlert",
      "code": "string"
    }
  ],
  "data": {
    "locationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "mayCreatePurchaseOrders": true,
    "mayRequestTransferOrders": true,
    "mayFulfillTransferOrders": true,
    "mayCreateSalesOrders": true,
    "mayProduce": true,
    "defaultFulfillmentLocationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "dateCreated": "2026-09-29T08:00:00Z",
    "dateModified": "2026-09-29T08:00:00Z"
  },
  "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.

AddressResponse
FieldTypeDescription
idstring (uuid)
placeIdstring
namestring
websitestring
fullAddressstring
streetstring
suburbstring
citystring
countrystring
postcodestring
unitstring
numberstring
provincestring
latitudenumber (double)
longitudenumber (double)
BusinessLocationCapabilitiesResponse
FieldTypeDescription
locationIdstring (uuid)
mayCreatePurchaseOrdersboolean
mayRequestTransferOrdersboolean
mayFulfillTransferOrdersboolean
mayCreateSalesOrdersboolean
mayProduceboolean
defaultFulfillmentLocationIdstring (uuid)
dateCreatedstring (date-time)
dateModifiedstring (date-time)
BusinessLocationResponse
FieldTypeDescription
idstring (uuid)
titlestring
descriptionstring
locationTypeenum BusinessLocationTypeOne of: Office, Warehouse, Storefront, Remote, Other, Headquarters, Factory.
isDefaultboolean
addressAddressResponse
codestringOptional free-text internal reference code for the location (e.g. "WH-01"). Display-only.
canProducebooleanDrives the production location picker.
dateCreatedstring (date-time)
dateModifiedstring (date-time)
UpdateAddressRequest
FieldTypeDescription
idstring (uuid)
placeIdstring (string)Limits: maximum 100 characters.
namestring (string)Limits: maximum 50 characters.
websitestring (uri)Limits: maximum 100 characters.
fullAddressstringLimits: maximum 500 characters.
streetstring (string)Limits: maximum 80 characters.
suburbstring (string)Limits: maximum 80 characters.
citystringLimits: maximum 80 characters.
countrystringLimits: maximum 80 characters.
postcodestring (postal-code)Limits: maximum 15 characters.
unitstringLimits: maximum 10 characters.
numberstring (postal-code)Limits: maximum 20 characters.
provincestring (string)Limits: maximum 80 characters.
latitudenumber (double)Limits: minimum -90, maximum 90.
longitudenumber (double)Limits: minimum -180, maximum 180.