Locations
Base URL: https://api.miridia.io. Read Authentication and Conventions before you call these operations.
| Method | Path | Operation |
|---|---|---|
| GET | /api/v1/Locations | Get all locations |
| POST | /api/v1/Locations | Create location |
| GET | /api/v1/Locations/{locationId} | Get location |
| PUT | /api/v1/Locations/{locationId} | Update location |
| GET | /api/v1/Locations/{locationId}/capabilities | Get location capabilities |
| PUT | /api/v1/Locations/{locationId}/capabilities | Update 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
| 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 BusinessLocationResponse.
curl -X GET "https://api.miridia.io/api/v1/Locations" \
-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",
"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.
| Field | Type | Required | Description |
|---|---|---|---|
businessId | string (uuid) | No | |
title | string | Yes | Limits: maximum 255 characters. |
description | string | No | |
locationType | enum BusinessLocationType | No | One of: Office, Warehouse, Storefront, Remote, Other, Headquarters, Factory. |
address | UpdateAddressRequest | Yes | |
code | string | No | Limits: maximum 50 characters. |
Response
200. Returns a SingleResult envelope. The data field is BusinessLocationResponse.
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"
}'{
"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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | path | string (uuid) | Yes |
Response
200. Returns a SingleResult envelope. The data field is BusinessLocationResponse.
curl -X GET "https://api.miridia.io/api/v1/Locations/{locationId}" \
-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",
"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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | path | string (uuid) | Yes |
Request body
Send JSON with the shape UpdateBusinessLocationCommand.
| Field | Type | Required | Description |
|---|---|---|---|
businessId | string (uuid) | No | |
locationId | string (uuid) | No | |
title | string | Yes | Limits: maximum 255 characters. |
description | string | No | |
locationType | enum BusinessLocationType | No | One of: Office, Warehouse, Storefront, Remote, Other, Headquarters, Factory. |
address | UpdateAddressRequest | Yes | |
isDefault | boolean | No | Promotes/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. |
code | string | No | Limits: maximum 50 characters. |
Response
200. Returns a SingleResult envelope. The data field is BusinessLocationResponse.
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"
}'{
"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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | path | string (uuid) | Yes |
Response
200. Returns a SingleResult envelope. The data field is BusinessLocationCapabilitiesResponse.
curl -X GET "https://api.miridia.io/api/v1/Locations/{locationId}/capabilities" \
-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": {
"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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | path | string (uuid) | Yes |
Request body
Send JSON with the shape UpdateBusinessLocationCapabilitiesCommand.
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string (uuid) | No | Bound from the route, not the body. |
mayCreatePurchaseOrders | boolean | No | |
mayRequestTransferOrders | boolean | No | |
mayFulfillTransferOrders | boolean | No | |
mayCreateSalesOrders | boolean | No | |
mayProduce | boolean | No | |
defaultFulfillmentLocationId | string (uuid) | No |
Response
200. Returns a SingleResult envelope. The data field is BusinessLocationCapabilitiesResponse.
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"
}'{
"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
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
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 | number (double) | |
longitude | number (double) |
BusinessLocationCapabilitiesResponse
| Field | Type | Description |
|---|---|---|
locationId | string (uuid) | |
mayCreatePurchaseOrders | boolean | |
mayRequestTransferOrders | boolean | |
mayFulfillTransferOrders | boolean | |
mayCreateSalesOrders | boolean | |
mayProduce | boolean | |
defaultFulfillmentLocationId | string (uuid) | |
dateCreated | string (date-time) | |
dateModified | string (date-time) |
BusinessLocationResponse
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
title | string | |
description | string | |
locationType | enum BusinessLocationType | One of: Office, Warehouse, Storefront, Remote, Other, Headquarters, Factory. |
isDefault | boolean | |
address | AddressResponse | |
code | string | Optional free-text internal reference code for the location (e.g. "WH-01"). Display-only. |
canProduce | boolean | Drives the production location picker. |
dateCreated | string (date-time) | |
dateModified | string (date-time) |
UpdateAddressRequest
| Field | Type | Description |
|---|---|---|
id | string (uuid) | |
placeId | string (string) | Limits: maximum 100 characters. |
name | string (string) | Limits: maximum 50 characters. |
website | string (uri) | Limits: maximum 100 characters. |
fullAddress | string | Limits: maximum 500 characters. |
street | string (string) | Limits: maximum 80 characters. |
suburb | string (string) | Limits: maximum 80 characters. |
city | string | Limits: maximum 80 characters. |
country | string | Limits: maximum 80 characters. |
postcode | string (postal-code) | Limits: maximum 15 characters. |
unit | string | Limits: maximum 10 characters. |
number | string (postal-code) | Limits: maximum 20 characters. |
province | string (string) | Limits: maximum 80 characters. |
latitude | number (double) | Limits: minimum -90, maximum 90. |
longitude | number (double) | Limits: minimum -180, maximum 180. |