VeBox RestAPI Milestone Changelog
-
2020-08-04 docs
2
-
v7 /equipment/models/{guid}/contentTypes GET
Return all contentTypes compatible with the given equipment model.
Note that a dummy model is compatible with everything by definition.
-
v7 /equipment/contentTypes GET
Return all contentTypes available for the current user.
-
2020-07-13 docs
1
-
v7 /equipment/{guid}/sales GET, v7 /location/{guid}/sales GET
Added whole period aggregation (pass null as timeGranularity). This new aggregation has a precision up to 1
hour and it does not have a period length limit.
-
2020-06-19 docs
2
-
v7/media/docs/privacyPolicy GET
Returns the html file of the privacy policy (localized).
-
v7/media/docs/termsOfService GET
Returns the html file of the terms of service (localized).
-
2020-04-06 media thumbnail
3
-
v7 /media/{guid}/thumbnail GET
Returns the thumbnail of this media, or 404 if the media is not an image.
-
JSONMedia
Add field "thumbnail"
-
JSONBarcaData
Add field "thumbnail"
-
2020-04-03 alarm severity
2
-
JSONAlarmFilter
Add field 'severityList': you can now filter alarms by severity
-
JSONAlarmType
Add 'severity' field:
- Urgent = 'fa57ce40-6e70-4ec0-8b62-45a30a48490f'
- High = '78f15bf7-b9a6-4a66-b4c4-8145dc4f3384'
- Warning = 'f7034711-90b3-44ef-99f2-2b9185882c02'
-
2020-04-01 Ranking
2
-
v7 /equipment/{guid}/rankings/{type} GET
Returns the rank info for the given equipment.
Requires ACCESS_EQUIPMENT_DETAIL_SALES.
If endDate is missing, it will be defaulted to now().
Ranking available: sales, emptySpeed
-
v7 /locations/{guid}/rankings/{type} GET
Returns the rank info for the given location.
Requires ACCESS_LOCATIONS_LIST_SALES.
If endDate is missing, it will be defaulted to now().
Ranking available: sales, emptySpeed
-
2020-03-25 Sales
3
-
v7 /equipment/{guid}/sales GET
Returns the sales in the given period aggregated by Product and a specific time granularity.
Requires ACCESS_EQUIPMENT_DETAIL_SALES.
A sale period is made up by a start/end (local date) and a time granularity.
If endDate is missing, it will be defaulted to now();
If startDate is missing, a default value will be selected by removing a specific granularity-based time
amount from the endDate:
YEARLY -> 3 years; QUARTERLY -> 1 year; MONTHLY -> 6 months; WEEKLY -> 12 weeks; DAILY -> 4 weeks; HOURLY ->
1 day
The maximum timespan length is:
YEARLY -> 10 years; QUARTERLY -> 3 years; MONTHLY -> 18 months; WEEKLY -> 78
weeks; DAILY -> 45 days; HOURLY -> 3 days;
-
v7 /locations/{guid}/sales GET
Returns the sales in the given period aggregated by Component_category, Product and a specific time
granularity.
Requires ACCESS_LOCATIONS_LIST_SALES.
A sale period is made up by a start/end (local date) and a time granularity.
If endDate is missing, it will be defaulted to now();
If startDate is missing, a default value will be selected by removing a specific granularity-based time
amount from the endDate:
YEARLY -> 3 years; QUARTERLY -> 1 year; MONTHLY -> 6 months; WEEKLY -> 12 weeks; DAILY -> 4 weeks; HOURLY ->
1 day
The maximum timespan length is:
YEARLY -> 10 years; QUARTERLY -> 3 years; MONTHLY -> 18 months; WEEKLY -> 78
weeks; DAILY -> 45 days; HOURLY -> 3 days;
-
v7 GET /recipes
this endpoint has changed signature: from /receipts/{productType} to /recipes.
It can accepts productType and subset as optional params.
The recipe synchronization now syncs Unpacked products too!
-
2020-03-17 Media metadata
2
-
v7 /media/{guid}/metadata PUT
You can now add metadata to a specific media. At the moment only the media coordinates can be specified.
Only the uploader of the media can modify its metadata.
-
v7 JSONMedia
Add several fields to represent the media's metadata. Please refer to swagger docs.
-
2020-03-16 Sales ranking
3
-
v7 JSONLocationFilter
Add *rankType* field in Rank; if omitted defaults to SALES.
-
v7 GET /locations *sort(rank)* param
Changed sorting by rank;
new signature: +-rank(rankType, componentCategoryGuid, startLocalDate, endLocalDate),
where *rankType* can be
- SALES (who sells better, default)
- EMPTY_SPEED (who runs of out stocks faster)
Old signature is still valid and defaults to SALES, but it will be removed in API v8.
-
v7 JSONSales in JSONLocation
Now both the fields depends on the chosen rank type.
-
2020-03-09 Stock management
2
-
v7 GET equipment/{guid}/stockLevel
Gets the current stock level of the equipment.
If the equipment doesn't support the stock level, 404 is returned.
-
v7 PATCH equipment/{guid}/stockLevel
Changes sotck-level related equipment properties.
- /capacity to change the equipment maximum capacity
- /stockPercent to change the stock level based on a percentage of the equipment capacity [0,1]
Requires EDIT_EQUIPMENT_MANUFACTURER_CODE.
If the equipment doesn't support the stock level, 404 is returned.
-
2020-03-03 Equipment Photos
3
-
v7 GET equipment/{guid}/photos
Gets the photos currently linked with that equipment, ordered by date.
-
v7 POST equipment/{guid}/photos
Adds a photo to that equipment (type "multipart/form-data"). Requires EDIT_EQUIPMENT_MANUFACTURER_CODE
-
v7 DELETE equipment/{guid}/photos/{guid}
Deletes the specified photo from that equipment. Requires EDIT_EQUIPMENT_MANUFACTURER_CODE
-
2020-02-27 Alarm Management
3
-
v7 GET alarms/guid
Gets the alarm with the given guid. Must be authenticated with ACCESS_EQUIPMENT_LIST_ALARMS.
-
v7 DELETE alarms/active/guid
An authenticated user can close the alarm.
A work order is created if the given notes are not empty.
The work order is then closed, if possible.
Requires EQUIPMENT_DETAIL_ALARM_RESOLUTION.
-
v7 JSONAlarm
Model changed: add field "closable": if true the alarm can be closed remotely
(please note closable can be true even if the alarm is already closed)
-
2020-01-27 Account Management (3/3)
2
-
v7 GET users/current/roles/managed
An authenticated user can see which roles/permissions are available in his own company.
Requires MANAGE_USER permission.
-
v7 JSONUser
Model changed: roles and permissions field are deprecated in favor of rolesAndPermissions.
-
2020-01-24 Account Management (IN PROGRESS 2/3)
3
-
v7 DELETE users/{guid}/credentials/password
An authenticated user can force a password reset.
Requires MANAGE_USER permission.
-
v7 DELETE users/{guid}
An authenticated user can delete permanently an user in the same company.
Requires MANAGE_USER permission and you can't delete yourself.
-
Commercial hierarchies
Improved user management and visibility for users in commercial hierarchies (NOT NEEDED FOR COOLX)
-
2020-01-21 Account Management (IN PROGRESS 1/3)
8
-
V7 POST /users:
An authenticated user can create new users having specific roles in the company he is in;
Use "challenge_type" = COMPANY and "challenge" = {user company guid}
You can't set the password or the privacy policy in this case.
Requires MANAGE_USER permission. User's tokens will be invalidated afterwards.
-
V7 POST/PUT/DELETE /users/{guid}/roles:
An authenticated user can change the roles of an user in the same company he is in;
Requires MANAGE_USER permission. User's tokens will be invalidated afterwards.
At the moment you can use only "ROLE_INDEPENDENT_USER_RW", "ROLE_INDEPENDENT_USER_R",
"ROLE_INDEPENDENT_USER_ADMIN"
for users inside an INDEPENDENT_COMPANY.
-
V7 POST/DELETE /users/{guid}/ban:
An authenticated user can enable/disable an user in the same company he is in;
user disabled can't perform the login or do anything, but they are still visible.
Requires MANAGE_USER permission. User's tokens will be invalidated afterwards.
-
V7 GET /users/{guid}/:
Reads the target user's data. Requires MANAGE_USER permission.
-
V7 GET /users:
Searches among the users in the same company.
Several filter options are available. See the model below.
Requires MANAGE_USER permission.
-
V7 POST /filters/users:
Creates a reusable filter for user search (look at JSONUserFilter).
Requires MANAGE_USER permission.
-
v7 PUT users/current/credentials
You can now change the user email.
-
New sync process (v7) [EXPERIMENTAL, must be tested on iOS/Android]
-
POST users/current/sync now returns 202 in case of success;
it has also a new location header which links to the GET request.
-
GET users/current/sync now returns 200 in every case;
The response (SyncInfo) is now wrapped in a JSONStatus objects, which has info about the request
status (OK, PENDING, KO).
In case of success, the request has a location header which links to the usual
GET /media request (to download synced data).