Asset
Every asset is referred to by its asset group object id.
Asset Object
If an asset is part of an active asset group, its location will be overwritten by that of the asset group.
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset's id |
| organisation_id | snowflake | the id of the organisation the asset belongs to |
| fleet_id | ?snowflake | the id of the fleet the asset belongs to |
| type | asset type | the asset's type |
| status | asset status | the asset's status |
| location | location object | the asset's location |
| position | integer | the order of the assets |
| name | string | the asset's name (2-20 characters) |
| description | string | the asset's description |
| fields | object<snowflake, asset field value> | custom field values keyed by field id |
Asset Group Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset group's id |
| type | asset group type | the asset group's type |
| active | boolean | a flag that determines if the asset group is active |
| name | string | the asset group's name (2-20 characters) |
| description | string | the asset group's description |
| assets | array<asset group asset> | the assets assigned to the asset group |
Asset Group Asset Object
| Field | Type | Description |
|---|---|---|
| asset | asset object | the asset |
| position | integer | the order of the asset in the group |
Asset Status Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset status's id |
| organisation_id | snowflake | the id of the organisation the asset status belongs to |
| active | boolean | a flag that determines if the asset is active |
| name | string | the asset's name (2-20 characters) |
| description | string | the asset's description |
Get Asset Status
GET /api/assetstatuses/{id}
Returns the asset status object for the given asset status id. Requires membership in the organisation that owns the asset status.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset status does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Update Asset Status
PATCH /api/assetstatuses/{id}
Updates an asset status. Requires membership in the organisation that owns the asset status.
Only the fields provided will be updated.
JSON Params
| Field | Type | Description |
|---|---|---|
| name | ?string | the asset status's name (2-20 characters) |
| description | ?string | the asset status's description |
| active | ?boolean | whether the asset status is active |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset status does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Create Asset Status
POST /organisations/{organisation.id}/asset-statuses
Creates a new asset status in the organisation. Requires the MANAGE_FLEETS permission.
JSON Params
| Field | Type | Description | Default |
|---|---|---|---|
| name | ?string | the asset status's name (2-20 characters) | new asset status |
| description | ?string | the asset status's description | |
| active | ?boolean | whether the asset status is active |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
List Asset Statuses
GET /organisations/{organisation.id}/asset-statuses
Returns an array of asset status objects for the organisation. Requires membership in the organisation.
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Asset Type Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset type's id |
| organisation_id | snowflake | the id of the organisation the asset type belongs to |
| fleet_id | ?snowflake | the id of the fleet the asset type belongs to |
| ephemerality | asset group ephemerality | the asset type's ephemerality type |
| name | string | the asset type's name (2-20 characters) |
| description | string | the asset type's description |
| fields | array<asset type field> | associated asset fields |
Asset Type Field Object
| Field | Type | Description |
|---|---|---|
| type_id | snowflake | the id of the asset type |
| field | asset field object | the asset field definition |
| enum_values | array<asset field enum value> | possible enum values for the field, if applicable |
Asset Field Enum Value Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the enum value's id |
| asset_field_id | snowflake | the id of the asset field |
| value | string | the enum value |
Create Asset Type
POST /organisations/{organisation.id}/asset-types
Creates a new asset type in the organisation. Requires the MANAGE_FLEETS permission.
JSON Params
| Field | Type | Description | Default |
|---|---|---|---|
| fleet_id | ?snowflake | the id of the fleet to assign | 0 |
| ephemerality | asset group ephemerality | the asset type's ephemerality type | |
| name | ?string | the asset type's name (2-20 characters) | new asset type |
| description | ?string | the asset type's description |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (fleet does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
List Asset Types
GET /organisations/{organisation.id}/asset-types
Returns an array of asset type objects for the organisation. Each asset type includes its associated asset type field definitions. Requires membership in the organisation.
Parameters
| Field | Type | Description | Default |
|---|---|---|---|
| ephemerality | ?asset group ephemerality | filter asset types by ephemerality type |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Get Asset Type
GET /api/assettype/{id}
Returns the asset type object for the given asset type id, including its associated asset field definitions. Requires membership in the organisation that owns the asset type.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset type does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Update Asset Type
PATCH /api/assettype/{id}
Updates an asset type. Requires the MANAGE_FLEETS permission for the organisation.
Only the fields provided will be updated.
JSON Params
| Field | Type | Description |
|---|---|---|
| name | ?string | the asset type's name (2-20 characters) |
| description | ?string | the asset type's description |
| fleet_id | ?snowflake | the id of the fleet to assign |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset type does not exist) |
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (fleet does not belong to the organisation) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Add Field to Asset Type
PUT /api/assettype/{id}/asset-fields/{fieldId}
Adds an asset field to an asset type. Requires the MANAGE_FLEETS permission for the organisation. Both the asset type and asset field must belong to the same organisation.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset type or asset field does not exist) |
| 403 | Forbidden (asset field does not belong to the same organisation) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Remove Field from Asset Type
DELETE /api/assettype/{id}/asset-fields/{fieldId}
Removes an asset field from an asset type. Requires the MANAGE_FLEETS permission for the organisation. Both the asset type and asset field must belong to the same organisation.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset type or asset field does not exist) |
| 403 | Forbidden (asset field does not belong to the same organisation) |
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (field is not associated with the asset type) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Add Zone to Asset Type
PUT /api/assettype/{id}/asset-zones/{zoneId}
Adds an asset zone to an asset type. Requires the MANAGE_FLEETS permission for the organisation. Both the asset type and asset zone must belong to the same organisation.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset type or asset zone does not exist) |
| 403 | Forbidden (asset zone does not belong to the same organisation) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Remove Zone from Asset Type
DELETE /api/assettype/{id}/asset-zones/{zoneId}
Removes an asset zone from an asset type. Requires the MANAGE_FLEETS permission for the organisation. Both the asset type and asset zone must belong to the same organisation.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset type or asset zone does not exist) |
| 403 | Forbidden (asset zone does not belong to the same organisation) |
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (zone is not associated with the asset type) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Asset Zone Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset zone's id |
| organisation_id | snowflake | the id of the organisation the asset zone belongs to |
| name | string | the asset zone's name (2-20 characters) |
| code | string | the asset zone's code |
| description | string | the asset zone's description |
Get Asset Zone
GET /api/assetzones/{id}
Returns the asset zone object for the given asset zone id. Requires membership in the organisation that owns the asset zone.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset zone does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Update Asset Zone
PATCH /api/assetzones/{id}
Updates an asset zone. Requires the MANAGE_FLEETS permission for the organisation.
Only the fields provided will be updated.
JSON Params
| Field | Type | Description |
|---|---|---|
| name | ?string | the asset zone's name (2-20 characters) |
| code | ?string | the asset zone's code |
| description | ?string | the asset zone's description |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset zone does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Create Asset Zone
POST /organisations/{organisation.id}/asset-zones
Creates a new asset zone in the organisation. Requires the MANAGE_FLEETS permission.
JSON Params
| Field | Type | Description | Default |
|---|---|---|---|
| name | ?string | the asset zone's name (2-20 characters) | new asset zone |
| code | ?string | the asset zone's code | |
| description | ?string | the asset zone's description |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
List Asset Zones
GET /organisations/{organisation.id}/asset-zones
Returns an array of asset zone objects for the organisation. Requires membership in the organisation.
Parameters
| Field | Type | Description | Default |
|---|---|---|---|
| type | ?snowflake | filter asset zones by asset type id | |
| name | ?string | filter asset zones by partial name match (for autocomplete) |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Asset Group Ephemerality
| Name | Value | Description |
|---|---|---|
| single | 0 | this is a single asset |
| temporary | 1 | this is a temporary group of assets |
| permanent | 2 | this is a permanent group of assets |
Asset Field Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset field's id |
| organisation_id | snowflake | the id of the organisation the asset field belongs to |
| name | string | the asset field's name (2-20 characters) |
| description | string | the asset field's description |
| type | integer | the field's value type |
| units | ?string | the field's units of measurement |
Asset Field Value Object
| Field | Type | Description |
|---|---|---|
| value | any | the field's value |
| units | ?string | the field's units of measurement |
Get Asset
GET /api/assets/{id}
Returns the asset object for the given asset id. Requires membership in the organisation that owns the asset, or an accepted fleet share from that organisation.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset does not exist) |
| 403 | Forbidden (user is not a member and has no accepted fleet share) |
Update Asset
PATCH /api/assets/{id}
Updates an asset's properties. Requires the MANAGE_FLEETS permission for the organisation.
Only the fields provided will be updated.
JSON Params
| Field | Type | Description |
|---|---|---|
| name | ?string | the asset's name (2-20 characters) |
| description | ?string | the asset's description |
| fleet_id | ?snowflake | the id of the fleet to assign |
| location_id | ?snowflake | the id of the location to assign |
| sub_location_id | ?snowflake | the id of the sub location to assign |
| status_id | ?snowflake | the id of the asset status to assign |
| type_id | ?snowflake | the id of the asset type to assign |
| active | ?boolean | whether the asset is active |
| group_id | ?snowflake | the id of the asset group to assign |
| subscription_id | ?snowflake | the id of the subscription to allocate the asset to |
| fields | object<snowflake, asset field value> | custom field values keyed by field id |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (asset or organisation not found) |
| 400 | Bad request (field does not exist or does not belong to the organisation) |
| 400 | Bad request (asset group does not belong to the specified fleet) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
| 429 | Failed to allocate or deallocate asset to a subscription |
Update Asset Fields
PATCH /api/assets/{id}/fields
Updates specific custom fields on an asset. Requires the MANAGE_FLEETS permission for the organisation.
Only the fields provided in the request body will be updated. Built-in fields (e.g.
Name,FleetId,LocationId) can also be updated via this endpoint.
JSON Params
| Field | Type | Description |
|---|---|---|
| {field_name} | asset field value | the field name as key and field value as value; repeat for each field to update |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (asset or organisation not found) |
| 400 | Bad request (asset group does not belong to the specified fleet) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Create Asset
POST /organisations/{organisation.id}/assets
Creates a new asset in the organisation. Requires the MANAGE_FLEETS permission. The asset is created with an automatically assigned number based on the asset type's prefix, or a custom prefix if provided.
JSON Params
| Field | Type | Description | Default |
|---|---|---|---|
| type_id | snowflake | the id of the asset type | |
| name | ?string | the asset's name (2-20 characters) | new asset |
| description | ?string | the asset's description | |
| fleet_id | ?snowflake | the id of the fleet to assign | |
| location_id | ?snowflake | the id of the location to assign | |
| status_id | ?snowflake | the id of the asset status to assign | |
| group_id | ?snowflake | the id of the asset group to add the asset to | |
| prefix_id | ?snowflake | the id of the prefix to use for numbering | |
| number | ?integer | the number to assign (overrides automatic numbering) | |
| subscription_id | ?snowflake | the id of the subscription to allocate the asset to | |
| active | ?boolean | whether the asset is active | |
| fields | object<snowflake, asset field value> | custom field values keyed by field id, must match fields defined on the asset type |
Notes
- If
prefix_idis provided, it must match the asset type's prefix. - If
group_idis provided, the asset group must belong to the same organisation and fleet (iffleet_idis specified). - All fields provided in the
fieldsobject must correspond to fields defined on the asset type. - The asset number is automatically assigned if not explicitly provided.
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (asset type not provided) |
| 400 | Bad request (bad status) |
| 400 | Bad request (bad location) |
| 400 | Bad request (field does not exist or does not belong to the organisation) |
| 400 | Bad request (asset group does not belong to the specified fleet) |
| 400 | Bad request (prefix does not match asset type) |
| 400 | Bad request (bad prefix provided) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
| 429 | Failed to allocate asset to a subscription |
List Assets
GET /organisations/{organisation.id}/assets
Returns an array of asset objects for the organisation. Requires membership in the organisation, or an accepted fleet share from the organisation. Assets belonging to fleets shared with the organisation are also included.
All filters for this method are optional.
Filters
| Field | Type | Description | Default |
|---|---|---|---|
| type | snowflake | filter assets by the asset type | |
| fleet | snowflake | filter assets by fleet | |
| status | snowflake | filter assets by the asset status | |
| location | snowflake | filter assets by the location | |
| asset_group | snowflake | filter assets belonging to the asset group | |
| name | string | filter assets by name prefix |
Notes
- The response is limited to 50 assets by default. Use OData pagination parameters (
$skip,$top) to control the result set size. - The
namefilter performs a prefix match on the normalised asset name.
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member and has no accepted fleet share) |
List Asset Groups
GET /organisations/{organisation.id}/asset-groups
Returns an array of asset group objects for the organisation. Requires membership in the organisation. Asset groups belonging to fleets shared with the organisation are also included.
All filters for this method are optional.
Filters
| Field | Type | Description |
|---|---|---|
| ephemerality | asset group ephemerality | filter asset groups by ephemerality type |
| fleet | snowflake | filter asset groups by fleet |
| type | snowflake | filter asset groups by asset type id |
| status | snowflake | filter asset groups by asset status id |
| location | snowflake | filter asset groups by location |
| active | boolean | filter asset groups by active status |
| name | string | filter asset groups by name prefix |
Notes
- The response is limited to 50 asset groups by default. Use OData pagination parameters (
$skip,$top) to control the result set size. - The
namefilter performs a prefix match on the normalised asset group name. - This endpoint also supports OData filter syntax via the
$filterparameter for more complex queries. - Each asset group includes
open_work_item_countandclosed_work_item_countfields.
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Get Asset Group
GET /api/assetgroups/{id}
Returns the asset group object for the given asset group id. Requires membership in the organisation that owns the asset group, or an accepted fleet share from that organisation.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset group does not exist) |
| 403 | Forbidden (user is not a member and has no accepted fleet share) |
Update Asset Group
PATCH /api/assetgroups/{id}
Updates an asset group's properties. Requires the MANAGE_FLEETS permission for the organisation. Single-type asset groups cannot be updated through this endpoint; use Update Asset instead.
Only the fields provided will be updated.
JSON Params
| Field | Type | Description |
|---|---|---|
| name | ?string | the asset group's name (2-20 characters) |
| description | ?string | the asset group's description |
| fleet_id | ?snowflake | the id of the fleet to assign |
| location_id | ?snowflake | the id of the location to assign |
| sub_location_id | ?snowflake | the id of the sub location to assign |
| status_id | ?snowflake | the id of the asset status to assign |
| type_id | ?snowflake | the id of the asset type to assign |
| active | ?boolean | whether the asset group is active |
| fields | object<snowflake, asset field value> | custom field values keyed by field id |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset group does not exist) |
| 400 | Bad request (asset group is a single-type group) |
| 400 | Bad request (field does not exist or does not belong to the organisation) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Update Asset Group Fields
PATCH /api/assetgroups/{id}/fields
Updates specific fields on an asset group. Requires the MANAGE_FLEETS permission for the organisation. Single-type asset groups cannot be updated through this endpoint; use Update Asset Fields instead.
Only the fields provided in the request body will be updated. Built-in fields (e.g.
Name,FleetId,LocationId) can also be updated via this endpoint.
JSON Params
| Field | Type | Description |
|---|---|---|
| {field_name} | asset field value | the field name as key and field value as value; repeat for each field to update |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset group does not exist) |
| 400 | Bad request (asset group is a single-type group) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Add Asset to Asset Group
PUT /api/assetgroups/{id}/assets/{assetId}
Adds an asset to a temporary asset group. Requires membership in the organisation that owns the asset group. The asset must belong to the same fleet as the asset group (if a fleet is assigned).
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset group or asset does not exist) |
| 400 | Bad request (asset group is not a temporary group) |
| 400 | Bad request (asset does not belong to the same fleet) |
| 403 | Forbidden (user is not a member of the organisation) |
Reorder Asset in Asset Group
PATCH /api/assetgroups/{id}/assets/{assetId}
Reorders an asset within an asset group. Requires membership in the organisation that owns the asset group. Single-type asset groups cannot be reordered.
Parameters
| Field | Type | Description |
|---|---|---|
| order | integer | the new order position for the asset (0 to asset count - 1) |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset group or asset does not exist) |
| 400 | Bad request (asset group is a single-type group) |
| 400 | Bad request (asset is not in the asset group) |
| 400 | Bad request (order is out of range) |
| 403 | Forbidden (user is not a member of the organisation) |
Remove Asset from Asset Group
DELETE /api/assetgroups/{id}/assets/{assetId}
Removes an asset from a temporary asset group. Requires membership in the organisation that owns the asset group.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset group or asset does not exist) |
| 400 | Bad request (asset group is not a temporary group) |
| 400 | Bad request (asset is not in the asset group) |
| 403 | Forbidden (user is not a member of the organisation) |
Asset Log Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset log's id |
| organisation_id | snowflake | the id of the organisation the asset log belongs to |
| asset_group_id | snowflake | the id of the asset group the log belongs to |
| type | asset log type | the type of the log |
| log | string | the log text |
| log_hash | string | SHA-256 hash of the log text |
| embed | ?string | optional embedded content |
| duration | ?integer | optional duration in seconds |
| latitude | ?double | optional latitude coordinate (must be provided with longitude) |
| longitude | ?double | optional longitude coordinate (must be provided with latitude) |
| logged_at | ISO8601 timestamp | when the log entry was recorded |
| attachment | ?asset log attachment | optional attachment associated with the log |
| created_by | user object | the user who created the log |
| updated_by | user object | the user who last updated the log |
| created_at | ISO8601 timestamp | when the log was created |
| updated_at | ISO8601 timestamp | when the log was last updated |
Asset Log Type
| Value | Description |
|---|---|
| comment | a comment or note on the asset group |
Asset Log Attachment Object
| Field | Type | Description |
|---|---|---|
| id | snowflake | the attachment's id |
| organisation_id | snowflake | the id of the organisation the attachment belongs to |
| asset_log_id | snowflake | the id of the asset log the attachment belongs to |
| file_name | string | the original file name |
| file_hash | string | hash of the file content |
| content_type | string | the MIME type of the file |
| length | integer | the file size in bytes |
| width | ?integer | the image width in pixels (if applicable) |
| height | ?integer | the image height in pixels (if applicable) |
| created_at | ISO8601 timestamp | when the attachment was created |
| created_by | user object | the user who created the attachment |
Create Asset Log
POST /api/assetgroups/{id}/logs
Creates a new asset log entry for the asset group. Requires membership in the organisation that owns the asset group. Supports both application/json and multipart/form-data content types. A nonce should be provided to prevent duplicate submissions.
JSON Params
| Field | Type | Description |
|---|---|---|
| log | string | the log text |
| nonce | ?snowflake | optional nonce to prevent duplicate submissions |
| embed | ?string | optional embedded content |
| duration | ?integer | optional duration in seconds |
| latitude | ?double | optional latitude coordinate (must be provided with longitude) |
| longitude | ?double | optional longitude coordinate (must be provided with latitude) |
| logged_at | ?ISO8601 timestamp | optional timestamp for when the log entry was recorded |
| attachment | ?file | optional file attachment (only in multipart/form-data) |
Notes
- If
logged_atis not provided, the current server time is used. - If
latitudeandlongitudeare provided, both must be present. - The
attachmentfield is only available when usingmultipart/form-datacontent type. - A replay of a request with the same
noncefrom the same user returns 304 Not Modified.
Error Responses
| Status Code | Description |
|---|---|
| 304 | Not modified (replay of a previous request with the same nonce) |
| 404 | Not found (asset group does not exist) |
| 400 | Bad request (latitude and longitude must be provided together) |
| 403 | Forbidden (user is not a member of the organisation) |
List Asset Logs
GET /api/assetgroups/{id}/logs
Returns an array of asset log objects for the asset group. Requires membership in the organisation that owns the asset group.
All filters for this method are optional.
Filters
| Field | Type | Description |
|---|---|---|
| logged_at | snowflake | filter logs by logged at timestamp |
| type | asset log type | filter logs by type |
Notes
- The response is limited to 50 logs by default. Use OData pagination parameters (
$skip,$top) to control the result set size. - Logs are returned in descending order by creation time.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset group does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Get Asset Log
GET /api/assetlogs/{id}
Returns the asset log object for the given asset log id. Requires membership in the organisation that owns the asset log.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset log or asset group does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Get Asset Log Attachment
GET /api/assetlogs/{id}/attachments/{fileHash}
Returns the file attachment for the given asset log id and file hash. Returns the file stream with the appropriate MIME type. For image attachments (image/jpeg or image/png), an optional size query parameter can be provided to resize the image.
Parameters
| Field | Type | Description |
|---|---|---|
| size | ?integer | the desired image size in pixels for resizing (images only) |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset log or attachment does not exist) |
Update Asset Log
PATCH /api/assetlogs/{id}
Updates an asset log entry. Only the log creator can update their own log entry. Requires membership in the organisation that owns the asset log.
JSON Params
| Field | Type | Description |
|---|---|---|
| log | ?string | the updated log text |
| duration | ?integer | the updated duration in seconds |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset log or asset group does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not the log creator or not a member of the organisation) |
Delete Asset Log
DELETE /api/assetlogs/{id}
Deletes an asset log entry. Requires the MANAGE_FLEETS permission for the organisation.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset log or asset group does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Equipment Object
Equipment is a specialized asset with an asset group ephemerality of equipment. Equipment inherits all fields from the asset object.
| Field | Type | Description |
|---|---|---|
| id | snowflake | the equipment's id |
| organisation_id | snowflake | the id of the organisation the equipment belongs to |
| fleet_id | ?snowflake | the id of the fleet the equipment belongs to |
| type | asset type | the equipment's type |
| status | asset status | the equipment's status |
| location | location object | the equipment's location |
| position | integer | the order of the equipment |
| name | string | the equipment's name (2-20 characters) |
| description | string | the equipment's description |
| fields | object<snowflake, asset field value> | custom field values keyed by field id |
Get Equipment
GET /api/equipment/{id}
Returns the equipment object for the given equipment id. Requires membership in the organisation that owns the equipment.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (equipment does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Update Equipment
PATCH /api/equipment/{id}
Updates an equipment's properties. Requires the MANAGE_EQUIPMENT permission for the organisation.
Only the fields provided will be updated.
JSON Params
| Field | Type | Description |
|---|---|---|
| name | ?string | the equipment's name (2-20 characters) |
| description | ?string | the equipment's description |
| fleet_id | ?snowflake | the id of the fleet to assign |
| location_id | ?snowflake | the id of the location to assign |
| status_id | ?snowflake | the id of the asset status to assign |
| type_id | ?snowflake | the id of the asset type to assign |
| active | ?boolean | whether the equipment is active |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (equipment does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_EQUIPMENT permission) |
Update Equipment Fields
PATCH /api/equipment/{id}/fields
Updates specific custom fields on equipment. Requires the MANAGE_EQUIPMENT permission for the organisation.
Only the fields provided in the request body will be updated.
JSON Params
| Field | Type | Description |
|---|---|---|
| {field_id} | asset field value | the field id as key and field value as value; repeat for each field to update |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (equipment does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_EQUIPMENT permission) |
Create Equipment
POST /organisations/{organisation.id}/equipment
Creates a new equipment in the organisation. Requires the MANAGE_EQUIPMENT permission. The equipment is created with an automatically assigned number based on the asset type's prefix, or a custom prefix if provided.
JSON Params
| Field | Type | Description | Default |
|---|---|---|---|
| type_id | snowflake | the id of the asset type (must be an equipment type) | |
| name | ?string | the equipment's name (2-20 characters) | new equipment |
| description | ?string | the equipment's description | |
| status_id | ?snowflake | the id of the asset status to assign | |
| location_id | ?snowflake | the id of the location to assign | |
| prefix_id | ?snowflake | the id of the prefix to use for numbering | |
| number | ?integer | the number to assign (overrides automatic numbering) | |
| active | ?boolean | whether the equipment is active | |
| fields | object<snowflake, asset field value> | custom field values keyed by field id, must match fields defined on the asset type |
Notes
- If
prefix_idis provided, it must match the asset type's prefix. - All fields provided in the
fieldsobject must correspond to fields defined on the asset type. - The equipment number is automatically assigned if not explicitly provided.
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (asset type not provided) |
| 400 | Bad request (bad status) |
| 400 | Bad request (bad location) |
| 400 | Bad request (field does not exist or does not belong to the organisation) |
| 400 | Bad request (prefix does not match asset type) |
| 400 | Bad request (bad prefix provided) |
| 403 | Forbidden (user lacks the MANAGE_EQUIPMENT permission) |
List Equipment
GET /organisations/{organisation.id}/equipment
Returns an array of equipment objects for the organisation. Requires membership in the organisation. Equipment belonging to fleets shared with the organisation are also included.
All filters for this method are optional.
Filters
| Field | Type | Description |
|---|---|---|
| type | snowflake | filter equipment by the asset type |
| fleet | snowflake | filter equipment by fleet |
| status | snowflake | filter equipment by the asset status |
| location | snowflake | filter equipment by the location |
| asset_group | snowflake | filter equipment belonging to the asset group |
| name | string | filter equipment by name prefix |
Notes
- The response is limited to 50 equipment items by default. Use OData pagination parameters (
$skip,$top) to control the result set size. - The
namefilter performs a prefix match on the normalised equipment name. - This endpoint also supports OData filter syntax via the
$filterparameter for more complex queries.
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Create Asset Group
POST /organisations/{organisation.id}/asset-groups
Creates a new asset group in the organisation. Requires the MANAGE_FLEETS permission. Asset groups can be permanent (typed) or temporary (consists of multiple assets).
JSON Params
| Field | Type | Description | Default |
|---|---|---|---|
| ephemerality | asset group ephemerality | the type of asset group (must be permanent or temporary) | |
| type_id | ?snowflake | the id of the asset type (required for permanent groups) | |
| name | ?string | the asset group's name (2-20 characters) | new asset group |
| description | ?string | the asset group's description | |
| fleet_id | ?snowflake | the id of the fleet to assign | |
| status_id | ?snowflake | the id of the asset status to assign | |
| location_id | ?snowflake | the id of the location to assign | |
| prefix_id | ?snowflake | the id of the prefix to use for numbering | |
| number | ?integer | the number to assign (overrides automatic numbering) | |
| active | ?boolean | whether the asset group is active | |
| fields | object<snowflake, asset field value> | custom field values keyed by field id | |
| consist_asset_group_ids | ?array<snowflake> | asset group ids to combine into a temporary consist (required for temporary groups) |
Notes
- The
ephemeralityfield must bepermanent(2) ortemporary(1). Valuessingle(0) andequipmentare not valid for asset groups. - For permanent asset groups,
type_idis required and must belong to the organisation. - For temporary asset groups,
consist_asset_group_idsis required and must contain at least one asset group id. - If
prefix_idis provided, it must match the asset type's prefix (iftype_idis specified). - All fields provided in the
fieldsobject must correspond to fields defined on the organisation. - The asset group number is automatically assigned if not explicitly provided.
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (ephemerality must be permanent or temporary) |
| 400 | Bad request (asset type not provided) |
| 400 | Bad request (bad fleet) |
| 400 | Bad request (bad status) |
| 400 | Bad request (bad location) |
| 400 | Bad request (field does not exist for asset group type) |
| 400 | Bad request (prefix does not match asset type) |
| 400 | Bad request (bad prefix provided) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Create Asset Field
POST /organisations/{organisation.id}/asset-fields
Creates a new asset field in the organisation. Requires the MANAGE_FLEETS permission. Field names must be unique within the organisation, cannot be a reserved name, cannot start with the $ prefix, and must not be a number.
JSON Params
| Field | Type | Description | Default |
|---|---|---|---|
| name | ?string | the asset field's name (must be unique, not reserved, not starting with $, not a number) | new asset field |
| description | ?string | the asset field's description | |
| type | integer | the field's value type | |
| required | boolean | whether the field is required | |
| is_result | boolean | whether the field represents a result value | |
| units | ?string | the field's units of measurement | |
| multi_line | boolean | whether the field accepts multi-line text input | |
| max_length | integer? | maximum character length for text fields | |
| default_value | any? | the field's default value | |
| values | array<asset field enum value> | enum values to create for the field (required if field type is enum) |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (field names must be unique) |
| 400 | Bad request (field names cannot be a reserved name or start with $ and must not be a number) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
List Asset Fields
GET /organisations/{organisation.id}/asset-fields
Returns an array of asset field objects for the organisation. Requires membership in the organisation.
All filters for this method are optional.
Filters
| Field | Type | Description | Default |
|---|---|---|---|
| type | snowflake | filter asset fields by asset type id | |
| name | string | filter asset fields by name prefix (for autocomplete) |
Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Asset Field Object
Asset fields define custom properties that can be assigned to assets. They support various data types and may include enum values for restricted selections.
| Field | Type | Description |
|---|---|---|
| id | snowflake | the asset field's id |
| organisation_id | snowflake | the id of the organisation the asset field belongs to |
| name | string | the asset field's name (cannot be a reserved name or start with $, and must not be a number) |
| description | string | the asset field's description |
| type | integer | the field's value type |
| required | boolean | whether the field is required |
| is_result | boolean | whether the field represents a result value |
| units | ?string | the field's units of measurement |
| multi_line | boolean | whether the field accepts multi-line text input |
| max_length | integer? | maximum character length for text fields |
| default_value | any? | the field's default value |
Asset Field Enum Value Object
Enum values define the allowed values for asset fields with an enum type.
| Field | Type | Description |
|---|---|---|
| id | snowflake | the enum value's id |
| asset_field_id | snowflake | the id of the asset field this value belongs to |
| value | string | the enum value's text |
| updated_by | user object | the user who last updated this enum value |
| updated_at | ISO8601 timestamp | when the enum value was last updated |
Get Asset Field
GET /api/assetfield/{id}
Returns the asset field object for the given asset field id, including its enum values. Requires membership in the organisation that owns the asset field.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset field does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Get Asset Field Enum Value
GET /api/assetfield/{id}/values/{valueId}
Returns the asset field enum value for the given asset field id and enum value id. Requires membership in the organisation that owns the asset field.
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset field does not exist) |
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (enum value does not exist) |
| 403 | Forbidden (user is not a member of the organisation) |
Update Asset Field
PATCH /api/assetfield/{id}
Updates an asset field and its enum values. Requires the MANAGE_FLEETS permission for the organisation. Field names must be unique within the organisation.
JSON Params
| Field | Type | Description |
|---|---|---|
| name | string | the asset field's name (must be unique, not reserved, not starting with $, not a number) |
| description | ?string | the asset field's description |
| type | integer | the field's value type |
| required | boolean | whether the field is required |
| is_result | boolean | whether the field represents a result value |
| units | ?string | the field's units of measurement |
| multi_line | boolean | whether the field accepts multi-line text input |
| max_length | integer? | maximum character length for text fields |
| default_value | any? | the field's default value |
| values | array<asset field enum value> | enum values to create, update, or remove (set removed to true to delete) |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset field does not exist) |
| 400 | Bad request (organisation does not exist) |
| 400 | Bad request (field names must be unique) |
| 400 | Bad request (field names cannot be a reserved name or start with $ and must not be a number) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |
Add Asset Field Enum Value
POST /api/assetfield/{id}/values
Creates a new asset field enum value for the given asset field. Requires the MANAGE_FLEETS permission for the organisation.
JSON Params
| Field | Type | Description |
|---|---|---|
| value | string | the enum value's text |
Error Responses
| Status Code | Description |
|---|---|
| 404 | Not found (asset field does not exist) |
| 400 | Bad request (organisation does not exist) |
| 403 | Forbidden (user lacks the MANAGE_FLEETS permission) |