diff --git a/CHANGELOG.md b/CHANGELOG.md index a861fd6..efaa127 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,16 +1,49 @@ # Changelog Hiber API -### 0.147 (2023-04-10) +### 0.151 (2023-05-22) +##### DeviceService + +- Added `Device.type` to indicate the device type. + +##### DeviceTypeService + +- Added the `DeviceTypeService` to list available device types. + +##### FieldService + +- Added modem `name` and `identifier` to `ListFieldsForModem.Response.ModemWithFields`. + +##### ModemService + +- Added `Modem.ConnectedDeviceInfo.device_type` to indicate the device type. +- Added blocking logic for gateways (i.e. when license expires) + +##### TokenService + +- Added uniqueness check on token name (for active tokens) within organization. + +### 0.148 (2023-04-17) + +##### EventService + +- Fix a bug where events from transferred modems would be fetched, resulting in errors. +##### ModemTransferService -### 0.146 (2023-04-03) +- Removed the deprecated `ModemTransferService` and related fields +##### ModemTransferReturnService +- Removed the deprecated `ModemTransferReturnService`. -### 0.145 (2023-03-27) +##### EventService +- Removed `deprecated_transfer` from `TransferEvent`. +##### EventService + +- Added `ModemHealth` call, which returns all events that affect modem health in the organization (without time limit). ### 0.144 (2023-03-20) @@ -63,7 +96,7 @@ ##### EventService -- Changed the title and description for `ModemEvent.MessageEvent.ModemMessageCannotBeParsedEvent` +- Changed the title and description for `ModemEvent.MessageEvent.ModemMessageCannotBeParsedEvent` to reflect that this is a configuration issue that hiber support should solve. ### 0.139 (2023-02-06) @@ -153,10 +186,6 @@ - Removed the Easypulse-related organization features. -### 0.134 (2022-12-19) - - - ### 0.133 (2022-12-12) ##### ValueService @@ -165,14 +194,6 @@ - Renamed `duration` to `value_durations`. - Fixed the documentation inside the `oneof value_type`. -### 0.132 (2022-12-05) - - - -### 0.131 (2022-11-28) - - - ### 0.130 (2022-11-21) ##### EventService @@ -349,10 +370,6 @@ Created a new simulation service that allows to directly simulate values. - Use `List` to list absolute values for a given period of time. - Use `Aggregated` to aggregate values over a given period of time, optionally partitioned (i.e. average per day). -### 0.118 (2022-08-22) - -### 0.117 (2022-08-15) - ### 0.116 (2022-08-01) ##### FieldService @@ -449,8 +466,6 @@ Created a new simulation service that allows to directly simulate values. - Added `Value.Enum` with the enum `value`, `display_name` and optional `description`, `color` and `priority`. -### 0.113 (2022-07-04) - ### 0.112 (2022-06-27) - Added new fields for EasyPulse Assets @@ -466,8 +481,6 @@ Created a new simulation service that allows to directly simulate values. - Improved the title and description for alarm events with multiple error messages. -### 0.111 (2022-06-20) - ### 0.110 (2022-06-13) - Added support for textual shortcuts in `Timestamp.textual`: diff --git a/README.md b/README.md index 0536f91..d80a910 100644 --- a/README.md +++ b/README.md @@ -215,7 +215,7 @@ For Hiber customer development, we have set up endpoints under [acc.env.hiber.cl - [acc.env.hiber.cloud](https://acc.env.hiber.cloud): The Hiber web application - [api.acc.env.hiber.cloud](https://api.acc.env.hiber.cloud) (or [grpc.acc.env.hiber.cloud](https://grpc.acc.env.hiber.cloud)): -The GRPC API, accessible over https on port 443 or 1443. +The GRPC API, accessible over https on port 443. (Note that opening this url in your browser will not work, since it requires HTTP2.) Notes: @@ -238,7 +238,7 @@ For actual modems and modem messages, use [hiber.cloud](https://hiber.cloud): - [hiber.cloud](https://hiber.cloud): The Hiber web application - [api.hiber.cloud](https://api.hiber.cloud) (or [grpc.hiber.cloud](https://grpc.hiber.cloud)): -The GRPC API, accessible over https on port 443 or 1443. +The GRPC API, accessible over https on port 443. (Note that opening this url in your browser will not work, since it requires HTTP2.) ## Examples diff --git a/buf.md b/buf.md index 0536f91..d80a910 100644 --- a/buf.md +++ b/buf.md @@ -215,7 +215,7 @@ For Hiber customer development, we have set up endpoints under [acc.env.hiber.cl - [acc.env.hiber.cloud](https://acc.env.hiber.cloud): The Hiber web application - [api.acc.env.hiber.cloud](https://api.acc.env.hiber.cloud) (or [grpc.acc.env.hiber.cloud](https://grpc.acc.env.hiber.cloud)): -The GRPC API, accessible over https on port 443 or 1443. +The GRPC API, accessible over https on port 443. (Note that opening this url in your browser will not work, since it requires HTTP2.) Notes: @@ -238,7 +238,7 @@ For actual modems and modem messages, use [hiber.cloud](https://hiber.cloud): - [hiber.cloud](https://hiber.cloud): The Hiber web application - [api.hiber.cloud](https://api.hiber.cloud) (or [grpc.hiber.cloud](https://grpc.hiber.cloud)): -The GRPC API, accessible over https on port 443 or 1443. +The GRPC API, accessible over https on port 443. (Note that opening this url in your browser will not work, since it requires HTTP2.) ## Examples diff --git a/device.proto b/device.proto index 71c4532..ee1b6a7 100644 --- a/device.proto +++ b/device.proto @@ -65,6 +65,9 @@ message Device { /* The expected transmission rate for this device. */ optional hiber.value.Value.Numeric.Rate expected_transmission_rate = 16; + /* The DeviceType for this device. See DeviceType for more information. */ + string type = 17; + /* Collection of data about the devices it is connected to. */ message Links { /* Other identifiers for this devices. Could include data like its MAC-address or otherwise unique identifier. */ diff --git a/device_type.proto b/device_type.proto new file mode 100644 index 0000000..db9ad12 --- /dev/null +++ b/device_type.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package hiber.device.type; + +option java_multiple_files = true; +option java_package = "global.hiber.api.grpc.device.type"; +option go_package = "hiber"; + +/* Preconfigured device type. */ +message DeviceType { + string identifier = 1; + string brand = 2; + string application = 3; + string category = 4; + string version = 5; + string description = 6; +} + +/* Selection object for device types. */ +message DeviceTypeSelection { + string search = 1; +} diff --git a/device_type_service.proto b/device_type_service.proto new file mode 100644 index 0000000..57c3d0d --- /dev/null +++ b/device_type_service.proto @@ -0,0 +1,47 @@ +/* Device Types. + * + */ +syntax = "proto3"; + +package hiber.device.type; + +import "base.proto"; +import "device_type.proto"; + +option java_multiple_files = false; +option java_package = "global.hiber.api.grpc.device.type"; +option java_outer_classname = "DeviceTypeApi"; +option go_package = "hiber"; + +service DeviceTypeService { + rpc List (ListDeviceTypes.Request) returns (ListDeviceTypes.Response); +} + +message ListDeviceTypes { + enum Sort { + IDENTIFIER_ASC = 0; + IDENTIFIER_DESC = 1; + + BRAND_ASC = 2; + BRAND_DESC = 3; + } + + message Request { + /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ + string organization = 1; + + /* Select which device types to return. */ + DeviceTypeSelection selection = 2; + + /* Paginate through results. */ + Pagination pagination = 3; + + /* Sort the devices with the given sort options. */ + repeated Sort sort_by = 4; + } + message Response { + repeated DeviceType device_types = 1; + Request request = 2; + Pagination.Result pagination = 3; + } +} diff --git a/docs/html/assignment.html b/docs/html/assignment.html index b71399c..e364e95 100644 --- a/docs/html/assignment.html +++ b/docs/html/assignment.html @@ -5669,6 +5669,13 @@
External device ids for this modem.
Device type for this modem.
The modem number for this event, if it is related to a single modem.
The tags for this event, if any.
Deprecated. Deprecated, here to be backwards compatible with ModemTransferEvents.
Name | -Option | -
deprecated_transfer | -true |
-
Get the list of events that affect modem health, chronologically (by default, from now backwards in time).
Only returns the Event with first-level fields set, event details are not included in the response
(the oneof is not set).
+ + + + + +Field | Type | Label | Description |
organization | +string | ++ | Pick the organization to use (/impersonate). If unset, your default organization is used. |
+
selection | +EventSelection | ++ |
|
+
pagination | +hiber.Pagination | ++ |
|
+
Field | Type | Label | Description |
request | +ModemHealthEvents.Request | ++ |
|
+
events | +Event | +repeated | +
|
+
pagination | +hiber.Pagination.Result | ++ |
|
+
Resolve a resolvable event using its resolve_identifier.
@@ -5479,6 +5553,20 @@External device ids for this modem.
Device type for this modem.
The expected transmission rate for this device.
The DeviceType for this device. See DeviceType for more information.
External device ids for this modem.
Device type for this modem.
The expected transmission rate for this device.
The DeviceType for this device. See DeviceType for more information.
External device ids for this modem.
Device type for this modem.
Preconfigured device type.
+ + +Field | Type | Label | Description |
identifier | +string | ++ |
|
+
brand | +string | ++ |
|
+
application | +string | ++ |
|
+
category | +string | ++ |
|
+
version | +string | ++ |
|
+
description | +string | ++ |
|
+
Selection object for device types.
+ + +Field | Type | Label | Description |
search | +string | ++ |
|
+
.proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
double | ++ | double | +double | +float | +float64 | +double | +float | +Float | +
float | ++ | float | +float | +float | +float32 | +float | +float | +Float | +
int32 | +Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | +int32 | +int | +int | +int32 | +int | +integer | +Bignum or Fixnum (as required) | +
int64 | +Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | +int64 | +long | +int/long | +int64 | +long | +integer/string | +Bignum | +
uint32 | +Uses variable-length encoding. | +uint32 | +int | +int/long | +uint32 | +uint | +integer | +Bignum or Fixnum (as required) | +
uint64 | +Uses variable-length encoding. | +uint64 | +long | +int/long | +uint64 | +ulong | +integer/string | +Bignum or Fixnum (as required) | +
sint32 | +Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | +int32 | +int | +int | +int32 | +int | +integer | +Bignum or Fixnum (as required) | +
sint64 | +Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | +int64 | +long | +int/long | +int64 | +long | +integer/string | +Bignum | +
fixed32 | +Always four bytes. More efficient than uint32 if values are often greater than 2^28. | +uint32 | +int | +int | +uint32 | +uint | +integer | +Bignum or Fixnum (as required) | +
fixed64 | +Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | +uint64 | +long | +int/long | +uint64 | +ulong | +integer/string | +Bignum | +
sfixed32 | +Always four bytes. | +int32 | +int | +int | +int32 | +int | +integer | +Bignum or Fixnum (as required) | +
sfixed64 | +Always eight bytes. | +int64 | +long | +int/long | +int64 | +long | +integer/string | +Bignum | +
bool | ++ | bool | +boolean | +boolean | +bool | +bool | +boolean | +TrueClass/FalseClass | +
string | +A string must always contain UTF-8 encoded or 7-bit ASCII text. | +string | +String | +str/unicode | +string | +string | +string | +String (UTF-8) | +
bytes | +May contain any arbitrary sequence of bytes. | +string | +ByteString | +str | +[]byte | +ByteString | +string | +String (ASCII-8BIT) | +
Device Types.
+ + +Field | Type | Label | Description |
organization | +string | ++ | Pick the organization to use (/impersonate). If unset, your default organization is used. |
+
selection | +DeviceTypeSelection | ++ | Select which device types to return. |
+
pagination | +hiber.Pagination | ++ | Paginate through results. |
+
sort_by | +ListDeviceTypes.Sort | +repeated | +Sort the devices with the given sort options. |
+
Field | Type | Label | Description |
device_types | +DeviceType | +repeated | +
|
+
request | +ListDeviceTypes.Request | ++ |
|
+
pagination | +hiber.Pagination.Result | ++ |
|
+
Name | Number | Description |
IDENTIFIER_ASC | +0 | ++ |
IDENTIFIER_DESC | +1 | ++ |
BRAND_ASC | +2 | ++ |
BRAND_DESC | +3 | ++ |
Method Name | Request Type | Response Type | Description |
List | +ListDeviceTypes.Request | +ListDeviceTypes.Response | ++ |
Rectangular area between two locations, normalized to bottom-left and top-right points.
Center point is added for convenience; it's simple the point directly between the two corner points.
When sending an Area to the api, the center location is ignored.
+ + +Field | Type | Label | Description |
center | +Location | ++ |
|
+
bottom_left | +Location | ++ |
|
+
top_right | +Location | ++ |
|
+
textual | +string | ++ | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. |
+
An avatar is represented either by a (publicly) fetchable URL that serves an image,
xor a binary payload that knows its name and mime-type.
If it is a url, it must be obtainable without credentials, though this is not validated by the API.
Because the content behind URL's can change or become unavailable over time,
the client should make sure it properly caches the data fetched from the URL.
("Properly" means [among other things] respecting the response headers for this resource)
+ + +Field | Type | Label | Description |
url | +string | ++ | A URL that contains the location of avatar. |
+
image | +NamedFile | ++ | The data of the avatar as a Named File. |
+
Some clients may prefer direct binary data, while other prefer a hexadecimal string,
both for input and output. To support both methods, this object is used to represent binary data.
When you receive this from the api, both fields are set. When sending it to the api, only one field is required.
+ + +Field | Type | Label | Description |
bytes | +bytes | ++ |
|
+
hex | +string | ++ |
|
+
Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +BytesOrHex | ++ |
|
+
Date type for convenience.
Some clients are better at parsing year, month and day of month as separate fields,
while others prefer a text-based format.
To accommodate this, this Date type supports both.
When used as API output, both the int fields and textual fields will be set.
The textual field has the commonly used ISO 8601 local date format (i.e. "2018-01-01").
When used an API input, either specify the int fields or the textual field.
If both are specified, the textual field will be discarded.
+ + +Field | Type | Label | Description |
year | +uint32 | ++ |
|
+
month | +uint32 | ++ |
|
+
day | +uint32 | ++ |
|
+
textual | +string | ++ |
|
+
Decimal range.
+ + +Field | Type | Label | Description |
start | +double | ++ |
|
+
end | +double | ++ |
|
+
Field | Type | Label | Description |
duration | +google.protobuf.Duration | ++ |
|
+
textual | +string | ++ |
|
+
Filters used in many api calls to filter the data sources, results, etc.
"Include" fields filter out anything not in the include set.
When not set, all items will be returned (except excluded items)
"Exclude" fields filter out anything in the exclude set.
When combined with include, exclude takes precedence when determining whether an item is filtered
+ + + + + +Specify which organizations to get data from. By default, data is only retrieved for the current organization,
but using ChildOrganizations we can specify to include a number of, or all, sub-organizations.
Note: ChildOrganization differs from other filters in that it defaults to not allowing anything, where the
other filters default to allowing everything
+ + +Field | Type | Label | Description |
include_all | +bool | ++ |
|
+
include | +string | +repeated | +
|
+
exclude | +string | +repeated | +
|
+
Update object to update a Filter.ChildOrganizations field.
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +Filter.ChildOrganizations | ++ |
|
+
Field | Type | Label | Description |
include | +EventType | +repeated | +
|
+
exclude | +EventType | +repeated | +
|
+
Update object to update a Filter.Events field.
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +Filter.Events | ++ |
|
+
Field | Type | Label | Description |
field | +string | ++ |
|
+
include | +string | +repeated | +
|
+
exclude | +string | +repeated | +
|
+
Field | Type | Label | Description |
include | +string | +repeated | +
|
+
exclude | +string | +repeated | +
|
+
Field | Type | Label | Description |
include | +string | +repeated | +
|
+
exclude | +string | +repeated | +
|
+
Field | Type | Label | Description |
include | +string | +repeated | +Include all modems with these modem numbers (HEX) |
+
exclude | +string | +repeated | +Exclude all modems with these modem numbers (HEX). +Exclude takes precedence over include. |
+
Update object to update a Filter.Modems field.
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +Filter.Modems | ++ |
|
+
Field | Type | Label | Description |
include_all | +bool | ++ |
|
+
include | +OrganizationPermission | +repeated | +
|
+
exclude | +OrganizationPermission | +repeated | +
|
+
Field | Type | Label | Description |
include | +string | +repeated | +
|
+
exclude | +string | +repeated | +
|
+
Filter result on specific properties encoded in map-value pairs.
+ + +Field | Type | Label | Description |
properties | +MapFilter | ++ |
|
+
include_only_empty | +bool | ++ | When set to true, match only empty property-sets. |
+
Field | Type | Label | Description |
include | +int64 | +repeated | +
|
+
exclude | +int64 | +repeated | +
|
+
only_active | +bool | ++ |
|
+
Field | Type | Label | Description |
include | +SupportPermission | +repeated | +
|
+
exclude | +SupportPermission | +repeated | +
|
+
Field | Type | Label | Description |
include | +int64 | +repeated | +
|
+
exclude | +int64 | +repeated | +
|
+
Update object to update a Filter.Tags field.
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +Filter.Tags | ++ |
|
+
Field | Type | Label | Description |
include_all | +bool | ++ |
|
+
include | +UserPermission | +repeated | +
|
+
exclude | +UserPermission | +repeated | +
|
+
Field | Type | Label | Description |
include | +string | +repeated | +
|
+
exclude | +string | +repeated | +
|
+
Field | Type | Label | Description |
include | +int64 | +repeated | +
|
+
exclude | +int64 | +repeated | +
|
+
only_active | +bool | ++ |
|
+
Geographic latitude and longitude coordinates specified in decimal degrees.
For more information, see the WGS-84 coordinate system, which is used for most GPS systems.
+ + +Field | Type | Label | Description |
latitude | +double | ++ | Decimal degrees north. |
+
longitude | +double | ++ | Decimal degrees east. |
+
textual | +string | ++ | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. |
+
Selection object for map data. Filter modems on the map by id, (child)organization.
Also, filter the map data by level and area restriction, to only display a small area at a detailed map level,
for example
+ + +Field | Type | Label | Description |
areas | +Area | +repeated | +Rectangular areas, each defined by two locations, normalized to bottom-left and top-right points. |
+
shapes | +Shape | +repeated | +Polygon shapes, each defined by a list of locations, which draw a shape on the map. |
+
Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).
This filter allows selecting a range of values for a specific name.
One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".
To select for multiple versions of a property,
add the name of the property as a map-key and add a repeated list of versions as the map-value.
For example:
- include { 'bluetooth' -> [ ] }
returns all items that have any version of bluetooth,
- include { 'bluetooth' -> [ '4.0', '5.0' ] }
will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),
- include { 'bluetooth' -> [ '' ] }
would only select bluetooth peripherals that don't have any version set,
- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }
will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),
- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }
will return an empty list since exclude will take precedence, and
- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }
returns only items that have bluetooth, but not version 3.0.
+ + +Field | Type | Label | Description |
include_and | +MapFilter.IncludeAndEntry | +repeated | +Filter to only include items with all of the given set of properties. |
+
exclude | +MapFilter.ExcludeEntry | +repeated | +Filter to exclude items with any of the given set of properties. |
+
Field | Type | Label | Description |
key | +string | ++ |
|
+
value | +MapFilter.OneOfValues | ++ |
|
+
Field | Type | Label | Description |
key | +string | ++ |
|
+
value | +MapFilter.OneOfValues | ++ |
|
+
Technical solution to make map
which is not possible in protobuf without trickery.
+ + +Field | Type | Label | Description |
value | +string | +repeated | +
|
+
A NamedFile contains bytes with its mime-type and name.
It can represent any file of any type.
Note that depending on where in the API this is used,
the server might put restrictions on file size, media-type or name length.
The file name should be interpreted as-is.
No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.
It might not even have a file extension.
The file name may contain characters that cannot be a valid file name on certain systems.
Specific API calls may pur restrictions on the name or size of the file.
When showing this as an image in a browser, one can make use of a `data` URI.
The client must convert the bytes to base64 and can then construct a data URI like this
data:
Other type clients should be able to sort-of-directly set the data bytes as the source for an image.
+ + +Field | Type | Label | Description |
data | +BytesOrHex | ++ | The binary payload that represents the file |
+
media_type | +string | ++ | The media-type of the file, as defined by RFC 6838 or its extensions |
+
name | +string | ++ | A semantic name for this file. |
+
Pagination is normalized across the api. Provide a pagination object to get a specific page or offset,
or limit your data.
Calls that have a pagination option automatically return a Pagination.Result, which contains
either the specified pagination options or the defaults, as well as total counts. It also contains Pagination
objects that can be used for the previous and next page.
This effectively means that an api user would never need to create their own pagination object; as long as they
start at the first page and continue to the next, they can use the provided Pagination object.
+ + +Field | Type | Label | Description |
size | +int32 | ++ |
|
+
page | +int32 | ++ |
|
+
Field | Type | Label | Description |
size | +int32 | ++ |
|
+
page | +int32 | ++ |
|
+
total | +int32 | ++ |
|
+
total_pages | +int32 | ++ |
|
+
previous | +Pagination | ++ |
|
+
next | +Pagination | ++ |
|
+
approximated_total | +bool | ++ | Indicates that the total is an approximation, and not an exact value. +This can be set for data that changes often, or is generally only fetched in an infinite scrolling manner. +For example, unbundled events are likely to return an approximated total, but not guaranteed to do so. |
+
Polygon shape defined by a list of locations, which draw a shape on the map.
The last point is connected to the first to close the shape.
For example, the outline of a city would be defined using a Shape,
while a rectangular region is easier to define using Area.
+ + +Field | Type | Label | Description |
path | +Location | +repeated | +
|
+
textual | +string | ++ | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. |
+
Period of time between two timestamps. Typically used for filtering.
This can be used with textual shortcuts for timestamp, and some additional duration textual shortcuts:
- a duration as an offset of now, i.e. "-10h" or "PT-10h": converted to now + offset, so start.textual -10h is
10 hours before the end time (using the ISO 8601 duration format)
Examples:
- start "-10h" end "now": a time range from 10 hours before the request time, to the request time
- start "-10h" end "2022-01-01 20:00": becomes start 2022-01-01 10:00 end 2022-01-01 20:00
+ + +Field | Type | Label | Description |
start | +Timestamp | ++ |
|
+
end | +Timestamp | ++ |
|
+
Timestamp type for convenience.
Some clients are better at parsing Google's seconds/nanos based timestamp, while others prefer a text-based format.
To accommodate this, this Timestamp type supports both.
When used as API output, both the timestamp and textual fields will be set. The textual field has the commonly
used ISO 8601 format (i.e. "2018-01-01T13:00:00Z").
When used an API input, only one of the fields is needed, there is no need to set both. When both are set, the
timestamp field will be used, the textual field will be discarded.
In addition, the textual field, when used as input, allows for a number of shortcuts that get converted into
timestamps:
- "now": converted to the current timestamp at the time of the request
+ + +Field | Type | Label | Description |
timestamp | +google.protobuf.Timestamp | ++ |
|
+
time_zone | +string | ++ |
|
+
textual | +string | ++ |
|
+
Update object for a boolean.
Since false is the default value, we need to distinguish between an omitted value and setting the value to false,
in an update object.
To use this to update, set a value and set updated to true
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +bool | ++ |
|
+
Update object for a string that can be empty.
Since an empty string is also the default value, we need to distinguish between an omitted value and
setting the value to an empty string, in an update object.
To use this to update, set a value and set updated to true
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +string | ++ |
|
+
Update object for an optional Duration.
To use this to update, set a value and set updated to true.
To clear the duration, set updated to true, but set no value.
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +Duration | ++ |
|
+
Update object for an optional id.
To use this to update, set a value and set updated to true. To clear the id, set updated to true, but set no value.
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +int64 | ++ |
|
+
Update object for an int that can be set to 0.
Since 0 is also the default value, we need to distinguish between an omitted value and setting the value to 0,
in an update object.
To use this to update, set a value and set updated to true
+ + +Field | Type | Label | Description |
updated | +bool | ++ |
|
+
value | +uint32 | ++ |
|
+
Enum of api-accessible events.
The event types in this enum have a protobuf implementation, and can be used, for example, in the
api event stream and publishers.
+Name | Number | Description |
DEFAULT | +0 | ++ |
ORGANIZATION_CREATED | +34 | ++ |
ORGANIZATION_UPDATED | +12 | ++ |
ORGANIZATION_DELETED | +35 | ++ |
ORGANIZATION_EVENT_CONFIGURATION_UPDATED | +43 | ++ |
MODEM_CREATED | +55 | ++ |
MODEM_UPDATED | +36 | ++ |
MODEM_LOCATION_UPDATED | +4 | ++ |
MODEM_ACTIVATED | +33 | ++ |
MODEM_MESSAGE_RECEIVED | +5 | ++ |
MODEM_MESSAGE_BODY_PARSED | +39 | ++ |
MODEM_MESSAGE_BODY_RECEIVED | +45 | ++ |
MODEM_MESSAGE_CANNOT_BE_PARSED | +15 | ++ |
MODEM_MESSAGE_SUMMARY | +42 | ++ |
MODEM_MESSAGE_BODY_PARSER_CREATED | +46 | ++ |
MODEM_MESSAGE_BODY_PARSER_UPDATED | +47 | ++ |
MODEM_MESSAGE_BODY_PARSER_DELETED | +48 | ++ |
MODEM_ALARM | +56 | ++ |
MODEM_ALARM_CREATED | +57 | ++ |
MODEM_ALARM_UPDATED | +58 | ++ |
MODEM_ALARM_DELETED | +59 | ++ |
ASSIGNED | +63 | ++ |
UNASSIGNED | +64 | ++ |
TRANSFER | +18 | ++ |
PUBLISHER_CREATED | +1 | ++ |
PUBLISHER_UPDATED | +2 | ++ |
PUBLISHER_DELETED | +3 | ++ |
PUBLISHER_AUTO_DISABLED | +37 | ++ |
PUBLISHER_FAILED | +11 | ++ |
USER_ACCESS_REQUEST | +8 | ++ |
USER_INVITED | +38 | ++ |
USER_ADDED | +9 | ++ |
USER_REMOVED | +10 | ++ |
USER_VALIDATION_UPDATED | +54 | ++ |
TOKEN_CREATED | +31 | ++ |
TOKEN_EXPIRY_WARNING | +25 | ++ |
TOKEN_EXPIRED | +26 | ++ |
TOKEN_DELETED | +32 | ++ |
EXPORT_CREATED | +65 | ++ |
EXPORT_READY | +66 | ++ |
EXPORT_FAILED | +67 | ++ |
Health is an indicator for issues. It is used for publishers to give a quick indication of issues.
+Name | Number | Description |
OK | +0 | ++ |
WARNING | +1 | ++ |
ERROR | +2 | ++ |
Unit of measurement for a numeric value.
+Name | Number | Description |
UNIT_UNKNOWN | +0 | ++ |
DURATION_MILLISECONDS | +40 | ++ |
DURATION_SECONDS | +1 | ++ |
DURATION_MINUTES | +2 | ++ |
DURATION_HOURS | +3 | ++ |
DURATION_DAYS | +4 | ++ |
DURATION_WEEKS | +41 | ++ |
FUEL_EFFICIENCY_LITER_PER_100_KILOMETER | +30 | ++ |
FUEL_EFFICIENCY_KILOMETER_PER_LITER | +31 | ++ |
FUEL_EFFICIENCY_KILOMETER_PER_US_GALLON | +32 | ++ |
FUEL_EFFICIENCY_KILOMETER_PER_IMPERIAL_GALLON | +33 | ++ |
FUEL_EFFICIENCY_MILE_PER_US_GALLON | +34 | ++ |
FUEL_EFFICIENCY_MILE_PER_IMPERIAL_GALLON | +35 | ++ |
FUEL_EFFICIENCY_MILE_PER_LITER | +36 | ++ |
DISTANCE_METER | +8 | ++ |
DISTANCE_MILLIMETER | +9 | ++ |
DISTANCE_CENTIMETER | +10 | ++ |
DISTANCE_KILOMETER | +11 | ++ |
DISTANCE_NAUTICAL_MILE | +26 | ++ |
DISTANCE_MILE | +21 | ++ |
DISTANCE_YARD | +27 | ++ |
DISTANCE_FOOT | +28 | ++ |
DISTANCE_INCH | +29 | ++ |
PERCENT | +16 | ++ |
PRESSURE_BAR | +12 | ++ |
PRESSURE_PSI | +14 | ++ |
PRESSURE_K_PA | +17 | ++ |
SPEED_KILOMETERS_PER_HOUR | +18 | ++ |
SPEED_KNOTS | +19 | ++ |
SPEED_METERS_PER_SECOND | +20 | ++ |
SPEED_MILES_PER_HOUR | +22 | ++ |
TEMPERATURE_KELVIN | +5 | ++ |
TEMPERATURE_DEGREES_CELSIUS | +6 | ++ |
TEMPERATURE_DEGREES_FAHRENHEIT | +7 | ++ |
VOLTAGE_MILLIVOLT | +15 | ++ |
VOLUME_LITER | +23 | ++ |
VOLUME_GALLON_US | +24 | ++ |
VOLUME_GALLON_IMPERIAL | +25 | ++ |
VOLUME_CUBIC_METER | +42 | ++ |
VOLUME_CUBIC_FOOT | +43 | ++ |
MASS_KILOGRAMS | +37 | ++ |
MASS_POUNDS | +38 | ++ |
FLOW_CUBIC_METERS_PER_HOUR | +39 | ++ |
FLOW_BARRELS_PER_DAY | +46 | ++ |
REVOLUTIONS_PER_MINUTE | +44 | ++ |
ITEMS_PER_24_HOURS | +45 | ++ |
Preconfigured device type.
+ + +Field | Type | Label | Description |
identifier | +string | ++ |
|
+
brand | +string | ++ |
|
+
application | +string | ++ |
|
+
category | +string | ++ |
|
+
version | +string | ++ |
|
+
description | +string | ++ |
|
+
Selection object for device types.
+ + +Field | Type | Label | Description |
search | +string | ++ |
|
+
.proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby |
double | ++ | double | +double | +float | +float64 | +double | +float | +Float | +
float | ++ | float | +float | +float | +float32 | +float | +float | +Float | +
int32 | +Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | +int32 | +int | +int | +int32 | +int | +integer | +Bignum or Fixnum (as required) | +
int64 | +Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | +int64 | +long | +int/long | +int64 | +long | +integer/string | +Bignum | +
uint32 | +Uses variable-length encoding. | +uint32 | +int | +int/long | +uint32 | +uint | +integer | +Bignum or Fixnum (as required) | +
uint64 | +Uses variable-length encoding. | +uint64 | +long | +int/long | +uint64 | +ulong | +integer/string | +Bignum or Fixnum (as required) | +
sint32 | +Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | +int32 | +int | +int | +int32 | +int | +integer | +Bignum or Fixnum (as required) | +
sint64 | +Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | +int64 | +long | +int/long | +int64 | +long | +integer/string | +Bignum | +
fixed32 | +Always four bytes. More efficient than uint32 if values are often greater than 2^28. | +uint32 | +int | +int | +uint32 | +uint | +integer | +Bignum or Fixnum (as required) | +
fixed64 | +Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | +uint64 | +long | +int/long | +uint64 | +ulong | +integer/string | +Bignum | +
sfixed32 | +Always four bytes. | +int32 | +int | +int | +int32 | +int | +integer | +Bignum or Fixnum (as required) | +
sfixed64 | +Always eight bytes. | +int64 | +long | +int/long | +int64 | +long | +integer/string | +Bignum | +
bool | ++ | bool | +boolean | +boolean | +bool | +bool | +boolean | +TrueClass/FalseClass | +
string | +A string must always contain UTF-8 encoded or 7-bit ASCII text. | +string | +String | +str/unicode | +string | +string | +string | +String (UTF-8) | +
bytes | +May contain any arbitrary sequence of bytes. | +string | +ByteString | +str | +[]byte | +ByteString | +string | +String (ASCII-8BIT) | +
The modem number for this event, if it is related to a single modem.
The tags for this event, if any.
Deprecated. Deprecated, here to be backwards compatible with ModemTransferEvents.
Name | -Option | -
deprecated_transfer | -true |
-
Get the list of events that affect modem health, chronologically (by default, from now backwards in time).
Only returns the Event with first-level fields set, event details are not included in the response
(the oneof is not set).
+ + + + + +Field | Type | Label | Description |
organization | +string | ++ | Pick the organization to use (/impersonate). If unset, your default organization is used. |
+
selection | +EventSelection | ++ |
|
+
pagination | +hiber.Pagination | ++ |
|
+
Field | Type | Label | Description |
request | +ModemHealthEvents.Request | ++ |
|
+
events | +Event | +repeated | +
|
+
pagination | +hiber.Pagination.Result | ++ |
|
+
Resolve a resolvable event using its resolve_identifier.
@@ -6985,6 +6936,20 @@External device ids for this modem.
Device type for this modem.
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
selection | -ModemTransferSelection | -- |
|
-
Field | Type | Label | Description |
request | -CancelModemTransferRequest | -- |
|
-
cancelled | -ModemTransfer | -repeated | -
|
-
Field | Type | Label | Description |
organization | -string | -- |
|
-
transfer_id | -string | -- |
|
-
modem_numbers | -string | -repeated | -
|
-
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
selection | -ModemTransferSelection | -- |
|
-
pagination | -hiber.Pagination | -- |
|
-
Field | Type | Label | Description |
request | -ListModemTransferReturnLinesRequest | -- |
|
-
lines | -ModemTransferReturnLine | -repeated | -
|
-
pagination | -hiber.Pagination.Result | -- |
|
-
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
selection | -ModemTransferSelection | -- |
|
-
pagination | -hiber.Pagination | -- |
|
-
Field | Type | Label | Description |
request | -ListModemTransfersRequest | -- |
|
-
transfers | -ModemTransfer | -repeated | -
|
-
pagination | -hiber.Pagination.Result | -- |
|
-
Field | Type | Label | Description |
identifier | -string | -- |
|
-
modem_numbers | -string | -repeated | -
|
-
type | -ModemTransfer.Type | -- |
|
-
status | -ModemTransfer.Status | -- |
|
-
sender_organization | -string | -- |
|
-
recipient_organization | -string | -- |
|
-
return_transfers | -string | -repeated | -
|
-
return_for | -string | -repeated | -
|
-
tracking_information | -string | -- |
|
-
created_at | -hiber.Timestamp | -- |
|
-
received_at | -hiber.Timestamp | -- |
|
-
cancelled_at | -hiber.Timestamp | -- |
|
-
not_received_at | -hiber.Timestamp | -- |
|
-
return_deadline | -hiber.Timestamp | -- |
|
-
tags | -hiber.tag.Tag | -repeated | -
|
-
Field | Type | Label | Description |
original_transfer | -string | -- |
|
-
return_transfer | -string | -- |
|
-
modem_numbers | -string | -repeated | -
|
-
reason | -ModemTransferReturnLine.Reason | -- |
|
-
comment | -string | -- |
|
-
created_at | -hiber.Timestamp | -- |
|
-
returned_at | -hiber.Timestamp | -- |
|
-
return_deadline | -hiber.Timestamp | -- |
|
-
Field | Type | Label | Description |
identifiers | -string | -repeated | -
|
-
modems | -ModemSelection | -- |
|
-
senders | -string | -repeated | -
|
-
recipients | -string | -repeated | -
|
-
statuses | -ModemTransfer.Status | -repeated | -
|
-
created_in | -hiber.TimeRange | -- |
|
-
received_in | -hiber.TimeRange | -- |
|
-
not_received_in | -hiber.TimeRange | -- |
|
-
cancelled_in | -hiber.TimeRange | -- |
|
-
types | -ModemTransfer.Type | -repeated | -
|
-
inbound_only | -bool | -- | Convenience method to setting recipients = my organization. -Will ignore any current value for recipients, since the only valid recipient is you. |
-
outbound_only | -bool | -- | Convenience method to setting senders = my organization. -Will ignore any current value for senders, since the only valid sender is you. |
-
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
selection | -ModemTransferSelection | -- |
|
-
Field | Type | Label | Description |
request | -NotReceivedModemTransferRequest | -- |
|
-
not_received | -ModemTransfer | -repeated | -
|
-
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
transfer_id | -string | -- | The transfer id that you received the modems with, to be used to the return. -If this is provided, only one return line is returned. -If this is not provided, the given modem selection could match multiple transfers, so multiple -return lines would be created. |
-
selection | -ModemSelection | -- | Selection of modems, received from the transfer above. |
-
reason | -ModemTransferReturnLine.Reason | -- | The reason for the return. For the 'other' reason, a comment is required. |
-
comment | -string | -- | Optional, unless the 'other' reason is selected. |
-
replace_previous_comment | -bool | -- | Use this to update the comment for a return line (using the same transfer_id and reason). |
-
Field | Type | Label | Description |
request | -PrepareModemForReturnRequest | -- |
|
-
modem_return_lines | -ModemTransferReturnLine | -repeated | -
|
-
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
selection | -ModemTransferSelection | -- |
|
-
Field | Type | Label | Description |
request | -ReceivedModemTransferRequest | -- |
|
-
received | -ModemTransfer | -repeated | -
|
-
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
selection | -ModemTransferSelection | -- |
|
-
tracking_information | -string | -- |
|
-
Field | Type | Label | Description |
request | -SendReturnRequest | -- |
|
-
return_transfer | -ModemTransfer | -- |
|
-
Field | Type | Label | Description |
organization | -string | -- | Pick the organization to use (/impersonate). If unset, your default organization is used. |
-
selection | -ModemSelection | -- | The ModemSelection is automatically appended with a status filter for 'in stock' modems. Modems with a different -status are ignored for the transfer. |
-
recipient_organization | -string | -- | Existing organization to send the modems to. |
-
create_recipient | -hiber.organization.CreateOrganizationRequest | -- | Create a new organization to transfer the modems to. |
-
tracking_information | -string | -- | Optional tracking information, like package tracking codes |
-
mark_received_automatically | -bool | -- | Mark the transfer as received automatically. -This only works if you're able to impersonate the recipient organization. |
-
allow_gateways_and_external_devices | -bool | -- | Deprecated. When this value is not set to true, transferring gateways or modems with an external device id is not allowed. -Gateways and external devices are connected to the current organization. -Moving either a gateway or connected external device to another organization without moving the other can -cause a number of issues. -Deprecated since 0.46. -To allow gateways to be transferred without their external devices must now be done using `gateway_transfer_mode` |
-
gateway_transfer_mode | -TransferModemsRequest.GatewayTransferMode | -- | Set the mode with which this gateway is transferred. -It explicitly sets what needs to happen to external devices. -This setting is mutually exclusive with the (now deprecated) setting `allow_gateways_and_external_devices`. |
-
data_transfer_mode | -TransferModemsRequest.DataTransferMode | -- | What to do with the modem's data, like messages and events. |
-
Name | -Option | -
allow_gateways_and_external_devices | -true |
-
Field | Type | Label | Description |
request | -TransferModemsRequest | -- |
|
-
transfer | -ModemTransfer | -- |
|
-
mark_received_automatically_failed | -bool | -- | When marking a transfer to be received automatically, -the calling entity must be able to impersonate the receiving entity. -If this (or any other part of the marking the transfer as received) fails, -this boolean will be set to true. -It is the clients responsibility to check this boolean and inform the client. -Note that the transfer itself is created and can still be accepted manually. |
-
Name | Number | Description |
IN_TRANSIT | -0 | -- |
RECEIVED | -1 | -- |
CANCELLED | -3 | -- |
NOT_RECEIVED | -4 | -- |
Name | Number | Description |
TRANSFER | -0 | -- |
RETURN | -1 | -- |
Name | Number | Description |
OTHER | -0 | -- |
INVALID_RECIPIENT | -1 | -- |
INVALID_CONFIGURATION | -2 | -- |
DAMAGED | -3 | -- |
DEAD | -4 | -- |
MISSING | -5 | -- |
What to do with the messages, events and other related data.
-Name | Number | Description |
UNKNOWN | -0 | -The API Will reject any request without an explicitly set DataTransferMode. |
-
DELETE_DATA | -1 | -Exclude messages and all events. The data will be deleted. |
-
What to do with external devices on transferring a gateway.
This mode is evaluated twice: once when the transfer is created and once when the transfer is finalised.
When creating, a double check is done on whether or not your transfer contains gateways or external devices.
When finalising, the actual state of currently connected external devices is determined.
Note: Any *new* external devices that start transmitting after starting the transfer will be processed as well.
-Name | Number | Description |
NOTHING_SELECTED | -0 | -Signifies that no selection has been made. -This is not allowed for gateways, the client must explicitly choose what happens to external devices. |
-
ORPHAN_EXTERNAL_DEVICES | -1 | -When transferring a gateway, *orphan* all external devices. -The devices are re-created in the recipient organization when they transmit through the gateway. -The old modem is unchanged, but can no longer receive new messages, unless it is connected to -another gateway in the sender organization. -Old messages from the modem remain in the sender organization under its old modem number. |
-
DELETE_EXTERNAL_DEVICES | -2 | -When transferring a gateway, mark all external devices as *DEAD*. -The devices are re-created in the recipient organization when they transmit through the gateway. -Old messages from this device remain in the sender organization under its old modem, which is marked DEAD. -DEAD modems are be automatically hidden, but can still be accessed. |
-
TRANSFER_EXTERNAL_DEVICES | -3 | -When transferring a gateway, *transfer* all external devices together with the gateway. -This moves all existing external devices with the gateway, while they keep their modem number and messages. -Old messages from this device will be available to the new owner. |
-
Method Name | Request Type | Response Type | Description |
Prepare | -PrepareModemForReturnRequest | -PrepareModemForReturnRequest.Response | -If any problems are detected with the modems within the return period, mark them using this method. -Modems marked using this method can be returned in one transfer, as long as they are returned to the same -organization. |
-
Lines | -ListModemTransferReturnLinesRequest | -ListModemTransferReturnLinesRequest.Response | -List the return lines, either for a return transfer, or lines that have not been -returned with a return transfer yet. |
-
DeleteLine | -DeleteModemTransferReturnLinesRequest | -DeleteModemTransferReturnLinesRequest.Response | -- |
Send | -SendReturnRequest | -SendReturnRequest.Response | -Transfer modems marked for return back to the sender. |
-
Tracking services for transferring modems between parties.
Modems can be transferred between organizations for any number of reason, ranging from actually shipping to a different
company to handing them over to a third party for installation.
-Method Name | Request Type | Response Type | Description |
Transfer | -TransferModemsRequest | -TransferModemsRequest.Response | -Transfer modems to a different organization. -As a result, the modem will get the outbound status for you, and the inbound status for the recipient. -Note: this call can automatically generate a child organization for the recipient if it has no organization. |
-
List | -ListModemTransfersRequest | -ListModemTransfersRequest.Response | -List transfers for modems. This could be used to list all active transfers on a selection of modems, -or, for example, to list this history of all transfers for one modem. |
-
Cancel | -CancelModemTransferRequest | -CancelModemTransferRequest.Response | -Cancel a started transfer. |
-
Received | -ReceivedModemTransferRequest | -ReceivedModemTransferRequest.Response | -Mark inbound modems as received, adding them to your organization. |
-
NotReceived | -NotReceivedModemTransferRequest | -NotReceivedModemTransferRequest.Response | -Mark modems as not received when they were inbound but did not show up. -If you do receive the modems after marking them as not received, you can claim them to still get them in -your organization. |
-
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
External device ids for this modem.
Device type for this modem.
The expected transmission rate for this device.
The DeviceType for this device. See DeviceType for more information.
External device ids for this modem.
Device type for this modem.