Unit management
Manage Units
Retrieves a list of units conforming with the given filters. Supports sorting and paging.
If the
Accept-Languageis set to*each internationalized field is returned as a map that contains all of translations in a format ofkey:valuepairs, where thekeyis the language code andvalueis the translation.The
Accept-Languagecan contain the priority list of languages which should be returned. Always one language is returned as a single string field. Example: 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7'If the
Accept-Languageheader is empty default language defined in theConfiguration serviceis taken.If the unit name matches none of the specified languages, an empty string is returned in the name field.
Please, see the examples below.
The tenant name.
testtenantNote: params is not a name of query param. Any API model field can be taken as a filtering parameter.
Filtering can be done by each field available in API. Filtering by multiple fields is also allowed. In that case, fields are aggregated with AND logic operator.
In the case of string values, the contains approach is taken (filtering by substrings). In the case of boolean and number fields, the equals approach is taken.
Filtering query params examples:
type=mass- all units withtypethat containsmassare returned. For example, in that case all mass units will be returned.type=a- all units withtypethat containsaare returned. For example, in that case allmassanddistanceunits are returned.factor=1- all units withfactorthat equals1are returned.baseUnit=true- all units withbaseUnitthat equalstrueare returned.type=mass&name=gram- all units withtypethat containsmassANDnamethat containsgramare returned. For example, in that casekilogram,gram,decagramunits are returned.
Filtering by localized fields:
-
Filtering by localized fields without language key is possible only when
Accept-Languageheader with correct language is provided or when it is not set at all (in that case default language is taken). For example, whenAccept-Language' is set to 'en', the request with parametername=meterreturns all units withnamethat containsmeterin English. For example, in that casemeter,kilometerandmillimeter` units are returned. -
When
Accept-Languageheader is set to*filtering by localized fields is possible only when fields contains language key. For example, whenAccept-Languageis set to '*', the request with parametername.en=meterreturns all units withname.enthat containsmeterin English. For example, in that casemeter,kilometerandmillimeterunits are returned.
Fields to sort the response data by following order of the parameters from left to right.
Can contain multiple fields in format: field name:sort direction separated by a comma.
The colon with sort direction parameter is redundant and descending order is taken only
if it is equal to desc or DESC. Ascending order is considered in any other case.
Sorting by name parameter works properly only if the Accept-Language header is set to
a specific language or is empty with default language specified in the configuration service.
name,factor:asc,metadata.createdAt:descThe page number to be displayed.
1Number of units on a single page.
60The Accept-Language request HTTP header defines which languages the client is able to understand, and which locale variant is preferred. If empty, English language is returned. It can be a priority list working as a fallback mechanism.
fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7Total count flag. If set to true X-Total-Count header is returned.
trueThe units were retrieved successfully.
Example response
Given request is unauthorized - the authorization token is invalid or has expired.
Details will be provided in the response payload.
Unexpected server error
GET /unit-handling/{tenant}/units HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
{
"code": "g",
"name": "gram",
"type": "mass",
"baseUnit": true,
"factor": 1,
"metadata": {
"version": 2,
"createdAt": "2021-10-25T10:59:24.385Z",
"modifiedAt": "2021-10-25T10:59:24.385Z"
}
},
{
"code": "ug",
"name": "microgram",
"type": "mass",
"symbol": "µg",
"baseUnit": false,
"factor": 0.000001,
"metadata": {
"version": 1,
"createdAt": "2021-10-25T10:59:24.385Z",
"modifiedAt": "2021-10-25T10:59:24.385Z"
}
}
]Creates a new unit. After successful creation, unit will be visible and executable for other parts of the system after 5 minutes.
If the
Content-Languageis set to*the request body payload should contain localized fields not as a string, but as a map in format:key:value, where thekeyis the language code andvalueis the translation.
Please see the example (Unit with name as a map) in Request body section.
Required scopes
unithandling.unit_manage
The tenant name.
testtenantThe Content-Language request HTTP header defines language(s) of the payload.
frThe unit code.
gThe name of the unit in the form of map (language, value) or string.
The type of unit.
massThe symbol of unit.
°CThe base unit flag.
trueThe conversion factor. The factor value must be greater than zero.
1The unit has been successfully created.
Example response
Given request is unauthorized - the authorization token is invalid or has expired.
Details will be provided in the response payload.
Given authorization scopes are not sufficient and do not match scopes required by the endpoint.
The unit already exists.
Unexpected server error
POST /unit-handling/{tenant}/units HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Language: fr
Content-Type: application/json
Accept: */*
Content-Length: 86
{
"code": "kg",
"name": "kilogram",
"type": "mass",
"baseUnit": true,
"symbol": "kg",
"factor": 1
}{
"code": "text"
}The tenant name.
testtenantThe units have been successfully deleted.
No content
The units cannot be deleted due to no payload.
Given request is unauthorized - the authorization token is invalid or has expired.
Details will be provided in the response payload.
Given authorization scopes are not sufficient and do not match scopes required by the endpoint.
Unexpected server error
DELETE /unit-handling/{tenant}/units HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
Retrieves the unit with the given code.
If the
Accept-Languageis set to*each internationalized field is returned as a map that contains all of translations in a format ofkey:valuepairs, where thekeyis the language code andvalueis the translation.The
Accept-Languagecan contain the priority list of languages which should be returned. Always one language is returned as a single string field.If the
Accept-Languageheader is empty default language defined in theConfiguration serviceis taken.If the unit name matches none of the specified languages, an empty string is returned in the name field.
Please, see the examples below.
The code of the unit.
gThe tenant name.
testtenantThe Accept-Language request HTTP header defines which languages the client is able to understand, and which locale variant is preferred. If empty, English language is returned. It can be a priority list working as a fallback mechanism.
fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7Returns the given unit.
Example response
Given request is unauthorized - the authorization token is invalid or has expired.
Details will be provided in the response payload.
The unit has not been found.
Unexpected server error
GET /unit-handling/{tenant}/units/{unitCode} HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
"code": "kg",
"name": "kilogram",
"type": "mass",
"baseUnit": true,
"factor": 1,
"metadata": {
"version": 1
}
}Updates an existing unit. Optimistic locking is applied to prevent update races when unit in the payload contains the optional version field. After successful update, unit will be visible and executable for other parts of the system after 5 minutes.
If the
Content-Languageis set to*the request body payload should contain localized fields not as a string, but as a map in format:key:value, where thekeyis the language code andvalueis the translation.
Please see the example (Unit with name as a map) in Request body section.
Required scopes
unithandling.unit_manage
The code of the unit.
gThe tenant name.
testtenantThe Content-Language request HTTP header defines language(s) of the payload.
frThe unit has been updated successfully.
No content
The unit cannot be updated due to an incorrect payload.
Given request is unauthorized - the authorization token is invalid or has expired.
Details will be provided in the response payload.
Given authorization scopes are not sufficient and do not match scopes required by the endpoint.
The unit has not been found.
Unexpected server error
PUT /unit-handling/{tenant}/units/{unitCode} HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Language: fr
Content-Type: application/json
Accept: */*
Content-Length: 97
{
"code": "kg",
"name": "kilogram",
"type": "mass",
"baseUnit": true,
"factor": 1,
"metadata": {
"version": 1
}
}No content
The code of the unit.
gThe tenant name.
testtenantThe unit has been successfully deleted.
No content
Given request is unauthorized - the authorization token is invalid or has expired.
Details will be provided in the response payload.
Given authorization scopes are not sufficient and do not match scopes required by the endpoint.
The unit has not been found.
Unexpected server error
DELETE /unit-handling/{tenant}/units/{unitCode} HTTP/1.1
Host: api.emporix.io
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
No content
Was this helpful?

