From 91b92a4e8d41ab98523257fe8b5599f8bf6e6aab Mon Sep 17 00:00:00 2001 From: Wouter Bouvy Date: Mon, 10 Oct 2022 15:31:52 +0200 Subject: [PATCH] 0.124.0 --- CHANGELOG.md | 33 + base.proto | 5 + buf.md | 255 + buf.yaml | 52 + currentuser.proto | 6 + docs/html/assignment.html | 364 +- docs/html/easypulse.html | 4962 ++++++++++---- docs/html/event.html | 364 +- docs/html/field_service.html | 415 +- docs/html/map.html | 35 + docs/html/message.html | 7680 ++++++++++++---------- docs/html/modem.html | 364 +- docs/html/modem_alarm.html | 364 +- docs/html/modem_message_body_parser.html | 364 +- docs/html/named_location.html | 35 + docs/html/permission.html | 21 + docs/html/simulation_service.html | 364 +- docs/html/unit_preferences_service.html | 86 + docs/html/value_service.html | 536 +- docs/html/values.html | 121 + docs/html/webhook.html | 35 + docs/md/assignment.md | 47 +- docs/md/easypulse.md | 584 ++ docs/md/event.md | 47 +- docs/md/field_service.md | 75 +- docs/md/map.md | 10 + docs/md/message.md | 1735 ++--- docs/md/modem.md | 101 +- docs/md/modem_alarm.md | 47 +- docs/md/modem_message_body_parser.md | 47 +- docs/md/named_location.md | 10 + docs/md/permission.md | 9 + docs/md/simulation_service.md | 47 +- docs/md/unit_preferences_service.md | 38 +- docs/md/value_service.md | 121 +- docs/md/values.md | 46 + docs/md/webhook.md | 10 + easypulse.proto | 66 + modem.proto | 48 +- permission.proto | 8 + value.proto | 58 + value_service.proto | 58 - 42 files changed, 12552 insertions(+), 7121 deletions(-) create mode 100644 buf.md create mode 100644 buf.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 6af4de3..6d86ed7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,39 @@ #### Upcoming Changes +### 0.124 (2022-10-10) + +##### Permissions + +- Added `SupportPermission`s: + - `SupportPermission`s are used for features typically reserved for customer support, or that behave differently + when used by a customer support operator. + - Added `Filter.SupportPermissions`. + +##### CurrentUserService + +- Added `CurrentUser.support_permissions` to show the support permissions for the current user. + +##### EasypulseService + +- Added `Fields` call to get field configuration for Easypulse. + +##### ModemService + +- Added a few more options to `ListModemsRequest.Sort`: + - `STATUS_ASC_ALPHABETICAL` and `STATUS_DESC_ALPHABETICAL`: sort by status, alphabetically (instead of by status enum order). + - `HEALTH_ASC_ALPHABETICAL` and `HEALTH_DESC_ALPHABETICAL`: sort by health, alphabetically (instead of by severity). +- Renamed Modem.Status to Modem.Lifecycle + - Updated enum values: + - DEFAULT = ACCEPTANCE_TESTING + - ACTIVE = INSTALLED + - DEAD = DECOMMISSIONED + - Added enum value: + - PAUSED + - Deprecated enum values: + - DAMAGED + - LOST + ### 0.123 (2022-10-03) ##### EasypulseService diff --git a/base.proto b/base.proto index 33defd2..742819f 100644 --- a/base.proto +++ b/base.proto @@ -393,6 +393,11 @@ message Filter { repeated UserPermission exclude = 3; } + message SupportPermissions { + repeated SupportPermission include = 1; + repeated SupportPermission exclude = 2; + } + message FieldEnumValues { string field = 1; repeated string include = 2; diff --git a/buf.md b/buf.md new file mode 100644 index 0000000..0536f91 --- /dev/null +++ b/buf.md @@ -0,0 +1,255 @@ +# Hiber API + +This is the protobuf specification of the Hiber GRPC API. + +Hiber also offers a limited, [read-only rest API](https://github.com/hiberglobal/rest-api) for convenience. +This is based on the protobuf object definitions, but is (for now) mainly intended as a compatibility option +to fetch messages and message events. + +## Technical tools + +### Protocol Buffers + +Protobuf is Google's replacement for JSON. +Due to its use of binary buffers, it's a more efficient way to encode data than text based protocols (SOAP, JSON), especially in encoding integers. Fields are encoded through +a 'tag', which are integers, which improves the density even more. + +There are protobuf libraries in most used languages, such as Java, JavaScript, Golang, C#, C, and C++. This makes adoption of the protocol really easy. +Because server and client model are generated from the same source, there can be no confusion about the model. + +For more information, take a look at: + +- [Protobuf at Github](https://github.com/google/protobuf/wiki) +- [Google Protocol Buffers Developer Guide](https://developers.google.com/protocol-buffers/) + +### GRPC + +GRPC is a way of defining rpc services in the protobuf format. +GRPC is based on HTTP/2 and formalized the networking, status responses and streaming implementation for API calls. +Because the specification generates both the client and server code, the specification is valid by default +and API documentation is in one place. + +For more information, take a look at: + +- [GRPC Homepage](https://grpc.io/) +- [GRPC Concepts](https://grpc.io/docs/guides/concepts.html) +- [GRPC Language Guides](https://grpc.io/docs/) +- [GRPC at Github](https://github.com/grpc/grpc) + +### GRPC Web + +Since GRPC is based on HTTP/2, it is not (yet) compatible with web browsers. +In order to support web-based applications, we are running the grpc-web proxy. +This allows GRPC calls from the browser, using the typescript code generated by the GRPC Web generator. + +For more information, take a look at: + +- [GRPC Web Specification](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md) +- [GRPC Web on Github](https://github.com/improbable-eng/grpc-web/) + +(Note that Google has recently release [a beta version of their implementation of GRPC Web](https://github.com/grpc/grpc-web). +We are looking into switching to that implementation in the future.) + +## Usage + +First of all, have a look through the .proto files in this repository. +You will find that they are very easy to read, and we have tried to name everything as clearly as possible, +so as to avoid unnecessary extra documentation. + +To use the proto files, clone this repository and generate code in your preferred language: + +- [C++](https://grpc.io/docs/tutorials/basic/c.html#generating-client-and-server-code) +- [C#](https://grpc.io/docs/tutorials/basic/csharp.html#generating-client-and-server-code) +- [Dart](https://grpc.io/docs/tutorials/basic/dart.html#generating-client-and-server-code) +- [Go](https://grpc.io/docs/tutorials/basic/go.html#generating-client-and-server-code) +- [Java](https://grpc.io/docs/tutorials/basic/java.html#generating-client-and-server-code) +- [Node](https://grpc.io/docs/tutorials/basic/node.html#creating-the-client) +- [Objective-C](https://grpc.io/docs/tutorials/basic/objective-c.html#generating-client-code) +- [PHP](https://grpc.io/docs/tutorials/basic/php.html#generating-client-code) +- [Python](https://grpc.io/docs/tutorials/basic/python.html#generating-client-and-server-code) +- [Ruby](https://grpc.io/docs/tutorials/basic/ruby.html#generating-client-and-server-code) + +### Simple example + +For example: + +``` +service CurrentUserService { + rpc CurrentUser (CurrentUserRequest) returns (CurrentUser); +} + +message CurrentUser { + string id = 1; + string email = 2; + string name = 3; + repeated string organizations = 4; +} + +message CurrentUserRequest { +} +``` + +(Note that this is a reduced, and possibly outdated, example and you should consult the actual proto file for the actual, up to date definition.) + +This defines a service that has one rpc call, which expects an empty request object and returns a CurrentUser object. + +For API client purposes, you can mostly ignore the numbers and see this as a data class. +Note the `repeated` keyword for the `organizations` field. This indicates that the field is of an array type (like `string[] organizations`). + +### List requests, selection objects and pagination + +For many of our list calls, which can list items like modems, users, etc., we use a selection object to +simplify the filtering of the data. + +Since the same selection criteria can be used in different calls, selection objects are a simple way to +extract this duplication out of the definitions. + +For example: + +``` +service WebhookService { + rpc List (ListRequest) returns (ListRequest.Response); +} + +message Webhook { + int64 id = 1; + string organization = 2; + string description = 3; + repeated api.tag.Tag tags = 4; +} + +message WebhookSelection { + string description = 1; + string url = 2; + Filter.Webhooks webhooks = 3; + api.tag.TagSelection tags = 4; +} + +message ListRequest { + message Response { + repeated Webhook webhooks = 1; + ListRequest request = 2; + Pagination.Result pagination = 3; + } + + string organization = 1; + WebhookSelection selection = 2; + Pagination pagination = 3; +} + +message Pagination { + message Result { + int32 size = 1; + int32 page = 2; + int32 total = 3; + int32 totalPages = 4; + Pagination previous = 6; + Pagination next = 7; + } + int32 size = 1; + int32 page = 2; +} + +``` + +(Note, again, that this is a reduced, and possibly outdated, example.) + +This code actually contains a few interesting things. First, nested messages. +These are used to denoted linked function, i.e. the `Response` message inside the `ListRequest`. + +The `WebhookSelection` message contains the filters that can be applied to webhooks. +Note that the `WebhookSelection` message contains a `TagSelection` as well. +This is another selection object, used to filter webhooks by tags. + +The `Pagination` message is used to paginate the result. +It's a simple page size and page number combination (where 0 is the first page). +The `Pagination.Result` message also contains `size` and `page`, but has corrected the `size` field to a +maximum value (or default value if it was 0). +For convenience, it also contains a previous and next `Pagination` object, for easy pagination. + +Note that `ListRequest.Response` contains a `ListRequest`, which is a corrected version of the request. +Selection object may have certain defaults or value limits, which will be visible in the corrected request. + +### Default values + +Everything in protobuf has a default value, which has a few interesting complications. + +For example: + +``` +enum ContentType { + DEFAULT = 0; + JSON = 1; + PROTO = 2; +} +``` + +Since protobuf has a default value for all objects, enum takes the first value as default value. +To avoid the situation where omitting the field would still set a value, we've introduced the `DEFAULT` value. + +``` +message UpdateBoolean { + bool updated = 1; + bool value = 2; +} +``` + +Since false is the default value for a boolean, we need to distinguish between an omitted value and +setting the value to false in an update object. +For this, we've added an `UpdateBoolean` message (and `UpdateClearableString` and `UpdateZeroableInt` +for string that can be set to empty, and ints that can be set to 0, respectively) + +Usage is pretty simple, set a value in the object and set `updated` to true. + +### Versioning + +Protobuf/GRPC has a built-in versioning mechanism by using numbered fields. +This essentially means that a field would change in a non-backwards compatible way, it would either be removed and added it with a new number, or deprecated and a new field with a new name would be added. +In case of removal, the server is able to detect whether an old version is used and convert the field. + +For more information and a small number of examples, see the examples of versioning methods in the examples repo: [Versioning example](https://github.com/HiberGlobal/examples/tree/master/versioning) + +## Developing on our API + +For Hiber customer development, we have set up endpoints under [acc.env.hiber.cloud](https://acc.env.hiber.cloud): + +- [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. +(Note that opening this url in your browser will not work, since it requires HTTP2.) + +Notes: +- This can be considered a stable production-like environment. +- Technically, you might be able to connect a normal GRPC client to the GRPC Web API, but this is not recommended. + +### API Tokens + +The Hiber API requires a token for all GRPC calls, using a metadata field called `authorization` with value `bearer $YOUR_TOKEN_HERE`. + +To get a token for our API, go to the web application at [acc.env.hiber.cloud](https://acc.env.hiber.cloud) and log in. +Once you are linked to an organization (this process is defined in the api, but not implemented in the web interface yet) +you can create a token (using another token) on the API. + +(Note: for pilot customers, a number of tokens can be generated in advance, so this process is not necessary.) + +### Using our API in production + +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. +(Note that opening this url in your browser will not work, since it requires HTTP2.) + +## Examples + +We've provided a collection of minimal examples in different languages in +our [examples repository](https://github.com/HiberGlobal/examples). + +For initial development, to simplify client experimentation with our GRPC API, and as a server used by our examples, +we've created a simple mock server that implements our API. +It will return example data, and does not do any error handling aside from requiring that a token is present. + +For simple usage, you can simply pull the docker image at [hiberglobal/mock-server](https://hub.docker.com/r/hiberglobal/mock-server/) +(most of the examples do this automatically when you run them). +You can see the source code get some more information at [the mock-server folder in the examples repository](https://github.com/HiberGlobal/examples/blob/master/mock-server/). diff --git a/buf.yaml b/buf.yaml new file mode 100644 index 0000000..7217dcd --- /dev/null +++ b/buf.yaml @@ -0,0 +1,52 @@ +version: v1 +name: buf.build/hiber/api +breaking: + use: + - WIRE + except: + - FIELD_WIRE_COMPATIBLE_TYPE +lint: + use: + - DEFAULT + except: + - ENUM_VALUE_PREFIX + - DIRECTORY_SAME_PACKAGE + - PACKAGE_SAME_JAVA_MULTIPLE_FILES # this works fine for Java + - PACKAGE_DIRECTORY_MATCH + - PACKAGE_VERSION_SUFFIX + - RPC_RESPONSE_STANDARD_NAME + - RPC_REQUEST_STANDARD_NAME + - RPC_REQUEST_RESPONSE_UNIQUE + ignore_only: + # For C++ compatibility, enums in the same package can not have the same enum value names + # This is mostly not an issue, since the values are mostly unique within a package, except for: + # the unknown/unspecified zeroth enum value. + # We should start making those unique. + ENUM_ZERO_VALUE_SUFFIX: + - assignment.proto + - base.proto + - easypulse.proto + - event.proto + - export.proto + - field.proto + - field_service.proto + - integration_mqtt.proto + - integration_slack.proto + - map.proto + - message.proto + - modem.proto + - modem_alarm.proto + - modem_message_body_parser.proto + - modem_message_downlink.proto + - modem_transfer.proto + - organization.proto + - permission.proto + - publisher.proto + - subscription.proto + - unit_preferences_service.proto + - user.proto + - value.proto + - value_service.proto + - webhook.proto + # The sort enum is unique in its own right and doesn't need a suffix. + - device_service.proto diff --git a/currentuser.proto b/currentuser.proto index 3fc935e..5ebcac9 100644 --- a/currentuser.proto +++ b/currentuser.proto @@ -58,6 +58,12 @@ message CurrentUser { /* Permissions for the user. If this is a token, the user permissions may be limited. */ Filter.UserPermissions user_permissions = 10; + /* Permissions for customer support. + * Used for features typically reserved for customer support, or that behave differently + * when used by a customer support operator. + */ + Filter.SupportPermissions support_permissions = 14; + string mission_control_settings = 11; /* Whether the user accepted the terms and conditions. */ diff --git a/docs/html/assignment.html b/docs/html/assignment.html index a0dc5b0..8a0ccc8 100644 --- a/docs/html/assignment.html +++ b/docs/html/assignment.html @@ -661,27 +661,27 @@

Table of Contents

  • - MUpdateModemNotesRequest + MUpdateModemLifecycleRequest
  • - MUpdateModemNotesRequest.Response + MUpdateModemLifecycleRequest.Response
  • - MUpdateModemSecureNotesRequest + MUpdateModemNotesRequest
  • - MUpdateModemSecureNotesRequest.Response + MUpdateModemNotesRequest.Response
  • - MUpdateModemStatusRequest + MUpdateModemSecureNotesRequest
  • - MUpdateModemStatusRequest.Response + MUpdateModemSecureNotesRequest.Response
  • @@ -710,11 +710,11 @@

    Table of Contents

  • - EModem.Peripherals.HiberAntenna + EModem.Lifecycle
  • - EModem.Status + EModem.Peripherals.HiberAntenna
  • @@ -1113,6 +1113,10 @@

    Table of Contents

    MFilter.Publishers
  • +
  • + MFilter.SupportPermissions +
  • +
  • MFilter.Tags
  • @@ -4341,8 +4345,8 @@

    CreateModem.Request

    - status - Modem.Status + lifecycle + Modem.Lifecycle

    The status for the new modems.

    @@ -5131,8 +5135,8 @@

    Modem

    - status - Modem.Status + lifecycle + Modem.Lifecycle

    @@ -6095,7 +6099,7 @@

    ModemSelection

    only_active bool -

    +

    Deprecated. Use lifecycle filter instead.

    @@ -6134,11 +6138,11 @@

    ModemSelection

    - status - Modem.Status + lifecycles + Modem.Lifecycle repeated -

    Filter modems by status(es). -Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems.

    +

    Filter modems by lifecycle(s). +Defaults to nominal lifecycles, excluding disabled or decommissioned modems.

    @@ -6233,6 +6237,11 @@

    Fields with deprecated option

    + + only_active +

    true

    + + health

    true

    @@ -6468,7 +6477,7 @@

    RenameModemRequest

    -

    UpdateModemNotesRequest

    +

    UpdateModemLifecycleRequest

    @@ -6486,42 +6495,62 @@

    UpdateModemNotesRequest

    - selection - ModemSelection + modem_number + string -

    +

    Deprecated. Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible.

    - pagination - hiber.Pagination + modem_selection + ModemSelection -

    +

    Or a modem selection.

    - notes - string + update_lifecycle + Modem.Lifecycle -

    Notes content

    +

    The new status for the modem(s).

    - allow_override_existing_notes - bool + pagination + hiber.Pagination -

    When you try to set a new notes value to multiple modems, the API returns an error if their previous -values were different. Set this to true to apply it anyway.

    +

    Pagination for the modems in the Response.

    + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modem_number

    true

    + + -

    UpdateModemNotesRequest.Response

    +

    UpdateModemLifecycleRequest.Response

    @@ -6531,6 +6560,13 @@

    UpdateModemNotesRequest.Re + + modem + Modem + +

    Deprecated.

    + + modems Modem @@ -6540,7 +6576,7 @@

    UpdateModemNotesRequest.Re request - UpdateModemNotesRequest + UpdateModemLifecycleRequest

    @@ -6556,10 +6592,31 @@

    UpdateModemNotesRequest.Re + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modem

    true

    + + -

    UpdateModemSecureNotesRequest

    +

    UpdateModemNotesRequest

    @@ -6577,19 +6634,34 @@

    UpdateModemSecureNotesRequest - modem_number - string + selection + ModemSelection

    - secure_notes - string + pagination + hiber.Pagination

    + + notes + string + +

    Notes content

    + + + + allow_override_existing_notes + bool + +

    When you try to set a new notes value to multiple modems, the API returns an error if their previous +values were different. Set this to true to apply it anyway.

    + + @@ -6597,7 +6669,7 @@

    UpdateModemSecureNotesRequest -

    UpdateModemSecureNotesRequest.Response

    +

    UpdateModemNotesRequest.Response

    @@ -6608,15 +6680,22 @@

    UpdateModemSecureNot - modem + modems Modem - + repeated

    request - UpdateModemSecureNotesRequest + UpdateModemNotesRequest + +

    + + + + pagination + hiber.Pagination.Result

    @@ -6628,7 +6707,7 @@

    UpdateModemSecureNot -

    UpdateModemStatusRequest

    +

    UpdateModemSecureNotesRequest

    @@ -6649,59 +6728,24 @@

    UpdateModemStatusRequest

    modem_number string -

    Deprecated. Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible.

    - - - - modem_selection - ModemSelection - -

    Or a modem selection.

    - - - - update_status - Modem.Status - -

    The new status for the modem(s).

    +

    - pagination - hiber.Pagination + secure_notes + string -

    Pagination for the modems in the Response.

    +

    - - -

    Fields with deprecated option

    - - - - - - - - - - - - - - - -
    NameOption
    modem_number

    true

    - - -

    UpdateModemStatusRequest.Response

    +

    UpdateModemSecureNotesRequest.Response

    @@ -6715,26 +6759,12 @@

    UpdateModemStatusRequest. modem Modem -

    Deprecated.

    - - - - modems - Modem - repeated

    request - UpdateModemStatusRequest - -

    - - - - pagination - hiber.Pagination.Result + UpdateModemSecureNotesRequest

    @@ -6743,27 +6773,6 @@

    UpdateModemStatusRequest. - - -

    Fields with deprecated option

    - - - - - - - - - - - - - - - -
    NameOption
    modem

    true

    - - @@ -7066,6 +7075,18 @@

    ListModemsRequest.Sort

    Sort modem on its Status in reverse order.

    + + STATUS_ASC_ALPHABETICAL + 14 +

    Status sorted alphabetically by Status name.

    + + + + STATUS_DESC_ALPHABETICAL + 15 +

    Status sorted alphabetically by Status name, descending order.

    + + MODEM_NAME_ASC 6 @@ -7102,11 +7123,23 @@

    ListModemsRequest.Sort

    Health sorted from most to least severe (i.e. ERROR, WARNING, OK).

    + + HEALTH_ASC_ALPHABETICAL + 12 +

    Health sorted alphabetically by health level name.

    + + + + HEALTH_DESC_ALPHABETICAL + 13 +

    Health sorted alphabetically by health level name, descending order.

    + + -

    Modem.Peripherals.HiberAntenna

    -

    A Hiber antenna is required for the modem to function.

    +

    Modem.Lifecycle

    +

    @@ -7114,40 +7147,53 @@

    Modem.Peripherals.HiberAnten

    - + - + - + - + - - + + - - + + - + + + + + + + + + + + + +
    NameNumberDescription
    DEFAULTACCEPTANCE_TESTING 0

    Modem is deployed, but not active yet. Invisible for customer.

    HIBER_PANDAINSTALLED 1

    Modem is active and sending messages. +See health for more details on its health, based on the past messages.

    HIBER_GRIZZLY2PAUSED6

    HIBER_BLACK3DISABLED5

    CUSTOMDECOMMISSIONED 4

    DAMAGED2

    Kept for backwards compatibility. Internally mapped to decommissioned

    LOST3

    Kept for backwards compatibility. Internally mapped to decommissioned

    -

    Modem.Status

    -

    Modem statuses for its lifecycle.

    +

    Modem.Peripherals.HiberAntenna

    +

    A Hiber antenna is required for the modem to function.

    @@ -7157,40 +7203,33 @@

    Modem.Status

    - + - + - + - + - + - + - - - - - -
    NameNumberDescription
    DEFAULT 0

    Modem is in your inventory, but not deployed or active.

    ACTIVEHIBER_PANDA 1

    Modem is active and sending messages. -See health for more details on its health, based on the past messages.

    DAMAGEDHIBER_GRIZZLY 2

    LOSTHIBER_BLACK 3

    DEADCUSTOM 4

    DISABLED5

    @@ -7391,8 +7430,8 @@

    ModemService

    UpdateStatus - UpdateModemStatusRequest - UpdateModemStatusRequest.Response + UpdateModemLifecycleRequest + UpdateModemLifecycleRequest.Response

    Change the status of the selected modems to the given value.

    @@ -10394,6 +10433,37 @@

    Filter.Publishers

    +

    Filter.SupportPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeSupportPermissionrepeated

    excludeSupportPermissionrepeated

    + + + + +

    Filter.Tags

    diff --git a/docs/html/easypulse.html b/docs/html/easypulse.html index d37efed..1b02c91 100644 --- a/docs/html/easypulse.html +++ b/docs/html/easypulse.html @@ -202,6 +202,30 @@

    Table of Contents

    MEasypulse.AssetSelection +
  • + MEasypulse.Fields +
  • + +
  • + MEasypulse.Fields.EasypulseField +
  • + +
  • + MEasypulse.Fields.PTOEngagement +
  • + +
  • + MEasypulse.Fields.Request +
  • + +
  • + MEasypulse.Fields.Response +
  • + +
  • + MEasypulse.Fields.StateBasedFields +
  • +
  • MEasypulse.History
  • @@ -479,6 +503,172 @@

    Table of Contents

    +
  • + value.proto + +
  • + + +
  • + field.proto + +
  • + +
  • base.proto @@ -584,27 +592,27 @@

    Table of Contents

  • - MUpdateModemNotesRequest + MUpdateModemLifecycleRequest
  • - MUpdateModemNotesRequest.Response + MUpdateModemLifecycleRequest.Response
  • - MUpdateModemSecureNotesRequest + MUpdateModemNotesRequest
  • - MUpdateModemSecureNotesRequest.Response + MUpdateModemNotesRequest.Response
  • - MUpdateModemStatusRequest + MUpdateModemSecureNotesRequest
  • - MUpdateModemStatusRequest.Response + MUpdateModemSecureNotesRequest.Response
  • @@ -633,11 +641,11 @@

    Table of Contents

  • - EModem.Peripherals.HiberAntenna + EModem.Lifecycle
  • - EModem.Status + EModem.Peripherals.HiberAntenna
  • @@ -3136,6 +3144,84 @@

    Value.Type

    +

    ValueAggregation

    +

    Get the values for the selected field.

    There are a few limitations here:

    - text fields can only use the LAST aggregation.

    - enum fields support a subset of aggregations:

    - DEFAULT and LAST return the last value.

    - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order.

    - AVERAGE and SUM are not supported.

    - enum duration

    An enum example:

    Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK

    - aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range.

    - aggregation SUM: OK: 35m, FAILED: 25m

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DEFAULT0

    AVERAGE1

    Return the average value. +Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    SUM2

    Return the sum all values. +Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    LAST3

    Just take the last value.

    MINIMUM4

    Return the lowest value. +For enum fields, the order of values is used to determine the MINIMUM. +Not supported for textual fields. When used with these fields, LAST is used instead.

    MAXIMUM5

    Return the highest value. +For enum fields, the order of values is used to determine the MAXIMUM. +Not supported for textual fields. When used with these fields, LAST is used instead.

    + +

    ValueTransformation

    +

    Transform the values into a derived value.

    + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DURATION0

    Instead of returning the value, return the amount of time a value was active. +Aggregation (if applicable) is applied afterwards on the duration value.

    DELTA1

    Instead of returning the value, return the difference between the value and the previous value. +Aggregation (if applicable) is applied before the delta is calculated.

    + @@ -3197,8 +3283,8 @@

    CreateModem.Request

    - status - Modem.Status + lifecycle + Modem.Lifecycle

    The status for the new modems.

    @@ -3987,8 +4073,8 @@

    Modem

    - status - Modem.Status + lifecycle + Modem.Lifecycle

    @@ -4951,7 +5037,7 @@

    ModemSelection

    only_active bool -

    +

    Deprecated. Use lifecycle filter instead.

    @@ -4990,11 +5076,11 @@

    ModemSelection

    - status - Modem.Status + lifecycles + Modem.Lifecycle repeated -

    Filter modems by status(es). -Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems.

    +

    Filter modems by lifecycle(s). +Defaults to nominal lifecycles, excluding disabled or decommissioned modems.

    @@ -5089,6 +5175,11 @@

    Fields with deprecated option

    + + only_active +

    true

    + + health

    true

    @@ -5324,7 +5415,7 @@

    RenameModemRequest

    -

    UpdateModemNotesRequest

    +

    UpdateModemLifecycleRequest

    @@ -5342,42 +5433,62 @@

    UpdateModemNotesRequest

    - selection - ModemSelection + modem_number + string -

    +

    Deprecated. Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible.

    - pagination - hiber.Pagination + modem_selection + ModemSelection -

    +

    Or a modem selection.

    - notes - string + update_lifecycle + Modem.Lifecycle -

    Notes content

    +

    The new status for the modem(s).

    - allow_override_existing_notes - bool + pagination + hiber.Pagination -

    When you try to set a new notes value to multiple modems, the API returns an error if their previous -values were different. Set this to true to apply it anyway.

    +

    Pagination for the modems in the Response.

    + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modem_number

    true

    + + -

    UpdateModemNotesRequest.Response

    +

    UpdateModemLifecycleRequest.Response

    @@ -5387,6 +5498,13 @@

    UpdateModemNotesRequest.Re + + modem + Modem + +

    Deprecated.

    + + modems Modem @@ -5396,7 +5514,7 @@

    UpdateModemNotesRequest.Re request - UpdateModemNotesRequest + UpdateModemLifecycleRequest

    @@ -5412,10 +5530,31 @@

    UpdateModemNotesRequest.Re + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modem

    true

    + + -

    UpdateModemSecureNotesRequest

    +

    UpdateModemNotesRequest

    @@ -5433,19 +5572,34 @@

    UpdateModemSecureNotesRequest - modem_number - string + selection + ModemSelection

    - secure_notes - string + pagination + hiber.Pagination

    + + notes + string + +

    Notes content

    + + + + allow_override_existing_notes + bool + +

    When you try to set a new notes value to multiple modems, the API returns an error if their previous +values were different. Set this to true to apply it anyway.

    + + @@ -5453,7 +5607,7 @@

    UpdateModemSecureNotesRequest -

    UpdateModemSecureNotesRequest.Response

    +

    UpdateModemNotesRequest.Response

    @@ -5464,15 +5618,22 @@

    UpdateModemSecureNot - modem + modems Modem - + repeated

    request - UpdateModemSecureNotesRequest + UpdateModemNotesRequest + +

    + + + + pagination + hiber.Pagination.Result

    @@ -5484,7 +5645,7 @@

    UpdateModemSecureNot -

    UpdateModemStatusRequest

    +

    UpdateModemSecureNotesRequest

    @@ -5505,59 +5666,24 @@

    UpdateModemStatusRequest

    modem_number string -

    Deprecated. Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible.

    - - - - modem_selection - ModemSelection - -

    Or a modem selection.

    - - - - update_status - Modem.Status - -

    The new status for the modem(s).

    +

    - pagination - hiber.Pagination + secure_notes + string -

    Pagination for the modems in the Response.

    +

    - - -

    Fields with deprecated option

    - - - - - - - - - - - - - - - -
    NameOption
    modem_number

    true

    - - -

    UpdateModemStatusRequest.Response

    +

    UpdateModemSecureNotesRequest.Response

    @@ -5571,26 +5697,12 @@

    UpdateModemStatusRequest. modem Modem -

    Deprecated.

    - - - - modems - Modem - repeated

    request - UpdateModemStatusRequest - -

    - - - - pagination - hiber.Pagination.Result + UpdateModemSecureNotesRequest

    @@ -5599,27 +5711,6 @@

    UpdateModemStatusRequest. - - -

    Fields with deprecated option

    - - - - - - - - - - - - - - - -
    NameOption
    modem

    true

    - - @@ -5922,6 +6013,18 @@

    ListModemsRequest.Sort

    Sort modem on its Status in reverse order.

    + + STATUS_ASC_ALPHABETICAL + 14 +

    Status sorted alphabetically by Status name.

    + + + + STATUS_DESC_ALPHABETICAL + 15 +

    Status sorted alphabetically by Status name, descending order.

    + + MODEM_NAME_ASC 6 @@ -5958,11 +6061,23 @@

    ListModemsRequest.Sort

    Health sorted from most to least severe (i.e. ERROR, WARNING, OK).

    + + HEALTH_ASC_ALPHABETICAL + 12 +

    Health sorted alphabetically by health level name.

    + + + + HEALTH_DESC_ALPHABETICAL + 13 +

    Health sorted alphabetically by health level name, descending order.

    + + -

    Modem.Peripherals.HiberAntenna

    -

    A Hiber antenna is required for the modem to function.

    +

    Modem.Lifecycle

    +

    @@ -5970,40 +6085,53 @@

    Modem.Peripherals.HiberAnten

    - + - + - + - + - - + + - - + + - + + + + + + + + + + + + +
    NameNumberDescription
    DEFAULTACCEPTANCE_TESTING 0

    Modem is deployed, but not active yet. Invisible for customer.

    HIBER_PANDAINSTALLED 1

    Modem is active and sending messages. +See health for more details on its health, based on the past messages.

    HIBER_GRIZZLY2PAUSED6

    HIBER_BLACK3DISABLED5

    CUSTOMDECOMMISSIONED 4

    DAMAGED2

    Kept for backwards compatibility. Internally mapped to decommissioned

    LOST3

    Kept for backwards compatibility. Internally mapped to decommissioned

    -

    Modem.Status

    -

    Modem statuses for its lifecycle.

    +

    Modem.Peripherals.HiberAntenna

    +

    A Hiber antenna is required for the modem to function.

    @@ -6013,40 +6141,33 @@

    Modem.Status

    - + - + - + - + - + - + - - - - - -
    NameNumberDescription
    DEFAULT 0

    Modem is in your inventory, but not deployed or active.

    ACTIVEHIBER_PANDA 1

    Modem is active and sending messages. -See health for more details on its health, based on the past messages.

    DAMAGEDHIBER_GRIZZLY 2

    LOSTHIBER_BLACK 3

    DEADCUSTOM 4

    DISABLED5

    @@ -6247,8 +6368,8 @@

    ModemService

    UpdateStatus - UpdateModemStatusRequest - UpdateModemStatusRequest.Response + UpdateModemLifecycleRequest + UpdateModemLifecycleRequest.Response

    Change the status of the selected modems to the given value.

    diff --git a/docs/html/map.html b/docs/html/map.html index 0f242b4..ef72610 100644 --- a/docs/html/map.html +++ b/docs/html/map.html @@ -317,6 +317,10 @@

    Table of Contents

    MFilter.Publishers
  • +
  • + MFilter.SupportPermissions +
  • +
  • MFilter.Tags
  • @@ -1582,6 +1586,37 @@

    Filter.Publishers

    +

    Filter.SupportPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeSupportPermissionrepeated

    excludeSupportPermissionrepeated

    + + + + +

    Filter.Tags

    diff --git a/docs/html/message.html b/docs/html/message.html index f14f12e..ba93ee2 100644 --- a/docs/html/message.html +++ b/docs/html/message.html @@ -277,6 +277,177 @@

    Table of Contents

    +
  • + base.proto + +
  • + +
  • field.proto @@ -549,27 +549,27 @@

    Table of Contents

  • - MUpdateModemNotesRequest + MUpdateModemLifecycleRequest
  • - MUpdateModemNotesRequest.Response + MUpdateModemLifecycleRequest.Response
  • - MUpdateModemSecureNotesRequest + MUpdateModemNotesRequest
  • - MUpdateModemSecureNotesRequest.Response + MUpdateModemNotesRequest.Response
  • - MUpdateModemStatusRequest + MUpdateModemSecureNotesRequest
  • - MUpdateModemStatusRequest.Response + MUpdateModemSecureNotesRequest.Response
  • @@ -598,11 +598,11 @@

    Table of Contents

  • - EModem.Peripherals.HiberAntenna + EModem.Lifecycle
  • - EModem.Status + EModem.Peripherals.HiberAntenna
  • @@ -703,6 +703,10 @@

    Table of Contents

    MFilter.Publishers
  • +
  • + MFilter.SupportPermissions +
  • +
  • MFilter.Tags
  • @@ -1415,84 +1419,6 @@

    ListValues.Sort

    -

    ValueAggregation

    -

    Get the values for the selected field.

    There are a few limitations here:

    - text fields can only use the LAST aggregation.

    - enum fields support a subset of aggregations:

    - DEFAULT and LAST return the last value.

    - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order.

    - AVERAGE and SUM are not supported.

    - enum duration

    An enum example:

    Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK

    - aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range.

    - aggregation SUM: OK: 35m, FAILED: 25m

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    DEFAULT0

    AVERAGE1

    Return the average value. -Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    SUM2

    Return the sum all values. -Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    LAST3

    Just take the last value.

    MINIMUM4

    Return the lowest value. -For enum fields, the order of values is used to determine the MINIMUM. -Not supported for textual fields. When used with these fields, LAST is used instead.

    MAXIMUM5

    Return the highest value. -For enum fields, the order of values is used to determine the MAXIMUM. -Not supported for textual fields. When used with these fields, LAST is used instead.

    - -

    ValueTransformation

    -

    Transform the values into a derived value.

    - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    DURATION0

    Instead of returning the value, return the amount of time a value was active. -Aggregation (if applicable) is applied afterwards on the duration value.

    DELTA1

    Instead of returning the value, return the difference between the value and the previous value. -Aggregation (if applicable) is applied before the delta is calculated.

    - @@ -2749,6 +2675,84 @@

    Value.Type

    +

    ValueAggregation

    +

    Get the values for the selected field.

    There are a few limitations here:

    - text fields can only use the LAST aggregation.

    - enum fields support a subset of aggregations:

    - DEFAULT and LAST return the last value.

    - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order.

    - AVERAGE and SUM are not supported.

    - enum duration

    An enum example:

    Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK

    - aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range.

    - aggregation SUM: OK: 35m, FAILED: 25m

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DEFAULT0

    AVERAGE1

    Return the average value. +Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    SUM2

    Return the sum all values. +Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    LAST3

    Just take the last value.

    MINIMUM4

    Return the lowest value. +For enum fields, the order of values is used to determine the MINIMUM. +Not supported for textual fields. When used with these fields, LAST is used instead.

    MAXIMUM5

    Return the highest value. +For enum fields, the order of values is used to determine the MAXIMUM. +Not supported for textual fields. When used with these fields, LAST is used instead.

    + +

    ValueTransformation

    +

    Transform the values into a derived value.

    + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DURATION0

    Instead of returning the value, return the amount of time a value was active. +Aggregation (if applicable) is applied afterwards on the duration value.

    DELTA1

    Instead of returning the value, return the difference between the value and the previous value. +Aggregation (if applicable) is applied before the delta is calculated.

    + @@ -2810,8 +2814,8 @@

    CreateModem.Request

    - status - Modem.Status + lifecycle + Modem.Lifecycle

    The status for the new modems.

    @@ -3600,8 +3604,8 @@

    Modem

    - status - Modem.Status + lifecycle + Modem.Lifecycle

    @@ -4564,7 +4568,7 @@

    ModemSelection

    only_active bool -

    +

    Deprecated. Use lifecycle filter instead.

    @@ -4603,11 +4607,11 @@

    ModemSelection

    - status - Modem.Status + lifecycles + Modem.Lifecycle repeated -

    Filter modems by status(es). -Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems.

    +

    Filter modems by lifecycle(s). +Defaults to nominal lifecycles, excluding disabled or decommissioned modems.

    @@ -4702,6 +4706,11 @@

    Fields with deprecated option

    + + only_active +

    true

    + + health

    true

    @@ -4937,7 +4946,7 @@

    RenameModemRequest

    -

    UpdateModemNotesRequest

    +

    UpdateModemLifecycleRequest

    @@ -4955,42 +4964,62 @@

    UpdateModemNotesRequest

    - selection - ModemSelection + modem_number + string -

    +

    Deprecated. Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible.

    - pagination - hiber.Pagination + modem_selection + ModemSelection -

    +

    Or a modem selection.

    - notes - string + update_lifecycle + Modem.Lifecycle -

    Notes content

    +

    The new status for the modem(s).

    - allow_override_existing_notes - bool + pagination + hiber.Pagination -

    When you try to set a new notes value to multiple modems, the API returns an error if their previous -values were different. Set this to true to apply it anyway.

    +

    Pagination for the modems in the Response.

    + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modem_number

    true

    + + -

    UpdateModemNotesRequest.Response

    +

    UpdateModemLifecycleRequest.Response

    @@ -5000,6 +5029,13 @@

    UpdateModemNotesRequest.Re + + modem + Modem + +

    Deprecated.

    + + modems Modem @@ -5009,7 +5045,7 @@

    UpdateModemNotesRequest.Re request - UpdateModemNotesRequest + UpdateModemLifecycleRequest

    @@ -5025,10 +5061,31 @@

    UpdateModemNotesRequest.Re + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modem

    true

    + + -

    UpdateModemSecureNotesRequest

    +

    UpdateModemNotesRequest

    @@ -5046,19 +5103,34 @@

    UpdateModemSecureNotesRequest - modem_number - string + selection + ModemSelection

    - secure_notes - string + pagination + hiber.Pagination

    + + notes + string + +

    Notes content

    + + + + allow_override_existing_notes + bool + +

    When you try to set a new notes value to multiple modems, the API returns an error if their previous +values were different. Set this to true to apply it anyway.

    + + @@ -5066,7 +5138,7 @@

    UpdateModemSecureNotesRequest -

    UpdateModemSecureNotesRequest.Response

    +

    UpdateModemNotesRequest.Response

    @@ -5077,15 +5149,22 @@

    UpdateModemSecureNot - modem + modems Modem - + repeated

    request - UpdateModemSecureNotesRequest + UpdateModemNotesRequest + +

    + + + + pagination + hiber.Pagination.Result

    @@ -5097,7 +5176,7 @@

    UpdateModemSecureNot -

    UpdateModemStatusRequest

    +

    UpdateModemSecureNotesRequest

    @@ -5118,59 +5197,24 @@

    UpdateModemStatusRequest

    modem_number string -

    Deprecated. Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible.

    - - - - modem_selection - ModemSelection - -

    Or a modem selection.

    - - - - update_status - Modem.Status - -

    The new status for the modem(s).

    +

    - pagination - hiber.Pagination + secure_notes + string -

    Pagination for the modems in the Response.

    +

    - - -

    Fields with deprecated option

    - - - - - - - - - - - - - - - -
    NameOption
    modem_number

    true

    - - -

    UpdateModemStatusRequest.Response

    +

    UpdateModemSecureNotesRequest.Response

    @@ -5184,26 +5228,12 @@

    UpdateModemStatusRequest. modem Modem -

    Deprecated.

    - - - - modems - Modem - repeated

    request - UpdateModemStatusRequest - -

    - - - - pagination - hiber.Pagination.Result + UpdateModemSecureNotesRequest

    @@ -5212,27 +5242,6 @@

    UpdateModemStatusRequest. - - -

    Fields with deprecated option

    - - - - - - - - - - - - - - - -
    NameOption
    modem

    true

    - - @@ -5535,6 +5544,18 @@

    ListModemsRequest.Sort

    Sort modem on its Status in reverse order.

    + + STATUS_ASC_ALPHABETICAL + 14 +

    Status sorted alphabetically by Status name.

    + + + + STATUS_DESC_ALPHABETICAL + 15 +

    Status sorted alphabetically by Status name, descending order.

    + + MODEM_NAME_ASC 6 @@ -5571,11 +5592,23 @@

    ListModemsRequest.Sort

    Health sorted from most to least severe (i.e. ERROR, WARNING, OK).

    + + HEALTH_ASC_ALPHABETICAL + 12 +

    Health sorted alphabetically by health level name.

    + + + + HEALTH_DESC_ALPHABETICAL + 13 +

    Health sorted alphabetically by health level name, descending order.

    + + -

    Modem.Peripherals.HiberAntenna

    -

    A Hiber antenna is required for the modem to function.

    +

    Modem.Lifecycle

    +

    @@ -5583,40 +5616,53 @@

    Modem.Peripherals.HiberAnten

    - + - + - + - + - - + + - - + + - + + + + + + + + + + + + +
    NameNumberDescription
    DEFAULTACCEPTANCE_TESTING 0

    Modem is deployed, but not active yet. Invisible for customer.

    HIBER_PANDAINSTALLED 1

    Modem is active and sending messages. +See health for more details on its health, based on the past messages.

    HIBER_GRIZZLY2PAUSED6

    HIBER_BLACK3DISABLED5

    CUSTOMDECOMMISSIONED 4

    DAMAGED2

    Kept for backwards compatibility. Internally mapped to decommissioned

    LOST3

    Kept for backwards compatibility. Internally mapped to decommissioned

    -

    Modem.Status

    -

    Modem statuses for its lifecycle.

    +

    Modem.Peripherals.HiberAntenna

    +

    A Hiber antenna is required for the modem to function.

    @@ -5626,40 +5672,33 @@

    Modem.Status

    - + - + - + - + - + - + - - - - - -
    NameNumberDescription
    DEFAULT 0

    Modem is in your inventory, but not deployed or active.

    ACTIVEHIBER_PANDA 1

    Modem is active and sending messages. -See health for more details on its health, based on the past messages.

    DAMAGEDHIBER_GRIZZLY 2

    LOSTHIBER_BLACK 3

    DEADCUSTOM 4

    DISABLED5

    @@ -5860,8 +5899,8 @@

    ModemService

    UpdateStatus - UpdateModemStatusRequest - UpdateModemStatusRequest.Response + UpdateModemLifecycleRequest + UpdateModemLifecycleRequest.Response

    Change the status of the selected modems to the given value.

    @@ -6508,6 +6547,37 @@

    Filter.Publishers

    +

    Filter.SupportPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeSupportPermissionrepeated

    excludeSupportPermissionrepeated

    + + + + +

    Filter.Tags

    diff --git a/docs/html/values.html b/docs/html/values.html index 82ac948..848395d 100644 --- a/docs/html/values.html +++ b/docs/html/values.html @@ -291,6 +291,14 @@

    Table of Contents

    EValue.Type +
  • + EValueAggregation +
  • + +
  • + EValueTransformation +
  • + @@ -373,6 +381,10 @@

    Table of Contents

    MFilter.Publishers +
  • + MFilter.SupportPermissions +
  • +
  • MFilter.Tags
  • @@ -1693,6 +1705,84 @@

    Value.Type

    +

    ValueAggregation

    +

    Get the values for the selected field.

    There are a few limitations here:

    - text fields can only use the LAST aggregation.

    - enum fields support a subset of aggregations:

    - DEFAULT and LAST return the last value.

    - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order.

    - AVERAGE and SUM are not supported.

    - enum duration

    An enum example:

    Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK

    - aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range.

    - aggregation SUM: OK: 35m, FAILED: 25m

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DEFAULT0

    AVERAGE1

    Return the average value. +Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    SUM2

    Return the sum all values. +Not supported for textual and enum fields. When used with these fields, LAST is used instead.

    LAST3

    Just take the last value.

    MINIMUM4

    Return the lowest value. +For enum fields, the order of values is used to determine the MINIMUM. +Not supported for textual fields. When used with these fields, LAST is used instead.

    MAXIMUM5

    Return the highest value. +For enum fields, the order of values is used to determine the MAXIMUM. +Not supported for textual fields. When used with these fields, LAST is used instead.

    + +

    ValueTransformation

    +

    Transform the values into a derived value.

    + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DURATION0

    Instead of returning the value, return the amount of time a value was active. +Aggregation (if applicable) is applied afterwards on the duration value.

    DELTA1

    Instead of returning the value, return the difference between the value and the previous value. +Aggregation (if applicable) is applied before the delta is calculated.

    + @@ -2296,6 +2386,37 @@

    Filter.Publishers

    +

    Filter.SupportPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeSupportPermissionrepeated

    excludeSupportPermissionrepeated

    + + + + +

    Filter.Tags

    diff --git a/docs/html/webhook.html b/docs/html/webhook.html index cb59cc3..d42c551 100644 --- a/docs/html/webhook.html +++ b/docs/html/webhook.html @@ -476,6 +476,10 @@

    Table of Contents

    MFilter.Publishers +
  • + MFilter.SupportPermissions +
  • +
  • MFilter.Tags
  • @@ -3409,6 +3413,37 @@

    Filter.Publishers

    +

    Filter.SupportPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeSupportPermissionrepeated

    excludeSupportPermissionrepeated

    + + + + +

    Filter.Tags

    diff --git a/docs/md/assignment.md b/docs/md/assignment.md index c424774..5ab4f1a 100644 --- a/docs/md/assignment.md +++ b/docs/md/assignment.md @@ -94,8 +94,8 @@ - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) @@ -183,6 +183,7 @@ - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -1071,7 +1072,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | | active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | | technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | | peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | @@ -1099,13 +1100,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | | include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | @@ -1130,12 +1131,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +#### hiber.modem.Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | #### hiber.modem.Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -1148,18 +1166,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - #### hiber.modem.Modem.Transfer.Status @@ -2088,6 +2094,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/easypulse.md b/docs/md/easypulse.md index 5b89de5..dffd836 100644 --- a/docs/md/easypulse.md +++ b/docs/md/easypulse.md @@ -23,6 +23,12 @@ somewhat customized Asset model. - [Easypulse.Asset.LastUpdate](#easypulseassetlastupdate) - [Easypulse.Asset.PeripheralsEntry](#easypulseassetperipheralsentry) - [Easypulse.AssetSelection](#easypulseassetselection) + - [Easypulse.Fields](#easypulsefields) + - [Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) + - [Easypulse.Fields.PTOEngagement](#easypulsefieldsptoengagement) + - [Easypulse.Fields.Request](#easypulsefieldsrequest) + - [Easypulse.Fields.Response](#easypulsefieldsresponse) + - [Easypulse.Fields.StateBasedFields](#easypulsefieldsstatebasedfields) - [Easypulse.History](#easypulsehistory) - [Easypulse.History.Request](#easypulsehistoryrequest) - [Easypulse.History.Response](#easypulsehistoryresponse) @@ -65,6 +71,48 @@ somewhat customized Asset model. - [hiber.tag.TagSelection](#hibertagtagselection) +- Referenced messages from [value.proto](#referenced-messages-from-valueproto) + - [hiber.value.Value](#hibervaluevalue) + - [hiber.value.Value.Enum](#hibervaluevalueenum) + - [hiber.value.Value.Numeric](#hibervaluevaluenumeric) + - [hiber.value.Value.Numeric.BatteryLevel](#hibervaluevaluenumericbatterylevel) + - [hiber.value.Value.Numeric.Distance](#hibervaluevaluenumericdistance) + - [hiber.value.Value.Numeric.Flow](#hibervaluevaluenumericflow) + - [hiber.value.Value.Numeric.FuelEfficiency](#hibervaluevaluenumericfuelefficiency) + - [hiber.value.Value.Numeric.Mass](#hibervaluevaluenumericmass) + - [hiber.value.Value.Numeric.Percentage](#hibervaluevaluenumericpercentage) + - [hiber.value.Value.Numeric.Pressure](#hibervaluevaluenumericpressure) + - [hiber.value.Value.Numeric.Speed](#hibervaluevaluenumericspeed) + - [hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) + - [hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) + - [hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) + - Enums + - [hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) + - [hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) + - [hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) + - [hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) + - [hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) + - [hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) + - [hiber.value.Value.Numeric.Percentage.Unit](#hibervaluevaluenumericpercentageunit) + - [hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) + - [hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) + - [hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) + - [hiber.value.Value.Numeric.Type](#hibervaluevaluenumerictype) + - [hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) + - [hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) + - [hiber.value.Value.Type](#hibervaluevaluetype) + - [hiber.value.ValueAggregation](#hibervaluevalueaggregation) + - [hiber.value.ValueTransformation](#hibervaluevaluetransformation) + +- Referenced messages from [field.proto](#referenced-messages-from-fieldproto) + - [hiber.field.Field](#hiberfieldfield) + - [hiber.field.Field.Enum](#hiberfieldfieldenum) + - [hiber.field.Field.Numeric](#hiberfieldfieldnumeric) + - [hiber.field.Field.Numeric.Format](#hiberfieldfieldnumericformat) + - [hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) + + - [hiber.field.Field.Numeric.Format.RoundingMode](#hiberfieldfieldnumericformatroundingmode) + - Referenced messages from [base.proto](#referenced-messages-from-baseproto) - [hiber.Area](#hiberarea) - [hiber.Avatar](#hiberavatar) @@ -84,6 +132,7 @@ somewhat customized Asset model. - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -129,6 +178,12 @@ Fails when your organizations does not have the Easypulse feature. List the history for a single field, and optionally apply an aggregation and/or grouping to it. Deprecated in favor of the ValueService. +### Fields +> **rpc** Fields([Easypulse.Fields.Request](#easypulsefieldsrequest)) + [Easypulse.Fields.Response](#easypulsefieldsresponse) + +List the fields for Easypulse, so they can be used with other services. + ### TargetValues > **rpc** TargetValues([Easypulse.TargetValues.List.Request](#easypulsetargetvalueslistrequest)) [Easypulse.TargetValues.List.Response](#easypulsetargetvalueslistresponse) @@ -230,6 +285,74 @@ An AssetSelection is used to select which Assets should be affected: | health_levels | [repeated string](#string) | Select assets by health level. | | filter_by_tags | [ hiber.tag.TagSelection](#hibertagtagselection) | Select assets by tag. | +### Easypulse.Fields + +List the fields for the easypulse organization, to be used with the value service, for example. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| odometer | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| max_rpm | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| max_speed | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| battery_level | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| fuel_level | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| fuel_used | [ Easypulse.Fields.StateBasedFields](#easypulsefieldsstatebasedfields) | Fuel usage while in different states of usage. | +| engine_time | [ Easypulse.Fields.StateBasedFields](#easypulsefieldsstatebasedfields) | Time spent in different states of usage. | +| engine_oil_temperature | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| pto_engagement | [ Easypulse.Fields.PTOEngagement](#easypulsefieldsptoengagement) | none | + +### Easypulse.Fields.EasypulseField + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| field | [ hiber.field.Field](#hiberfieldfield) | none | +| default_aggregation | [ hiber.value.ValueAggregation](#hibervaluevalueaggregation) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_default_transformation**.default_transformation | [optional hiber.value.ValueTransformation](#hibervaluevaluetransformation) | none | +| default_partition | [ hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **target_value**.target_value_duration | [ Easypulse.TargetValues.DurationTargetValue](#easypulsetargetvaluesdurationtargetvalue) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **target_value**.target_value_distance | [ Easypulse.TargetValues.DistanceTargetValue](#easypulsetargetvaluesdistancetargetvalue) | none | + +### Easypulse.Fields.PTOEngagement + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| count | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| time | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | + +### Easypulse.Fields.Request + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_modem**.modem | [optional string](#string) | Request the fields for a specific modem. The fields are always the same, but the defaults and target values may be different. | +| apply_unit_preferences | [ bool](#bool) | Whether to apply the unit preferences to the fields. This will convert any fields into your preferred unit, for convenience. | + +### Easypulse.Fields.Response + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| fields | [ Easypulse.Fields](#easypulsefields) | none | +| request | [ Easypulse.Fields.Request](#easypulsefieldsrequest) | none | + +### Easypulse.Fields.StateBasedFields + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| on | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| running | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| idle | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | +| off | [ Easypulse.Fields.EasypulseField](#easypulsefieldseasypulsefield) | none | + ### Easypulse.History List the history for a single field, and optionally apply an aggregation and/or grouping to it. @@ -724,6 +847,458 @@ so not all messages listed here are referenced.) ### Enums +## Referenced messages from value.proto +(Note that these are included because there is a proto dependency on the file, +so not all messages listed here are referenced.) + +#### This section was generated from [value.proto](https://github.com/HiberGlobal/api/blob/master/value.proto). + + +### hiber.value.Value + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| type | [ hiber.value.Value.Type](#hibervaluevaluetype) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.numeric | [ hiber.value.Value.Numeric](#hibervaluevaluenumeric) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.text | [ string](#string) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.enum | [ hiber.value.Value.Enum](#hibervaluevalueenum) | none | + +### hiber.value.Value.Enum + +If this value is an enum, this specifies the value, display name and color for this enum value. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ string](#string) | The enum value. This might be a cryptic value, see the display_name and description for more information. | +| display_name | [ string](#string) | User-facing name for this value. | +| description | [ string](#string) | More details for this enum value. | +| color | [ string](#string) | (Optional) color for this enum value. | +| priority | [ int32](#int32) | Priority of the value, typically used for ordering. | + +### hiber.value.Value.Numeric + +If the value is numeric, this specifies the unit, value, etc. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| type | [ hiber.value.Value.Numeric.Type](#hibervaluevaluenumerictype) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.battery_level | [ hiber.value.Value.Numeric.BatteryLevel](#hibervaluevaluenumericbatterylevel) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.distance | [ hiber.value.Value.Numeric.Distance](#hibervaluevaluenumericdistance) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.duration | [ hiber.Duration](#hiberduration) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.fuel_efficiency | [ hiber.value.Value.Numeric.FuelEfficiency](#hibervaluevaluenumericfuelefficiency) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.percentage | [ hiber.value.Value.Numeric.Percentage](#hibervaluevaluenumericpercentage) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.pressure | [ hiber.value.Value.Numeric.Pressure](#hibervaluevaluenumericpressure) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.speed | [ hiber.value.Value.Numeric.Speed](#hibervaluevaluenumericspeed) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.temperature | [ hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.voltage | [ hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.volume | [ hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.mass | [ hiber.value.Value.Numeric.Mass](#hibervaluevaluenumericmass) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.flow | [ hiber.value.Value.Numeric.Flow](#hibervaluevaluenumericflow) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.unknown | [ double](#double) | none | + +### hiber.value.Value.Numeric.BatteryLevel + +Special case for battery level, since it can be provided in many units. +Not included in the UnitPreferences, since it cannot be converted. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Distance + +The value is a distance value, converted to your preferred distance unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Flow + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.FuelEfficiency + +The value is a distance value, converted to your preferred distance unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Mass + +The value is a volume value, converted to your preferred volume unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Percentage + +The value is a percentage. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ float](#float) | none | +| unit | [ hiber.value.Value.Numeric.Percentage.Unit](#hibervaluevaluenumericpercentageunit) | none | +| textual | [ string](#string) | Textual representation with % symbol, rounded based on the user preferences and field config. | + +### hiber.value.Value.Numeric.Pressure + +The value is a pressure value, converted to your preferred pressure unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Speed + +The value is a speed value, converted to your preferred speed unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Temperature + +The value is a temperature, converted to your preferred temperature unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Voltage + +The value is a voltage, converted to your preferred voltage unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Volume + +The value is a volume value, converted to your preferred volume unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | The original unit, iff this value was converted from another unit because of user preferences. | + + +### Enums +#### hiber.value.Value.Numeric.BatteryLevel.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| PERCENT | Battery level as a percentage (technically not a unit). + +other units will be added here later, like voltage | 0 | + +#### hiber.value.Value.Numeric.Distance.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| METER | none | 0 | +| MILLIMETER | none | 1 | +| CENTIMETER | none | 2 | +| KILOMETER | none | 3 | +| YARD | none | 5 | +| MILE | none | 4 | +| FOOT | none | 6 | +| INCH | none | 7 | +| NAUTICAL_MILE | This is a special case unit and may not be auto-converted to your UnitPreference. | 8 | + +#### hiber.value.Value.Numeric.DurationUnit +The duration enum is not wrapped in Duration, since duration is always returned as a normalize Duration. +This unit is still used for fields, however. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| MILLISECONDS | none | 0 | +| SECONDS | none | 1 | +| MINUTES | none | 2 | +| HOURS | none | 3 | +| DAYS | none | 4 | +| WEEKS | none | 5 | + +#### hiber.value.Value.Numeric.Flow.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| CUBIC_METER_PER_HOUR | none | 0 | + +#### hiber.value.Value.Numeric.FuelEfficiency.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| LITER_PER_100_KILOMETER | none | 0 | +| KILOMETER_PER_LITER | none | 1 | +| KILOMETER_PER_GALLON | none | 2 | +| KILOMETER_PER_IMPERIAL_GALLON | none | 3 | +| MILE_PER_GALLON | none | 4 | +| MILE_PER_IMPERIAL_GALLON | none | 5 | +| MILE_PER_LITER | none | 6 | + +#### hiber.value.Value.Numeric.Mass.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| KILOGRAMS | none | 0 | +| POUNDS | none | 1 | + +#### hiber.value.Value.Numeric.Percentage.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| PERCENT | Technically not a unit, but for consistency, we've added it here. | 0 | + +#### hiber.value.Value.Numeric.Pressure.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| BAR | none | 0 | +| PSI | none | 1 | +| K_PA | none | 2 | + +#### hiber.value.Value.Numeric.Speed.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| KILOMETERS_PER_HOUR | none | 0 | +| KNOTS | This is a special case unit and may not be auto-converted to your UnitPreference. | 1 | +| METERS_PER_SECOND | none | 2 | +| MILES_PER_HOUR | none | 3 | + +#### hiber.value.Value.Numeric.Temperature.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| KELVIN | none | 0 | +| DEGREES_CELSIUS | none | 1 | +| DEGREES_FAHRENHEIT | none | 2 | + +#### hiber.value.Value.Numeric.Type +The type of numeric value that is represented. +Supported types will automatically convert to the preferred unit (based on the user settings). + +| Name | Description | Number | +| ---- | ----------- | ------ | +| TYPE_UNKNOWN | none | 0 | +| PERCENTAGE | none | 1 | +| TEMPERATURE | none | 2 | +| DISTANCE | none | 3 | +| PRESSURE | none | 4 | +| VOLTAGE | none | 5 | +| SPEED | none | 6 | +| VOLUME | none | 7 | +| DURATION | none | 8 | +| FUEL_EFFICIENCY | none | 9 | +| MASS | none | 10 | +| BATTERY_LEVEL | none | 11 | +| FLOW | none | 12 | + +#### hiber.value.Value.Numeric.Voltage.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| MILLIVOLT | none | 0 | + +#### hiber.value.Value.Numeric.Volume.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| LITER | none | 0 | +| GALLON_US | none | 1 | +| GALLON_IMPERIAL | none | 2 | +| CUBIC_METER | none | 3 | +| CUBIC_FEET | none | 4 | + +#### hiber.value.Value.Type +The type of value that is represented. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| OTHER | none | 0 | +| NUMERIC | This field contains numeric values, with an optional unit of measurement defined below. | 1 | +| TEXT | This field contains text to be displayed. | 2 | +| ENUM | This field switches between several predefined values. Typically used for status fields. | 3 | + +#### hiber.value.ValueAggregation +Get the values for the selected field. + +There are a few limitations here: +- text fields can only use the LAST aggregation. +- enum fields support a subset of aggregations: + - DEFAULT and LAST return the last value. + - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. + - AVERAGE and SUM are not supported. + +- enum duration + +An enum example: +Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK +- aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. +- aggregation SUM: OK: 35m, FAILED: 25m + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| AVERAGE | Return the average value. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 1 | +| SUM | Return the sum all values. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 2 | +| LAST | Just take the last value. | 3 | +| MINIMUM | Return the lowest value. For enum fields, the order of values is used to determine the MINIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 4 | +| MAXIMUM | Return the highest value. For enum fields, the order of values is used to determine the MAXIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 5 | + +#### hiber.value.ValueTransformation +Transform the values into a derived value. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DURATION | Instead of returning the value, return the amount of time a value was active. Aggregation (if applicable) is applied afterwards on the duration value. | 0 | +| DELTA | Instead of returning the value, return the difference between the value and the previous value. Aggregation (if applicable) is applied before the delta is calculated. | 1 | + + + +## Referenced messages from field.proto +(Note that these are included because there is a proto dependency on the file, +so not all messages listed here are referenced.) + +#### This section was generated from [field.proto](https://github.com/HiberGlobal/api/blob/master/field.proto). + + +### hiber.field.Field + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| identifier | [ string](#string) | Unique identifier for this field. | +| field | [ string](#string) | The name of the field (if in the root structure) or a JsonPath to the field. | +| display_name | [ string](#string) | An optional display name for the field. | +| priority | [ int32](#int32) | Priority of the field, typically used for ordering. | +| type | [ hiber.value.Value.Type](#hibervaluevaluetype) | The type of value the field contains. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **details**.numeric | [ hiber.field.Field.Numeric](#hiberfieldfieldnumeric) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **details**.enum | [ hiber.field.Field.Enum](#hiberfieldfieldenum) | none | +| encrypted | [ bool](#bool) | Whether this field should be stored encrypted or not. If it is, some processing options may be unavailable or slower. | +| optional | [ bool](#bool) | Whether this field should be validated from the parser output. | +| unit_of_measurement | [ hiber.UnitOfMeasurement](#hiberunitofmeasurement) | If numeric, the unit of the field. Deprecated: use numeric.numeric_unit oneof instead | +| unit_symbol | [ string](#string) | The symbol for the unit. Deprecated: use numeric.symbol instead | + +### hiber.field.Field.Enum + +If the field is an enum, this specifies the enum values for the field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| values | [repeated hiber.value.Value.Enum](#hibervaluevalueenum) | none | + +### hiber.field.Field.Numeric + +If the field is numeric, this specifies the unit and formatting details for the field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| type | [ hiber.value.Value.Numeric.Type](#hibervaluevaluenumerictype) | The type of numeric value. | +| symbol | [ string](#string) | The symbol to use for the field's unit. | +| format | [ hiber.field.Field.Numeric.Format](#hiberfieldfieldnumericformat) | How to format the values (number of decimals, rounding, etc.). | +| unit | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | The unit for the field, depending on the type. | +| converted_from | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | If the unit preferences were applied, and the unit is different, the field will be converted to the preferred unit, from the original unit specified in this field. | + +### hiber.field.Field.Numeric.Format + +Formatting options for the field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **round**.round_to_integer | [ bool](#bool) | Round to an integer. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **round**.round_to_scale | [ uint32](#uint32) | Round to a number of decimals (at least 1). | +| rounding_mode | [ hiber.field.Field.Numeric.Format.RoundingMode](#hiberfieldfieldnumericformatroundingmode) | How to round the value when scale is applied. | + +### hiber.field.Field.Numeric.Unit + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.battery_level | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.distance | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.duration | [ hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.fuel_efficiency | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.flow | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.percentage | [ hiber.value.Value.Numeric.Percentage.Unit](#hibervaluevaluenumericpercentageunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.pressure | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.speed | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.temperature | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.voltage | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.volume | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.mass | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | none | + + +### Enums +#### hiber.field.Field.Numeric.Format.RoundingMode +How to round the value when scale is applied. +For example, a value of 3.1415 with scale 3 could be + 4.141 (DOWN, HALF_DOWN, FLOOR) or + 4.142 (HALF_UP, UP, CEILING). + +| Name | Description | Number | +| ---- | ----------- | ------ | +| HALF_UP | Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up Effectively round up when >= .5, otherwise round down. | 0 | +| HALF_DOWN | Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. Effectively round up when > .5, otherwise round down. | 1 | +| UP | Round away from zero: 1.1 -> 2, while -1.1 -> -2. | 3 | +| DOWN | Round towards zero: 1.1 -> 1, while -1.1 -> -1. | 4 | +| CEILING | Round towards positive infinity. | 5 | +| FLOOR | Round towards negative infinity. | 6 | +| HALF_EVEN | Round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. Effectively round up when >= .5 and next integer value is even, otherwise round down. | 7 | + + + ## Referenced messages from base.proto (Note that these are included because there is a proto dependency on the file, so not all messages listed here are referenced.) @@ -928,6 +1503,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/event.md b/docs/md/event.md index a8fa536..7f54c91 100644 --- a/docs/md/event.md +++ b/docs/md/event.md @@ -162,6 +162,7 @@ - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -251,8 +252,8 @@ - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) @@ -2321,6 +2322,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags @@ -3333,7 +3343,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | | active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | | technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | | peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | @@ -3361,13 +3371,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | | include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | @@ -3392,12 +3402,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +#### hiber.modem.Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | #### hiber.modem.Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -3410,18 +3437,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - #### hiber.modem.Modem.Transfer.Status diff --git a/docs/md/field_service.md b/docs/md/field_service.md index 292b6db..0c6f25b 100644 --- a/docs/md/field_service.md +++ b/docs/md/field_service.md @@ -55,7 +55,7 @@ - [hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) - [hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) - [hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) - + - Enums - [hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) - [hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) - [hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) @@ -70,14 +70,16 @@ - [hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) - [hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) - [hiber.value.Value.Type](#hibervaluevaluetype) + - [hiber.value.ValueAggregation](#hibervaluevalueaggregation) + - [hiber.value.ValueTransformation](#hibervaluevaluetransformation) - Referenced messages from [modem.proto](#referenced-messages-from-modemproto) - [hiber.modem.Modem](#hibermodemmodem) - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) @@ -744,6 +746,40 @@ The type of value that is represented. | TEXT | This field contains text to be displayed. | 2 | | ENUM | This field switches between several predefined values. Typically used for status fields. | 3 | +#### hiber.value.ValueAggregation +Get the values for the selected field. + +There are a few limitations here: +- text fields can only use the LAST aggregation. +- enum fields support a subset of aggregations: + - DEFAULT and LAST return the last value. + - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. + - AVERAGE and SUM are not supported. + +- enum duration + +An enum example: +Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK +- aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. +- aggregation SUM: OK: 35m, FAILED: 25m + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| AVERAGE | Return the average value. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 1 | +| SUM | Return the sum all values. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 2 | +| LAST | Just take the last value. | 3 | +| MINIMUM | Return the lowest value. For enum fields, the order of values is used to determine the MINIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 4 | +| MAXIMUM | Return the highest value. For enum fields, the order of values is used to determine the MAXIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 5 | + +#### hiber.value.ValueTransformation +Transform the values into a derived value. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DURATION | Instead of returning the value, return the amount of time a value was active. Aggregation (if applicable) is applied afterwards on the duration value. | 0 | +| DELTA | Instead of returning the value, return the difference between the value and the previous value. Aggregation (if applicable) is applied before the delta is calculated. | 1 | + ## Referenced messages from modem.proto @@ -772,7 +808,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | | active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | | technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | | peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | @@ -800,13 +836,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | | include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | @@ -831,12 +867,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +#### hiber.modem.Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | #### hiber.modem.Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -849,18 +902,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - #### hiber.modem.Modem.Transfer.Status diff --git a/docs/md/map.md b/docs/md/map.md index fbfe7d3..c20836d 100644 --- a/docs/md/map.md +++ b/docs/md/map.md @@ -94,6 +94,7 @@ a controlled amount of groups. - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -487,6 +488,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/message.md b/docs/md/message.md index ad8b2ea..b225247 100644 --- a/docs/md/message.md +++ b/docs/md/message.md @@ -35,6 +35,49 @@ Message management. - [MessageBodyFieldHistory.Request.Aggregation](#messagebodyfieldhistoryrequestaggregation) - [MessageBodyFieldHistory.Request.Sort](#messagebodyfieldhistoryrequestsort) +- Referenced messages from [base.proto](#referenced-messages-from-baseproto) + - [hiber.Area](#hiberarea) + - [hiber.Avatar](#hiberavatar) + - [hiber.BytesOrHex](#hiberbytesorhex) + - [hiber.BytesOrHex.Update](#hiberbytesorhexupdate) + - [hiber.Date](#hiberdate) + - [hiber.DoubleRange](#hiberdoublerange) + - [hiber.Duration](#hiberduration) + - [hiber.Filter](#hiberfilter) + - [hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) + - [hiber.Filter.ChildOrganizations.Update](#hiberfilterchildorganizationsupdate) + - [hiber.Filter.Events](#hiberfilterevents) + - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) + - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.Modems](#hiberfiltermodems) + - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) + - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) + - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) + - [hiber.Filter.Tags](#hiberfiltertags) + - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) + - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) + - [hiber.Filter.Users](#hiberfilterusers) + - [hiber.Filter.Webhooks](#hiberfilterwebhooks) + - [hiber.Location](#hiberlocation) + - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.NamedFile](#hibernamedfile) + - [hiber.Pagination](#hiberpagination) + - [hiber.Pagination.Result](#hiberpaginationresult) + - [hiber.Shape](#hibershape) + - [hiber.TimeRange](#hibertimerange) + - [hiber.Timestamp](#hibertimestamp) + - [hiber.UpdateBoolean](#hiberupdateboolean) + - [hiber.UpdateClearableString](#hiberupdateclearablestring) + - [hiber.UpdateOptionalDuration](#hiberupdateoptionalduration) + - [hiber.UpdateOptionalId](#hiberupdateoptionalid) + - [hiber.UpdateZeroableInt](#hiberupdatezeroableint) + - Enums + - [hiber.EventType](#hibereventtype) + - [hiber.Health](#hiberhealth) + - [hiber.UnitOfMeasurement](#hiberunitofmeasurement) + - Referenced messages from [field.proto](#referenced-messages-from-fieldproto) - [hiber.field.Field](#hiberfieldfield) - [hiber.field.Field.Enum](#hiberfieldfieldenum) @@ -49,12 +92,18 @@ Message management. - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) +- Referenced messages from [tag.proto](#referenced-messages-from-tagproto) + - [hiber.tag.Tag](#hibertagtag) + - [hiber.tag.Tag.Label](#hibertagtaglabel) + - [hiber.tag.TagSelection](#hibertagtagselection) + + - Referenced messages from [value.proto](#referenced-messages-from-valueproto) - [hiber.value.Value](#hibervaluevalue) - [hiber.value.Value.Enum](#hibervaluevalueenum) @@ -70,7 +119,7 @@ Message management. - [hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) - [hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) - [hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) - + - Enums - [hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) - [hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) - [hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) @@ -85,47 +134,8 @@ Message management. - [hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) - [hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) - [hiber.value.Value.Type](#hibervaluevaluetype) - -- Referenced messages from [base.proto](#referenced-messages-from-baseproto) - - [hiber.Area](#hiberarea) - - [hiber.Avatar](#hiberavatar) - - [hiber.BytesOrHex](#hiberbytesorhex) - - [hiber.BytesOrHex.Update](#hiberbytesorhexupdate) - - [hiber.Date](#hiberdate) - - [hiber.DoubleRange](#hiberdoublerange) - - [hiber.Duration](#hiberduration) - - [hiber.Filter](#hiberfilter) - - [hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) - - [hiber.Filter.ChildOrganizations.Update](#hiberfilterchildorganizationsupdate) - - [hiber.Filter.Events](#hiberfilterevents) - - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - - [hiber.Filter.Modems](#hiberfiltermodems) - - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - - [hiber.Filter.Organizations](#hiberfilterorganizations) - - [hiber.Filter.Publishers](#hiberfilterpublishers) - - [hiber.Filter.Tags](#hiberfiltertags) - - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) - - [hiber.Filter.Users](#hiberfilterusers) - - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - - [hiber.Location](#hiberlocation) - - [hiber.LocationSelection](#hiberlocationselection) - - [hiber.NamedFile](#hibernamedfile) - - [hiber.Pagination](#hiberpagination) - - [hiber.Pagination.Result](#hiberpaginationresult) - - [hiber.Shape](#hibershape) - - [hiber.TimeRange](#hibertimerange) - - [hiber.Timestamp](#hibertimestamp) - - [hiber.UpdateBoolean](#hiberupdateboolean) - - [hiber.UpdateClearableString](#hiberupdateclearablestring) - - [hiber.UpdateOptionalDuration](#hiberupdateoptionalduration) - - [hiber.UpdateOptionalId](#hiberupdateoptionalid) - - [hiber.UpdateZeroableInt](#hiberupdatezeroableint) - - Enums - - [hiber.EventType](#hibereventtype) - - [hiber.Health](#hiberhealth) - - [hiber.UnitOfMeasurement](#hiberunitofmeasurement) + - [hiber.value.ValueAggregation](#hibervaluevalueaggregation) + - [hiber.value.ValueTransformation](#hibervaluevaluetransformation) - [Scalar Value Types](#scalar-value-types) @@ -267,7 +277,7 @@ Deprecated wrapper for backwards compatibility ### Message Message received from a device in the field. -Messages have a number of default field, like sent time and received time, and location. In addition, depending on the +Messages have a number of default field, like sent and received time, and location. In addition, depending on the assigned body parsers, messages have a number of body fields with values. | Field | Type | Description | @@ -325,8 +335,8 @@ Request to get the history of (a) field(s), for the selected modems in the organ | sort | [ MessageBodyFieldHistory.Request.Sort](#messagebodyfieldhistoryrequestsort) | none | | [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **group**.split_by_duration | [ hiber.Duration](#hiberduration) | Split up the data in time block of the given size. | | [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **group**.reduce_to_max_size | [ uint32](#uint32) | Limit the results to the given amount of data points, applying the function to each chunk. | -| message_body_fields | [repeated string](#string) | Get the history for the selected fields. | -| include_location | [ bool](#bool) | Get the history for the location. Locations cannot be summed, or averaged, so default to the LAST aggregation when aggregating. | +| message_body_fields | [repeated string](#string) | Get the history for the selected fields. Text and Enum fields cannot be summed, or averaged, they always use LAST aggregation when aggregating. | +| include_location | [ bool](#bool) | Get the history for the location. Locations cannot be summed, or averaged, they always use LAST aggregation when aggregating. | | exclude_empty_groups | [ bool](#bool) | Whether to exclude empty groups when grouping. Empty groups are included by default. | ### MessageBodyFieldHistory.Response @@ -384,6 +394,8 @@ Options to aggregate the history data points (in a group). | AVERAGE | Average value of all history data points (in a group). | 1 | | SUM | Sum all history data points (in a group). | 2 | | LAST | Just take the last value (in a group). | 3 | +| MINIMUM | Take the lowest value (in a group). | 4 | +| MAXIMUM | Take the highest value (in a group). | 5 | ### MessageBodyFieldHistory.Request.Sort How to sort the returned values. @@ -395,1122 +407,1223 @@ How to sort the returned values. -## Referenced messages from field.proto +## Referenced messages from base.proto (Note that these are included because there is a proto dependency on the file, so not all messages listed here are referenced.) -#### This section was generated from [field.proto](https://github.com/HiberGlobal/api/blob/master/field.proto). +#### This section was generated from [base.proto](https://github.com/HiberGlobal/api/blob/master/base.proto). -### hiber.field.Field +### hiber.Area +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 | Description | | ----- | ---- | ----------- | -| identifier | [ string](#string) | Unique identifier for this field. | -| field | [ string](#string) | The name of the field (if in the root structure) or a JsonPath to the field. | -| display_name | [ string](#string) | An optional display name for the field. | -| priority | [ int32](#int32) | Priority of the field, typically used for ordering. | -| type | [ hiber.value.Value.Type](#hibervaluevaluetype) | The type of value the field contains. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **details**.numeric | [ hiber.field.Field.Numeric](#hiberfieldfieldnumeric) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **details**.enum | [ hiber.field.Field.Enum](#hiberfieldfieldenum) | none | -| encrypted | [ bool](#bool) | Whether this field should be stored encrypted or not. If it is, some processing options may be unavailable or slower. | -| unit_of_measurement | [ hiber.UnitOfMeasurement](#hiberunitofmeasurement) | If numeric, the unit of the field. Deprecated: use numeric.numeric_unit oneof instead | -| unit_symbol | [ string](#string) | The symbol for the unit. Deprecated: use numeric.symbol instead | +| center | [ hiber.Location](#hiberlocation) | none | +| bottom_left | [ hiber.Location](#hiberlocation) | none | +| top_right | [ hiber.Location](#hiberlocation) | none | +| textual | [ string](#string) | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. | -### hiber.field.Field.Enum +### hiber.Avatar -If the field is an enum, this specifies the enum values for the field. +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 | Description | | ----- | ---- | ----------- | -| values | [repeated hiber.value.Value.Enum](#hibervaluevalueenum) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **url_or_image**.url | [ string](#string) | A URL that contains the location of avatar. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **url_or_image**.image | [ hiber.NamedFile](#hibernamedfile) | The data of the avatar as a Named File. | -### hiber.field.Field.Numeric +### hiber.BytesOrHex -If the field is numeric, this specifies the unit and formatting details for the field. +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 | Description | | ----- | ---- | ----------- | -| type | [ hiber.value.Value.Numeric.Type](#hibervaluevaluenumerictype) | The type of numeric value. | -| symbol | [ string](#string) | The symbol to use for the field's unit. | -| format | [ hiber.field.Field.Numeric.Format](#hiberfieldfieldnumericformat) | How to format the values (number of decimals, rounding, etc.). | -| unit | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | The unit for the field, depending on the type. | -| converted_from | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | If the unit preferences were applied, and the unit is different, the field will be converted to the preferred unit, from the original unit specified in this field. | +| bytes | [ bytes](#bytes) | none | +| hex | [ string](#string) | none | + +### hiber.BytesOrHex.Update -### hiber.field.Field.Numeric.Format -Formatting options for the field. | Field | Type | Description | | ----- | ---- | ----------- | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **round**.round_to_integer | [ bool](#bool) | Round to an integer. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **round**.round_to_scale | [ uint32](#uint32) | Round to a number of decimals (at least 1). | -| rounding_mode | [ hiber.field.Field.Numeric.Format.RoundingMode](#hiberfieldfieldnumericformatroundingmode) | How to round the value when scale is applied. | +| updated | [ bool](#bool) | none | +| value | [ hiber.BytesOrHex](#hiberbytesorhex) | none | -### hiber.field.Field.Numeric.Unit +### hiber.Date + +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 | Description | | ----- | ---- | ----------- | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.battery_level | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.distance | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.duration | [ hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.fuel_efficiency | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.flow | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.percentage | [ hiber.value.Value.Numeric.Percentage.Unit](#hibervaluevaluenumericpercentageunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.pressure | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.speed | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.temperature | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.voltage | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.volume | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.mass | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | none | +| year | [ uint32](#uint32) | none | +| month | [ uint32](#uint32) | none | +| day | [ uint32](#uint32) | none | +| textual | [ string](#string) | none | +### hiber.DoubleRange -### Enums -#### hiber.field.Field.Numeric.Format.RoundingMode -How to round the value when scale is applied. -For example, a value of 3.1415 with scale 3 could be - 4.141 (DOWN, HALF_DOWN, FLOOR) or - 4.142 (HALF_UP, UP, CEILING). +Decimal range. -| Name | Description | Number | -| ---- | ----------- | ------ | -| HALF_UP | Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up Effectively round up when >= .5, otherwise round down. | 0 | -| HALF_DOWN | Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. Effectively round up when > .5, otherwise round down. | 1 | -| UP | Round away from zero: 1.1 -> 2, while -1.1 -> -2. | 3 | -| DOWN | Round towards zero: 1.1 -> 1, while -1.1 -> -1. | 4 | -| CEILING | Round towards positive infinity. | 5 | -| FLOOR | Round towards negative infinity. | 6 | -| HALF_EVEN | Round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. Effectively round up when >= .5 and next integer value is even, otherwise round down. | 7 | +| Field | Type | Description | +| ----- | ---- | ----------- | +| start | [ double](#double) | none | +| end | [ double](#double) | none | +### hiber.Duration -## Referenced messages from modem.proto -(Note that these are included because there is a proto dependency on the file, -so not all messages listed here are referenced.) -#### This section was generated from [modem.proto](https://github.com/HiberGlobal/api/blob/master/modem.proto). +| Field | Type | Description | +| ----- | ---- | ----------- | +| duration | [ google.protobuf.Duration](#googleprotobufduration) | none | +| textual | [ string](#string) | none | +### hiber.Filter -### hiber.modem.Modem +Filters used in many api calls to filter the data sources, results, etc. -Modem data, including location and last message (if available). -Location, last message and firmware version can be updated by messages, the rest is typically either set -when the modem is registered into the system or when a subscription is authorized. +"Include" fields filter out anything not in the include set. +When not set, all items will be returned (except excluded items) -| Field | Type | Description | -| ----- | ---- | ----------- | -| number | [ string](#string) | An 8-character hexadecimal string | -| organization | [ string](#string) | none | -| name | [ string](#string) | An optional descriptor given to the modem | -| location | [ hiber.Location](#hiberlocation) | none | -| last_message_id | [ uint64](#uint64) | none | -| last_message_received_at | [ hiber.Timestamp](#hibertimestamp) | Time the server has received the last message. | -| last_message_sent_at | [ hiber.Timestamp](#hibertimestamp) | Time the modem has sent the last message. | -| last_message_body | [ hiber.BytesOrHex](#hiberbytesorhex) | The body of the last message. | -| inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | -| health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | -| health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | -| active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | -| technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | -| peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | -| in_transfer | [ hiber.modem.Modem.Transfer](#hibermodemmodemtransfer) | none | -| notes | [ string](#string) | Notes field that can be used to add additional information to a modem. | -| secure_notes | [ string](#string) | Secure notes field that can be used to add additional information to a modem, with limited accessibility. | -| tags | [repeated hiber.tag.Tag](#hibertagtag) | none | -| is_gateway | [ bool](#bool) | [DEPRECATED] Whether the modem is a gateway, it has been configured as a gateway and has connected devices. Use `type` instead. | -| is_device_connected_to_gateway | [ bool](#bool) | [DEPRECATED] Whether the modem is connected to a modem configured as a gateway. Use `type` instead. | -| connected_to_gateway | [ string](#string) | [DEPRECATED] The modem number that this modem is connected to, if any. Use `connected_device_info.connected_to_gateway` instead. | -| external_device_ids | [repeated string](#string) | [DEPRECATED] External device ids, if any. Use `connected_device_info.external_device_ids` instead. | -| type | [ hiber.modem.Modem.Type](#hibermodemmodemtype) | The type of modem. Used mainly to differentiate in the UI or to sort on. | -| gateway_info | [ hiber.modem.Modem.GatewayInfo](#hibermodemmodemgatewayinfo) | Additional information when this modem is a gateway. | -| connected_device_info | [ hiber.modem.Modem.ConnectedDeviceInfo](#hibermodemmodemconnecteddeviceinfo) | Additional information when this modem is a connected device. | -| metadata | [ google.protobuf.Struct](#googleprotobufstruct) | Modem metadata, typically extracted from messages. | -| time_zone | [ string](#string) | The timezone configured for the modem. | +"Exclude" fields filter out anything in the exclude set. +When combined with include, exclude takes precedence when determining whether an item is filtered -### hiber.modem.ModemSelection -Selection object for modems. -Filter modems by modem id, (child)organization, tags, activation status and time, service type and last message time. +### hiber.Filter.ChildOrganizations + +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 | Description | | ----- | ---- | ----------- | -| modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | -| free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | -| activated_in | [ hiber.TimeRange](#hibertimerange) | none | -| with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | -| with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | -| health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | -| health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | -| transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | -| include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | -| exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | -| only_gateways | [ bool](#bool) | [DEPRECATED] Only list devices that are a gateway. Replaced by `types`. If you only want to have gateways in the result, create a selection with only `Modem.Type.GATEWAY` for `types`. | -| only_has_external_device_ids | [ bool](#bool) | [DEPRECATED] Only list devices that are a connected devices. Typically these are LoRaWAN sensors. Replaced by `types`. If you only want to have connected devices in the result, create a selection with only `Modem.Type.CONNECTED_DEVICE` for `types`. | -| connected_to_gateways | [ hiber.Filter.Modems](#hiberfiltermodems) | none | -| external_device_ids | [repeated string](#string) | none | -| filter_by_tags | [ hiber.tag.TagSelection](#hibertagtagselection) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **peripheral_selection**.peripherals | [ hiber.modem.ModemSelection.Peripherals](#hibermodemmodemselectionperipherals) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **peripheral_selection**.only_without_peripheral | [ bool](#bool) | When set to true, only modems that do not have any peripheral will be included in the result. | - - -### Enums -#### hiber.modem.ListModemsRequest.Sort -Sorting options for the results. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| LAST_MESSAGE_RECEIVED | none | 0 | -| LAST_MESSAGE_RECEIVED_INVERTED | none | 1 | -| MODEM_NUMBER_ASC | Sort numerically on the number of the modem. | 2 | -| MODEM_NUMBER_DESC | none | 3 | -| STATUS_ASC | none | 4 | -| STATUS_DESC | none | 5 | -| MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number | 6 | -| MODEM_NAME_DESC | none | 7 | -| ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem | 8 | -| ORGANIZATION_DESC | none | 9 | -| HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | -| HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | - -#### hiber.modem.Modem.Peripherals.HiberAntenna -A Hiber antenna is required for the modem to function. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | none | 0 | -| HIBER_PANDA | none | 1 | -| HIBER_GRIZZLY | none | 2 | -| HIBER_BLACK | none | 3 | -| CUSTOM | none | 4 | - -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. +| include_all | [ bool](#bool) | none | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | +### hiber.Filter.ChildOrganizations.Update -#### hiber.modem.Modem.Transfer.Status +Update object to update a Filter.ChildOrganizations field. +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | none | -| Name | Description | Number | -| ---- | ----------- | ------ | -| NONE | none | 0 | -| INBOUND | Modem has been shipped or transferred to you and is inbound. When you mark the transfer as received, the modems are added to your organization. If you encounter any issues, you can mark modems for return using the ModemTransferReturnService. | 1 | -| OUTBOUND | Modem has been shipped or transferred by you and is outbound. When the transfer is received, the modems are removed from your organization, though the recipient may still return them later. | 2 | -| RETURNING | You shipped this modem to another organization, but they are returning it. When you mark the transfer as received, the modems are added back to your organization. | 3 | +### hiber.Filter.Events -#### hiber.modem.Modem.Type -The effective type of this modem. -Type can depend on the hardware itself as well as network topology. -| Name | Description | Number | -| ---- | ----------- | ------ | -| OTHER | A device of which the specific type is not known | 0 | -| DIRECT | A devices that directly connects to the satellite | 1 | -| GATEWAY | A device that can receive messages from sensors in the field and relay them (directly) to the satellite. Typically a LoRaWAN hub. Note that gateways also send messages themselves (e.g. a daily heartbeat). | 2 | -| CONNECTED_DEVICE | A sensor that can (only) send data to a gateway. Typically using a LoRaWAN connection. | 3 | -#### hiber.modem.ModemMessage.Source +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.EventType](#hibereventtype) | none | +| exclude | [repeated hiber.EventType](#hibereventtype) | none | +### hiber.Filter.Events.Update -| Name | Description | Number | -| ---- | ----------- | ------ | -| HIBERBAND | A real message from a modem or gateway, sent over Hiberband to the server. | 0 | -| DIRECT_TO_API | A real message from a modem or gateway, sent directly to the API using a persistent connection. | 1 | -| TEST | A test message sent to the testing API. | 2 | -| SIMULATION | A simulated message, generated by the server. | 3 | +Update object to update a Filter.Events field. +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.Events](#hiberfilterevents) | none | +### hiber.Filter.FieldEnumValues -## Referenced messages from value.proto -(Note that these are included because there is a proto dependency on the file, -so not all messages listed here are referenced.) -#### This section was generated from [value.proto](https://github.com/HiberGlobal/api/blob/master/value.proto). +| Field | Type | Description | +| ----- | ---- | ----------- | +| field | [ string](#string) | none | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | -### hiber.value.Value +### hiber.Filter.Modems | Field | Type | Description | | ----- | ---- | ----------- | -| type | [ hiber.value.Value.Type](#hibervaluevaluetype) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.numeric | [ hiber.value.Value.Numeric](#hibervaluevaluenumeric) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.text | [ string](#string) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.enum | [ hiber.value.Value.Enum](#hibervaluevalueenum) | none | +| include | [repeated string](#string) | Include all modems with these modem numbers (HEX) | +| exclude | [repeated string](#string) | Exclude all modems with these modem numbers (HEX). Exclude takes precedence over include. | -### hiber.value.Value.Enum +### hiber.Filter.Modems.Update -If this value is an enum, this specifies the value, display name and color for this enum value. +Update object to update a Filter.Modems field. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ string](#string) | The enum value. This might be a cryptic value, see the display_name and description for more information. | -| display_name | [ string](#string) | User-facing name for this value. | -| description | [ string](#string) | More details for this enum value. | -| color | [ string](#string) | (Optional) color for this enum value. | -| priority | [ int32](#int32) | Priority of the value, typically used for ordering. | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.Modems](#hiberfiltermodems) | none | + +### hiber.Filter.OrganizationPermissions -### hiber.value.Value.Numeric -If the value is numeric, this specifies the unit, value, etc. | Field | Type | Description | | ----- | ---- | ----------- | -| type | [ hiber.value.Value.Numeric.Type](#hibervaluevaluenumerictype) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.battery_level | [ hiber.value.Value.Numeric.BatteryLevel](#hibervaluevaluenumericbatterylevel) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.distance | [ hiber.value.Value.Numeric.Distance](#hibervaluevaluenumericdistance) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.duration | [ hiber.Duration](#hiberduration) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.fuel_efficiency | [ hiber.value.Value.Numeric.FuelEfficiency](#hibervaluevaluenumericfuelefficiency) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.percentage | [ hiber.value.Value.Numeric.Percentage](#hibervaluevaluenumericpercentage) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.pressure | [ hiber.value.Value.Numeric.Pressure](#hibervaluevaluenumericpressure) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.speed | [ hiber.value.Value.Numeric.Speed](#hibervaluevaluenumericspeed) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.temperature | [ hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.voltage | [ hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.volume | [ hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.mass | [ hiber.value.Value.Numeric.Mass](#hibervaluevaluenumericmass) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.flow | [ hiber.value.Value.Numeric.Flow](#hibervaluevaluenumericflow) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.unknown | [ double](#double) | none | +| include_all | [ bool](#bool) | none | +| include | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | +| exclude | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | + +### hiber.Filter.Organizations -### hiber.value.Value.Numeric.BatteryLevel -Special case for battery level, since it can be provided in many units. -Not included in the UnitPreferences, since it cannot be converted. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Publishers -### hiber.value.Value.Numeric.Distance -The value is a distance value, converted to your preferred distance unit. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| include | [repeated int64](#int64) | none | +| exclude | [repeated int64](#int64) | none | +| only_active | [ bool](#bool) | none | -### hiber.value.Value.Numeric.Flow +### hiber.Filter.SupportPermissions | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + +### hiber.Filter.Tags -### hiber.value.Value.Numeric.FuelEfficiency -The value is a distance value, converted to your preferred distance unit. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| include | [repeated int64](#int64) | none | +| exclude | [repeated int64](#int64) | none | -### hiber.value.Value.Numeric.Mass +### hiber.Filter.Tags.Update -The value is a volume value, converted to your preferred volume unit. +Update object to update a Filter.Tags field. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.Tags](#hiberfiltertags) | none | + +### hiber.Filter.UserPermissions -### hiber.value.Value.Numeric.Percentage -The value is a percentage. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ float](#float) | none | -| unit | [ hiber.value.Value.Numeric.Percentage.Unit](#hibervaluevaluenumericpercentageunit) | none | -| textual | [ string](#string) | Textual representation with % symbol, rounded based on the user preferences and field config. | +| include_all | [ bool](#bool) | none | +| include | [repeated hiber.UserPermission](#hiberuserpermission) | none | +| exclude | [repeated hiber.UserPermission](#hiberuserpermission) | none | + +### hiber.Filter.Users -### hiber.value.Value.Numeric.Pressure -The value is a pressure value, converted to your preferred pressure unit. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Webhooks -### hiber.value.Value.Numeric.Speed -The value is a speed value, converted to your preferred speed unit. | Field | Type | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| include | [repeated int64](#int64) | none | +| exclude | [repeated int64](#int64) | none | +| only_active | [ bool](#bool) | none | -### hiber.value.Value.Numeric.Temperature +### hiber.Location -The value is a temperature, converted to your preferred temperature unit. +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 | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| latitude | [ double](#double) | Decimal degrees north. | +| longitude | [ double](#double) | Decimal degrees east. | +| textual | [ string](#string) | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. | -### hiber.value.Value.Numeric.Voltage +### hiber.LocationSelection -The value is a voltage, converted to your preferred voltage unit. +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 | Description | | ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | The original unit, iff this value was converted from another unit because of user preferences. | +| areas | [repeated hiber.Area](#hiberarea) | Rectangular areas, each defined by two locations, normalized to bottom-left and top-right points. | +| shapes | [repeated hiber.Shape](#hibershape) | Polygon shapes, each defined by a list of locations, which draw a shape on the map. | -### hiber.value.Value.Numeric.Volume +### hiber.NamedFile -The value is a volume value, converted to your preferred volume unit. +A NamedFile contains bytes with its mime-type and name. +It can represent any file of any type. -| Field | Type | Description | -| ----- | ---- | ----------- | -| value | [ double](#double) | none | -| unit | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | none | -| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | -| converted_from | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | The original unit, iff this value was converted from another unit because of user preferences. | +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. -### Enums -#### hiber.value.Value.Numeric.BatteryLevel.Unit +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 -| Name | Description | Number | -| ---- | ----------- | ------ | -| PERCENT | Battery level as a percentage (technically not a unit). - -other units will be added here later, like voltage | 0 | - -#### hiber.value.Value.Numeric.Distance.Unit - - -| Name | Description | Number | -| ---- | ----------- | ------ | -| METER | none | 0 | -| MILLIMETER | none | 1 | -| CENTIMETER | none | 2 | -| KILOMETER | none | 3 | -| YARD | none | 5 | -| MILE | none | 4 | -| FOOT | none | 6 | -| INCH | none | 7 | -| NAUTICAL_MILE | This is a special case unit and may not be auto-converted to your UnitPreference. | 8 | - -#### hiber.value.Value.Numeric.DurationUnit -The duration enum is not wrapped in Duration, since duration is always returned as a normalize Duration. -This unit is still used for fields, however. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| MILLISECONDS | none | 0 | -| SECONDS | none | 1 | -| MINUTES | none | 2 | -| HOURS | none | 3 | -| DAYS | none | 4 | -| WEEKS | none | 5 | - -#### hiber.value.Value.Numeric.Flow.Unit - - -| Name | Description | Number | -| ---- | ----------- | ------ | -| CUBIC_METER_PER_HOUR | none | 0 | - -#### hiber.value.Value.Numeric.FuelEfficiency.Unit - + data:;base64, -| Name | Description | Number | -| ---- | ----------- | ------ | -| LITER_PER_100_KILOMETER | none | 0 | -| KILOMETER_PER_LITER | none | 1 | -| KILOMETER_PER_GALLON | none | 2 | -| KILOMETER_PER_IMPERIAL_GALLON | none | 3 | -| MILE_PER_GALLON | none | 4 | -| MILE_PER_IMPERIAL_GALLON | none | 5 | -| MILE_PER_LITER | none | 6 | +Other type clients should be able to sort-of-directly set the data bytes as the source for an image. -#### hiber.value.Value.Numeric.Mass.Unit +| Field | Type | Description | +| ----- | ---- | ----------- | +| data | [ hiber.BytesOrHex](#hiberbytesorhex) | The binary payload that represents the file | +| media_type | [ string](#string) | The media-type of the file, as defined by RFC 6838 or its extensions | +| name | [ string](#string) | A semantic name for this file. | +### hiber.Pagination -| Name | Description | Number | -| ---- | ----------- | ------ | -| KILOGRAMS | none | 0 | -| POUNDS | none | 1 | +Pagination is normalized across the api. Provide a pagination object to get a specific page or offset, +or limit your data. -#### hiber.value.Value.Numeric.Percentage.Unit +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. -| Name | Description | Number | -| ---- | ----------- | ------ | -| PERCENT | Technically not a unit, but for consistency, we've added it here. | 0 | +| Field | Type | Description | +| ----- | ---- | ----------- | +| size | [ int32](#int32) | none | +| page | [ int32](#int32) | none | -#### hiber.value.Value.Numeric.Pressure.Unit +### hiber.Pagination.Result -| Name | Description | Number | -| ---- | ----------- | ------ | -| BAR | none | 0 | -| PSI | none | 1 | -| K_PA | none | 2 | -#### hiber.value.Value.Numeric.Speed.Unit +| Field | Type | Description | +| ----- | ---- | ----------- | +| size | [ int32](#int32) | none | +| page | [ int32](#int32) | none | +| total | [ int32](#int32) | none | +| total_pages | [ int32](#int32) | none | +| previous | [ hiber.Pagination](#hiberpagination) | none | +| next | [ hiber.Pagination](#hiberpagination) | none | +| approximated_total | [ bool](#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. | +### hiber.Shape -| Name | Description | Number | -| ---- | ----------- | ------ | -| KILOMETERS_PER_HOUR | none | 0 | -| KNOTS | This is a special case unit and may not be auto-converted to your UnitPreference. | 1 | -| METERS_PER_SECOND | none | 2 | -| MILES_PER_HOUR | none | 3 | +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. -#### hiber.value.Value.Numeric.Temperature.Unit +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 | Description | +| ----- | ---- | ----------- | +| path | [repeated hiber.Location](#hiberlocation) | none | +| textual | [ string](#string) | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. | -| Name | Description | Number | -| ---- | ----------- | ------ | -| KELVIN | none | 0 | -| DEGREES_CELSIUS | none | 1 | -| DEGREES_FAHRENHEIT | none | 2 | +### hiber.TimeRange -#### hiber.value.Value.Numeric.Type -The type of numeric value that is represented. -Supported types will automatically convert to the preferred unit (based on the user settings). +Period of time between two timestamps. Typically used for filtering. -| Name | Description | Number | -| ---- | ----------- | ------ | -| TYPE_UNKNOWN | none | 0 | -| PERCENTAGE | none | 1 | -| TEMPERATURE | none | 2 | -| DISTANCE | none | 3 | -| PRESSURE | none | 4 | -| VOLTAGE | none | 5 | -| SPEED | none | 6 | -| VOLUME | none | 7 | -| DURATION | none | 8 | -| FUEL_EFFICIENCY | none | 9 | -| MASS | none | 10 | -| BATTERY_LEVEL | none | 11 | -| FLOW | none | 12 | +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 -#### hiber.value.Value.Numeric.Voltage.Unit +| Field | Type | Description | +| ----- | ---- | ----------- | +| start | [ hiber.Timestamp](#hibertimestamp) | none | +| end | [ hiber.Timestamp](#hibertimestamp) | none | +### hiber.Timestamp -| Name | Description | Number | -| ---- | ----------- | ------ | -| MILLIVOLT | none | 0 | +Timestamp type for convenience. -#### hiber.value.Value.Numeric.Volume.Unit +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. -| Name | Description | Number | -| ---- | ----------- | ------ | -| LITER | none | 0 | -| GALLON_US | none | 1 | -| GALLON_IMPERIAL | none | 2 | -| CUBIC_METER | none | 3 | -| CUBIC_FEET | none | 4 | +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 -#### hiber.value.Value.Type -The type of value that is represented. +| Field | Type | Description | +| ----- | ---- | ----------- | +| timestamp | [ google.protobuf.Timestamp](#googleprotobuftimestamp) | none | +| time_zone | [ string](#string) | none | +| textual | [ string](#string) | none | -| Name | Description | Number | -| ---- | ----------- | ------ | -| OTHER | none | 0 | -| NUMERIC | This field contains numeric values, with an optional unit of measurement defined below. | 1 | -| TEXT | This field contains text to be displayed. | 2 | -| ENUM | This field switches between several predefined values. Typically used for status fields. | 3 | +### hiber.UpdateBoolean +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. -## Referenced messages from base.proto -(Note that these are included because there is a proto dependency on the file, -so not all messages listed here are referenced.) +To use this to update, set a value and set updated to true -#### This section was generated from [base.proto](https://github.com/HiberGlobal/api/blob/master/base.proto). +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ bool](#bool) | none | +### hiber.UpdateClearableString -### hiber.Area +Update object for a string that can be empty. -Rectangular area between two locations, normalized to bottom-left and top-right points. +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. -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. +To use this to update, set a value and set updated to true | Field | Type | Description | | ----- | ---- | ----------- | -| center | [ hiber.Location](#hiberlocation) | none | -| bottom_left | [ hiber.Location](#hiberlocation) | none | -| top_right | [ hiber.Location](#hiberlocation) | none | -| textual | [ string](#string) | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. | +| updated | [ bool](#bool) | none | +| value | [ string](#string) | none | -### hiber.Avatar +### hiber.UpdateOptionalDuration -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. +Update object for an optional Duration. -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) +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 | Description | | ----- | ---- | ----------- | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **url_or_image**.url | [ string](#string) | A URL that contains the location of avatar. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **url_or_image**.image | [ hiber.NamedFile](#hibernamedfile) | The data of the avatar as a Named File. | +| updated | [ bool](#bool) | none | +| value | [ hiber.Duration](#hiberduration) | none | -### hiber.BytesOrHex +### hiber.UpdateOptionalId -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. +Update object for an optional id. -When you receive this from the api, both fields are set. When sending it to the api, only one field is required. +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 | Description | | ----- | ---- | ----------- | -| bytes | [ bytes](#bytes) | none | -| hex | [ string](#string) | none | +| updated | [ bool](#bool) | none | +| value | [ int64](#int64) | none | -### hiber.BytesOrHex.Update +### hiber.UpdateZeroableInt + +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 | Description | | ----- | ---- | ----------- | | updated | [ bool](#bool) | none | -| value | [ hiber.BytesOrHex](#hiberbytesorhex) | none | +| value | [ uint32](#uint32) | none | -### hiber.Date -Date type for convenience. +### Enums +#### hiber.EventType +Enum of api-accessible events. -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. +The event types in this enum have a protobuf implementation, and can be used, for example, in the +api event stream and publishers. -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 | Description | -| ----- | ---- | ----------- | -| year | [ uint32](#uint32) | none | -| month | [ uint32](#uint32) | none | -| day | [ uint32](#uint32) | none | -| textual | [ string](#string) | none | - -### hiber.DoubleRange - -Decimal range. - -| Field | Type | Description | -| ----- | ---- | ----------- | -| start | [ double](#double) | none | -| end | [ double](#double) | none | - -### hiber.Duration - - - -| Field | Type | Description | -| ----- | ---- | ----------- | -| duration | [ google.protobuf.Duration](#googleprotobufduration) | none | -| textual | [ string](#string) | none | - -### hiber.Filter - -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) +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| ORGANIZATION_CREATED | none | 34 | +| ORGANIZATION_UPDATED | none | 12 | +| ORGANIZATION_DELETED | none | 35 | +| ORGANIZATION_EVENT_CONFIGURATION_UPDATED | none | 43 | +| MODEM_CREATED | none | 55 | +| MODEM_UPDATED | none | 36 | +| MODEM_LOCATION_UPDATED | none | 4 | +| MODEM_ACTIVATED | none | 33 | +| MODEM_MESSAGE_RECEIVED | none | 5 | +| MODEM_MESSAGE_BODY_PARSED | none | 39 | +| MODEM_MESSAGE_BODY_RECEIVED | none | 45 | +| MODEM_MESSAGE_CANNOT_BE_PARSED | none | 15 | +| MODEM_MESSAGE_SUMMARY | none | 42 | +| MODEM_MESSAGE_BODY_PARSER_CREATED | none | 46 | +| MODEM_MESSAGE_BODY_PARSER_UPDATED | none | 47 | +| MODEM_MESSAGE_BODY_PARSER_DELETED | none | 48 | +| MODEM_ALARM | none | 56 | +| MODEM_ALARM_CREATED | none | 57 | +| MODEM_ALARM_UPDATED | none | 58 | +| MODEM_ALARM_DELETED | none | 59 | +| ASSIGNED | none | 63 | +| UNASSIGNED | none | 64 | +| MODEM_TRANSFER_STARTED | none | 17 | +| MODEM_TRANSFER_RECEIVED | none | 18 | +| MODEM_TRANSFER_CANCELLED | none | 19 | +| MODEM_TRANSFER_NOT_RECEIVED | none | 20 | +| MODEM_TRANSFER_RETURN_TRANSFER_STARTED | none | 21 | +| MODEM_CLAIMED | none | 22 | +| PUBLISHER_CREATED | none | 1 | +| PUBLISHER_UPDATED | none | 2 | +| PUBLISHER_DELETED | none | 3 | +| PUBLISHER_AUTO_DISABLED | none | 37 | +| PUBLISHER_FAILED | none | 11 | +| USER_ACCESS_REQUEST | none | 8 | +| USER_INVITED | none | 38 | +| USER_ADDED | none | 9 | +| USER_REMOVED | none | 10 | +| USER_VALIDATION_UPDATED | none | 54 | +| TOKEN_CREATED | none | 31 | +| TOKEN_EXPIRY_WARNING | none | 25 | +| TOKEN_EXPIRED | none | 26 | +| TOKEN_DELETED | none | 32 | +| EXPORT_CREATED | none | 65 | +| EXPORT_READY | none | 66 | +| EXPORT_FAILED | none | 67 | -"Exclude" fields filter out anything in the exclude set. -When combined with include, exclude takes precedence when determining whether an item is filtered +#### hiber.Health +Health is an indicator for issues. It is used for publishers to give a quick indication of issues. +| Name | Description | Number | +| ---- | ----------- | ------ | +| OK | none | 0 | +| WARNING | none | 1 | +| ERROR | none | 2 | -### hiber.Filter.ChildOrganizations +#### hiber.UnitOfMeasurement +Unit of measurement for a numeric value. -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. +| Name | Description | Number | +| ---- | ----------- | ------ | +| UNIT_UNKNOWN | none | 0 | +| DURATION_MILLISECONDS | none | 40 | +| DURATION_SECONDS | none | 1 | +| DURATION_MINUTES | none | 2 | +| DURATION_HOURS | none | 3 | +| DURATION_DAYS | none | 4 | +| DURATION_WEEKS | none | 41 | +| FUEL_EFFICIENCY_LITER_PER_100_KILOMETER | none | 30 | +| FUEL_EFFICIENCY_KILOMETER_PER_LITER | none | 31 | +| FUEL_EFFICIENCY_KILOMETER_PER_US_GALLON | none | 32 | +| FUEL_EFFICIENCY_KILOMETER_PER_IMPERIAL_GALLON | none | 33 | +| FUEL_EFFICIENCY_MILE_PER_US_GALLON | none | 34 | +| FUEL_EFFICIENCY_MILE_PER_IMPERIAL_GALLON | none | 35 | +| FUEL_EFFICIENCY_MILE_PER_LITER | none | 36 | +| DISTANCE_METER | none | 8 | +| DISTANCE_MILLIMETER | none | 9 | +| DISTANCE_CENTIMETER | none | 10 | +| DISTANCE_KILOMETER | none | 11 | +| DISTANCE_NAUTICAL_MILE | none | 26 | +| DISTANCE_MILE | none | 21 | +| DISTANCE_YARD | none | 27 | +| DISTANCE_FOOT | none | 28 | +| DISTANCE_INCH | none | 29 | +| PERCENT | none | 16 | +| PRESSURE_BAR | none | 12 | +| PRESSURE_PSI | none | 14 | +| PRESSURE_K_PA | none | 17 | +| SPEED_KILOMETERS_PER_HOUR | none | 18 | +| SPEED_KNOTS | none | 19 | +| SPEED_METERS_PER_SECOND | none | 20 | +| SPEED_MILES_PER_HOUR | none | 22 | +| TEMPERATURE_KELVIN | none | 5 | +| TEMPERATURE_DEGREES_CELSIUS | none | 6 | +| TEMPERATURE_DEGREES_FAHRENHEIT | none | 7 | +| VOLTAGE_MILLIVOLT | none | 15 | +| VOLUME_LITER | none | 23 | +| VOLUME_GALLON_US | none | 24 | +| VOLUME_GALLON_IMPERIAL | none | 25 | +| VOLUME_CUBIC_METER | none | 42 | +| VOLUME_CUBIC_FOOT | none | 43 | +| MASS_KILOGRAMS | none | 37 | +| MASS_POUNDS | none | 38 | +| FLOW_CUBIC_METERS_PER_HOUR | none | 39 | -Note: ChildOrganization differs from other filters in that it defaults to not allowing anything, where the -other filters default to allowing everything -| Field | Type | Description | -| ----- | ---- | ----------- | -| include_all | [ bool](#bool) | none | -| include | [repeated string](#string) | none | -| exclude | [repeated string](#string) | none | -### hiber.Filter.ChildOrganizations.Update +## Referenced messages from field.proto +(Note that these are included because there is a proto dependency on the file, +so not all messages listed here are referenced.) -Update object to update a Filter.ChildOrganizations field. +#### This section was generated from [field.proto](https://github.com/HiberGlobal/api/blob/master/field.proto). -| Field | Type | Description | -| ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | none | -### hiber.Filter.Events +### hiber.field.Field | Field | Type | Description | | ----- | ---- | ----------- | -| include | [repeated hiber.EventType](#hibereventtype) | none | -| exclude | [repeated hiber.EventType](#hibereventtype) | none | +| identifier | [ string](#string) | Unique identifier for this field. | +| field | [ string](#string) | The name of the field (if in the root structure) or a JsonPath to the field. | +| display_name | [ string](#string) | An optional display name for the field. | +| priority | [ int32](#int32) | Priority of the field, typically used for ordering. | +| type | [ hiber.value.Value.Type](#hibervaluevaluetype) | The type of value the field contains. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **details**.numeric | [ hiber.field.Field.Numeric](#hiberfieldfieldnumeric) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **details**.enum | [ hiber.field.Field.Enum](#hiberfieldfieldenum) | none | +| encrypted | [ bool](#bool) | Whether this field should be stored encrypted or not. If it is, some processing options may be unavailable or slower. | +| optional | [ bool](#bool) | Whether this field should be validated from the parser output. | +| unit_of_measurement | [ hiber.UnitOfMeasurement](#hiberunitofmeasurement) | If numeric, the unit of the field. Deprecated: use numeric.numeric_unit oneof instead | +| unit_symbol | [ string](#string) | The symbol for the unit. Deprecated: use numeric.symbol instead | -### hiber.Filter.Events.Update +### hiber.field.Field.Enum -Update object to update a Filter.Events field. +If the field is an enum, this specifies the enum values for the field. | Field | Type | Description | | ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ hiber.Filter.Events](#hiberfilterevents) | none | - -### hiber.Filter.Modems +| values | [repeated hiber.value.Value.Enum](#hibervaluevalueenum) | none | +### hiber.field.Field.Numeric +If the field is numeric, this specifies the unit and formatting details for the field. | Field | Type | Description | | ----- | ---- | ----------- | -| include | [repeated string](#string) | Include all modems with these modem numbers (HEX) | -| exclude | [repeated string](#string) | Exclude all modems with these modem numbers (HEX). Exclude takes precedence over include. | +| type | [ hiber.value.Value.Numeric.Type](#hibervaluevaluenumerictype) | The type of numeric value. | +| symbol | [ string](#string) | The symbol to use for the field's unit. | +| format | [ hiber.field.Field.Numeric.Format](#hiberfieldfieldnumericformat) | How to format the values (number of decimals, rounding, etc.). | +| unit | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | The unit for the field, depending on the type. | +| converted_from | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | If the unit preferences were applied, and the unit is different, the field will be converted to the preferred unit, from the original unit specified in this field. | -### hiber.Filter.Modems.Update +### hiber.field.Field.Numeric.Format -Update object to update a Filter.Modems field. +Formatting options for the field. | Field | Type | Description | | ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ hiber.Filter.Modems](#hiberfiltermodems) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **round**.round_to_integer | [ bool](#bool) | Round to an integer. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **round**.round_to_scale | [ uint32](#uint32) | Round to a number of decimals (at least 1). | +| rounding_mode | [ hiber.field.Field.Numeric.Format.RoundingMode](#hiberfieldfieldnumericformatroundingmode) | How to round the value when scale is applied. | -### hiber.Filter.OrganizationPermissions +### hiber.field.Field.Numeric.Unit | Field | Type | Description | | ----- | ---- | ----------- | -| include_all | [ bool](#bool) | none | -| include | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | -| exclude | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | - -### hiber.Filter.Organizations +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.battery_level | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.distance | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.duration | [ hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.fuel_efficiency | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.flow | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.percentage | [ hiber.value.Value.Numeric.Percentage.Unit](#hibervaluevaluenumericpercentageunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.pressure | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.speed | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.temperature | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.voltage | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.volume | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **unit**.mass | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | none | +### Enums +#### hiber.field.Field.Numeric.Format.RoundingMode +How to round the value when scale is applied. +For example, a value of 3.1415 with scale 3 could be + 4.141 (DOWN, HALF_DOWN, FLOOR) or + 4.142 (HALF_UP, UP, CEILING). -| Field | Type | Description | -| ----- | ---- | ----------- | -| include | [repeated string](#string) | none | -| exclude | [repeated string](#string) | none | +| Name | Description | Number | +| ---- | ----------- | ------ | +| HALF_UP | Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round up Effectively round up when >= .5, otherwise round down. | 0 | +| HALF_DOWN | Round towards "nearest neighbor" unless both neighbors are equidistant, in which case round down. Effectively round up when > .5, otherwise round down. | 1 | +| UP | Round away from zero: 1.1 -> 2, while -1.1 -> -2. | 3 | +| DOWN | Round towards zero: 1.1 -> 1, while -1.1 -> -1. | 4 | +| CEILING | Round towards positive infinity. | 5 | +| FLOOR | Round towards negative infinity. | 6 | +| HALF_EVEN | Round towards the "nearest neighbor" unless both neighbors are equidistant, in which case, round towards the even neighbor. Effectively round up when >= .5 and next integer value is even, otherwise round down. | 7 | -### hiber.Filter.Publishers +## Referenced messages from modem.proto +(Note that these are included because there is a proto dependency on the file, +so not all messages listed here are referenced.) -| Field | Type | Description | -| ----- | ---- | ----------- | -| include | [repeated int64](#int64) | none | -| exclude | [repeated int64](#int64) | none | -| only_active | [ bool](#bool) | none | +#### This section was generated from [modem.proto](https://github.com/HiberGlobal/api/blob/master/modem.proto). -### hiber.Filter.Tags +### hiber.modem.Modem +Modem data, including location and last message (if available). +Location, last message and firmware version can be updated by messages, the rest is typically either set +when the modem is registered into the system or when a subscription is authorized. | Field | Type | Description | | ----- | ---- | ----------- | -| include | [repeated int64](#int64) | none | -| exclude | [repeated int64](#int64) | none | - -### hiber.Filter.Tags.Update - -Update object to update a Filter.Tags field. - -| Field | Type | Description | -| ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ hiber.Filter.Tags](#hiberfiltertags) | none | - -### hiber.Filter.UserPermissions +| number | [ string](#string) | An 8-character hexadecimal string | +| organization | [ string](#string) | none | +| name | [ string](#string) | An optional descriptor given to the modem | +| location | [ hiber.Location](#hiberlocation) | none | +| last_message_id | [ uint64](#uint64) | none | +| last_message_received_at | [ hiber.Timestamp](#hibertimestamp) | Time the server has received the last message. | +| last_message_sent_at | [ hiber.Timestamp](#hibertimestamp) | Time the modem has sent the last message. | +| last_message_body | [ hiber.BytesOrHex](#hiberbytesorhex) | The body of the last message. | +| inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | +| health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | +| health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | +| active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | +| technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | +| peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | +| in_transfer | [ hiber.modem.Modem.Transfer](#hibermodemmodemtransfer) | none | +| notes | [ string](#string) | Notes field that can be used to add additional information to a modem. | +| secure_notes | [ string](#string) | Secure notes field that can be used to add additional information to a modem, with limited accessibility. | +| tags | [repeated hiber.tag.Tag](#hibertagtag) | none | +| is_gateway | [ bool](#bool) | [DEPRECATED] Whether the modem is a gateway, it has been configured as a gateway and has connected devices. Use `type` instead. | +| is_device_connected_to_gateway | [ bool](#bool) | [DEPRECATED] Whether the modem is connected to a modem configured as a gateway. Use `type` instead. | +| connected_to_gateway | [ string](#string) | [DEPRECATED] The modem number that this modem is connected to, if any. Use `connected_device_info.connected_to_gateway` instead. | +| external_device_ids | [repeated string](#string) | [DEPRECATED] External device ids, if any. Use `connected_device_info.external_device_ids` instead. | +| type | [ hiber.modem.Modem.Type](#hibermodemmodemtype) | The type of modem. Used mainly to differentiate in the UI or to sort on. | +| gateway_info | [ hiber.modem.Modem.GatewayInfo](#hibermodemmodemgatewayinfo) | Additional information when this modem is a gateway. | +| connected_device_info | [ hiber.modem.Modem.ConnectedDeviceInfo](#hibermodemmodemconnecteddeviceinfo) | Additional information when this modem is a connected device. | +| metadata | [ google.protobuf.Struct](#googleprotobufstruct) | Modem metadata, typically extracted from messages. | +| time_zone | [ string](#string) | The timezone configured for the modem. | +| transmission_interval | [ hiber.Duration](#hiberduration) | The transmission interval for this modem, if configured. | +### hiber.modem.ModemSelection +Selection object for modems. +Filter modems by modem id, (child)organization, tags, activation status and time, service type and last message time. | Field | Type | Description | | ----- | ---- | ----------- | -| include_all | [ bool](#bool) | none | -| include | [repeated hiber.UserPermission](#hiberuserpermission) | none | -| exclude | [repeated hiber.UserPermission](#hiberuserpermission) | none | +| modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | +| free_text_search | [ string](#string) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | +| activated_in | [ hiber.TimeRange](#hibertimerange) | none | +| with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | +| with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | +| health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | +| health_levels | [repeated string](#string) | Filter modems by health level. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | +| transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | +| include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | +| exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | +| only_gateways | [ bool](#bool) | [DEPRECATED] Only list devices that are a gateway. Replaced by `types`. If you only want to have gateways in the result, create a selection with only `Modem.Type.GATEWAY` for `types`. | +| only_has_external_device_ids | [ bool](#bool) | [DEPRECATED] Only list devices that are a connected devices. Typically these are LoRaWAN sensors. Replaced by `types`. If you only want to have connected devices in the result, create a selection with only `Modem.Type.CONNECTED_DEVICE` for `types`. | +| connected_to_gateways | [ hiber.Filter.Modems](#hiberfiltermodems) | none | +| external_device_ids | [repeated string](#string) | none | +| filter_by_tags | [ hiber.tag.TagSelection](#hibertagtagselection) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **peripheral_selection**.peripherals | [ hiber.modem.ModemSelection.Peripherals](#hibermodemmodemselectionperipherals) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **peripheral_selection**.only_without_peripheral | [ bool](#bool) | When set to true, only modems that do not have any peripheral will be included in the result. | -### hiber.Filter.Users +### Enums +#### hiber.modem.ListModemsRequest.Sort +Sorting options for the results. +| Name | Description | Number | +| ---- | ----------- | ------ | +| LAST_MESSAGE_RECEIVED | Sorts messages in descending time order. | 0 | +| LAST_MESSAGE_RECEIVED_INVERTED | Sorts messages in ascending time order. | 1 | +| MODEM_NUMBER_ASC | Sort numerically on the number of the modem, in ascending order. | 2 | +| MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | +| STATUS_ASC | Sort modem on its Status. | 4 | +| STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | +| MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | +| MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | +| ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | +| ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | +| HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | +| HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | -| Field | Type | Description | -| ----- | ---- | ----------- | -| include | [repeated string](#string) | none | -| exclude | [repeated string](#string) | none | +#### hiber.modem.Modem.Lifecycle -### hiber.Filter.Webhooks +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | +#### hiber.modem.Modem.Peripherals.HiberAntenna +A Hiber antenna is required for the modem to function. -| Field | Type | Description | -| ----- | ---- | ----------- | -| include | [repeated int64](#int64) | none | -| exclude | [repeated int64](#int64) | none | -| only_active | [ bool](#bool) | none | +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| HIBER_PANDA | none | 1 | +| HIBER_GRIZZLY | none | 2 | +| HIBER_BLACK | none | 3 | +| CUSTOM | none | 4 | -### hiber.Location +#### hiber.modem.Modem.Transfer.Status -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 | Description | -| ----- | ---- | ----------- | -| latitude | [ double](#double) | Decimal degrees north. | -| longitude | [ double](#double) | Decimal degrees east. | -| textual | [ string](#string) | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. | +| Name | Description | Number | +| ---- | ----------- | ------ | +| NONE | none | 0 | +| INBOUND | Modem has been shipped or transferred to you and is inbound. When you mark the transfer as received, the modems are added to your organization. If you encounter any issues, you can mark modems for return using the ModemTransferReturnService. | 1 | +| OUTBOUND | Modem has been shipped or transferred by you and is outbound. When the transfer is received, the modems are removed from your organization, though the recipient may still return them later. | 2 | +| RETURNING | You shipped this modem to another organization, but they are returning it. When you mark the transfer as received, the modems are added back to your organization. | 3 | -### hiber.LocationSelection +#### hiber.modem.Modem.Type +The effective type of this modem. +Type can depend on the hardware itself as well as network topology. -Selection object for map data. Filter modems on the map by id, (child)organization. +| Name | Description | Number | +| ---- | ----------- | ------ | +| OTHER | A device of which the specific type is not known | 0 | +| DIRECT | A devices that directly connects to the satellite | 1 | +| GATEWAY | A device that can receive messages from sensors in the field and relay them (directly) to the satellite. Typically a LoRaWAN hub. Note that gateways also send messages themselves (e.g. a daily heartbeat). | 2 | +| CONNECTED_DEVICE | A sensor that can (only) send data to a gateway. Typically using a LoRaWAN connection. | 3 | -Also, filter the map data by level and area restriction, to only display a small area at a detailed map level, -for example +#### hiber.modem.ModemMessage.Source -| Field | Type | Description | -| ----- | ---- | ----------- | -| areas | [repeated hiber.Area](#hiberarea) | Rectangular areas, each defined by two locations, normalized to bottom-left and top-right points. | -| shapes | [repeated hiber.Shape](#hibershape) | Polygon shapes, each defined by a list of locations, which draw a shape on the map. | -### hiber.NamedFile +| Name | Description | Number | +| ---- | ----------- | ------ | +| HIBERBAND | A real message from a modem or gateway, sent over Hiberband to the server. | 0 | +| DIRECT_TO_API | A real message from a modem or gateway, sent directly to the API using a persistent connection. | 1 | +| TEST | A test message sent to the testing API. | 2 | +| SIMULATION | A simulated message, generated by the server. | 3 | -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. +## Referenced messages from tag.proto +(Note that these are included because there is a proto dependency on the file, +so not all messages listed here are referenced.) -Specific API calls may pur restrictions on the name or size of the file. +#### This section was generated from [tag.proto](https://github.com/HiberGlobal/api/blob/master/tag.proto). -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:;base64, +### hiber.tag.Tag + -Other type clients should be able to sort-of-directly set the data bytes as the source for an image. | Field | Type | Description | | ----- | ---- | ----------- | -| data | [ hiber.BytesOrHex](#hiberbytesorhex) | The binary payload that represents the file | -| media_type | [ string](#string) | The media-type of the file, as defined by RFC 6838 or its extensions | -| name | [ string](#string) | A semantic name for this file. | +| id | [ int64](#int64) | none | +| label | [ hiber.tag.Tag.Label](#hibertagtaglabel) | none | -### hiber.Pagination - -Pagination is normalized across the api. Provide a pagination object to get a specific page or offset, -or limit your data. +### hiber.tag.Tag.Label -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 | Description | | ----- | ---- | ----------- | -| size | [ int32](#int32) | none | -| page | [ int32](#int32) | none | +| name | [ string](#string) | none | +| type | [ string](#string) | none | -### hiber.Pagination.Result +### hiber.tag.TagSelection | Field | Type | Description | | ----- | ---- | ----------- | -| size | [ int32](#int32) | none | -| page | [ int32](#int32) | none | -| total | [ int32](#int32) | none | -| total_pages | [ int32](#int32) | none | -| previous | [ hiber.Pagination](#hiberpagination) | none | -| next | [ hiber.Pagination](#hiberpagination) | none | -| approximated_total | [ bool](#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. | +| search | [repeated string](#string) | none | +| names | [repeated string](#string) | none | +| filter | [ hiber.Filter.Tags](#hiberfiltertags) | none | +| types | [repeated string](#string) | none | -### hiber.Shape -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. +### Enums -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 | Description | -| ----- | ---- | ----------- | -| path | [repeated hiber.Location](#hiberlocation) | none | -| textual | [ string](#string) | Text representation. Can be used as an alternative input in a request, filled in by the API in responses. | +## Referenced messages from value.proto +(Note that these are included because there is a proto dependency on the file, +so not all messages listed here are referenced.) -### hiber.TimeRange +#### This section was generated from [value.proto](https://github.com/HiberGlobal/api/blob/master/value.proto). + + +### hiber.value.Value -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 | Description | | ----- | ---- | ----------- | -| start | [ hiber.Timestamp](#hibertimestamp) | none | -| end | [ hiber.Timestamp](#hibertimestamp) | none | +| type | [ hiber.value.Value.Type](#hibervaluevaluetype) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.numeric | [ hiber.value.Value.Numeric](#hibervaluevaluenumeric) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.text | [ string](#string) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.enum | [ hiber.value.Value.Enum](#hibervaluevalueenum) | none | -### hiber.Timestamp +### hiber.value.Value.Enum -Timestamp type for convenience. +If this value is an enum, this specifies the value, display name and color for this enum value. -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. +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ string](#string) | The enum value. This might be a cryptic value, see the display_name and description for more information. | +| display_name | [ string](#string) | User-facing name for this value. | +| description | [ string](#string) | More details for this enum value. | +| color | [ string](#string) | (Optional) color for this enum value. | +| priority | [ int32](#int32) | Priority of the value, typically used for ordering. | -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. +### hiber.value.Value.Numeric -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 +If the value is numeric, this specifies the unit, value, etc. | Field | Type | Description | | ----- | ---- | ----------- | -| timestamp | [ google.protobuf.Timestamp](#googleprotobuftimestamp) | none | -| textual | [ string](#string) | none | - -### hiber.UpdateBoolean - -Update object for a boolean. +| type | [ hiber.value.Value.Numeric.Type](#hibervaluevaluenumerictype) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.battery_level | [ hiber.value.Value.Numeric.BatteryLevel](#hibervaluevaluenumericbatterylevel) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.distance | [ hiber.value.Value.Numeric.Distance](#hibervaluevaluenumericdistance) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.duration | [ hiber.Duration](#hiberduration) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.fuel_efficiency | [ hiber.value.Value.Numeric.FuelEfficiency](#hibervaluevaluenumericfuelefficiency) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.percentage | [ hiber.value.Value.Numeric.Percentage](#hibervaluevaluenumericpercentage) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.pressure | [ hiber.value.Value.Numeric.Pressure](#hibervaluevaluenumericpressure) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.speed | [ hiber.value.Value.Numeric.Speed](#hibervaluevaluenumericspeed) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.temperature | [ hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.voltage | [ hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.volume | [ hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.mass | [ hiber.value.Value.Numeric.Mass](#hibervaluevaluenumericmass) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.flow | [ hiber.value.Value.Numeric.Flow](#hibervaluevaluenumericflow) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **value**.unknown | [ double](#double) | none | -Since false is the default value, we need to distinguish between an omitted value and setting the value to false, -in an update object. +### hiber.value.Value.Numeric.BatteryLevel -To use this to update, set a value and set updated to true +Special case for battery level, since it can be provided in many units. +Not included in the UnitPreferences, since it cannot be converted. | Field | Type | Description | | ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ bool](#bool) | none | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) | The original unit, iff this value was converted from another unit because of user preferences. | -### hiber.UpdateClearableString +### hiber.value.Value.Numeric.Distance -Update object for a string that can be empty. +The value is a distance value, converted to your preferred distance unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Flow -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 | Description | | ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ string](#string) | none | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Flow.Unit](#hibervaluevaluenumericflowunit) | The original unit, iff this value was converted from another unit because of user preferences. | -### hiber.UpdateOptionalDuration +### hiber.value.Value.Numeric.FuelEfficiency -Update object for an optional Duration. +The value is a distance value, converted to your preferred distance unit. -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 | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.FuelEfficiency.Unit](#hibervaluevaluenumericfuelefficiencyunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Mass + +The value is a volume value, converted to your preferred volume unit. | Field | Type | Description | | ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ hiber.Duration](#hiberduration) | none | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Mass.Unit](#hibervaluevaluenumericmassunit) | The original unit, iff this value was converted from another unit because of user preferences. | -### hiber.UpdateOptionalId +### hiber.value.Value.Numeric.Percentage -Update object for an optional id. +The value is a percentage. -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 | Description | +| ----- | ---- | ----------- | +| value | [ float](#float) | none | +| unit | [ hiber.value.Value.Numeric.Percentage.Unit](#hibervaluevaluenumericpercentageunit) | none | +| textual | [ string](#string) | Textual representation with % symbol, rounded based on the user preferences and field config. | + +### hiber.value.Value.Numeric.Pressure + +The value is a pressure value, converted to your preferred pressure unit. | Field | Type | Description | | ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ int64](#int64) | none | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Pressure.Unit](#hibervaluevaluenumericpressureunit) | The original unit, iff this value was converted from another unit because of user preferences. | -### hiber.UpdateZeroableInt +### hiber.value.Value.Numeric.Speed -Update object for an int that can be set to 0. +The value is a speed value, converted to your preferred speed unit. -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. +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Speed.Unit](#hibervaluevaluenumericspeedunit) | The original unit, iff this value was converted from another unit because of user preferences. | -To use this to update, set a value and set updated to true +### hiber.value.Value.Numeric.Temperature + +The value is a temperature, converted to your preferred temperature unit. | Field | Type | Description | | ----- | ---- | ----------- | -| updated | [ bool](#bool) | none | -| value | [ uint32](#uint32) | none | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Temperature.Unit](#hibervaluevaluenumerictemperatureunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Voltage + +The value is a voltage, converted to your preferred voltage unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) | The original unit, iff this value was converted from another unit because of user preferences. | + +### hiber.value.Value.Numeric.Volume + +The value is a volume value, converted to your preferred volume unit. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [ double](#double) | none | +| unit | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | none | +| textual | [ string](#string) | Textual representation including unit symbol, rounded based on the user preferences and field config. | +| converted_from | [ hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) | The original unit, iff this value was converted from another unit because of user preferences. | ### Enums -#### hiber.EventType -Enum of api-accessible events. +#### hiber.value.Value.Numeric.BatteryLevel.Unit -The event types in this enum have a protobuf implementation, and can be used, for example, in the -api event stream and publishers. | Name | Description | Number | | ---- | ----------- | ------ | -| DEFAULT | none | 0 | -| ORGANIZATION_CREATED | none | 34 | -| ORGANIZATION_UPDATED | none | 12 | -| ORGANIZATION_DELETED | none | 35 | -| ORGANIZATION_EVENT_CONFIGURATION_UPDATED | none | 43 | -| MODEM_CREATED | none | 55 | -| MODEM_UPDATED | none | 36 | -| MODEM_LOCATION_UPDATED | none | 4 | -| MODEM_ACTIVATED | none | 33 | -| MODEM_MESSAGE_RECEIVED | none | 5 | -| MODEM_MESSAGE_BODY_PARSED | none | 39 | -| MODEM_MESSAGE_BODY_RECEIVED | none | 45 | -| MODEM_MESSAGE_CANNOT_BE_PARSED | none | 15 | -| MODEM_MESSAGE_SUMMARY | none | 42 | -| MODEM_MESSAGE_BODY_PARSER_CREATED | none | 46 | -| MODEM_MESSAGE_BODY_PARSER_UPDATED | none | 47 | -| MODEM_MESSAGE_BODY_PARSER_DELETED | none | 48 | -| MODEM_ALARM | none | 56 | -| MODEM_ALARM_CREATED | none | 57 | -| MODEM_ALARM_UPDATED | none | 58 | -| MODEM_ALARM_DELETED | none | 59 | -| ASSIGNED | none | 63 | -| UNASSIGNED | none | 64 | -| MODEM_TRANSFER_STARTED | none | 17 | -| MODEM_TRANSFER_RECEIVED | none | 18 | -| MODEM_TRANSFER_CANCELLED | none | 19 | -| MODEM_TRANSFER_NOT_RECEIVED | none | 20 | -| MODEM_TRANSFER_RETURN_TRANSFER_STARTED | none | 21 | -| MODEM_CLAIMED | none | 22 | -| PUBLISHER_CREATED | none | 1 | -| PUBLISHER_UPDATED | none | 2 | -| PUBLISHER_DELETED | none | 3 | -| PUBLISHER_AUTO_DISABLED | none | 37 | -| PUBLISHER_FAILED | none | 11 | -| USER_ACCESS_REQUEST | none | 8 | -| USER_INVITED | none | 38 | -| USER_ADDED | none | 9 | -| USER_REMOVED | none | 10 | -| USER_VALIDATION_UPDATED | none | 54 | -| TOKEN_CREATED | none | 31 | -| TOKEN_EXPIRY_WARNING | none | 25 | -| TOKEN_EXPIRED | none | 26 | -| TOKEN_DELETED | none | 32 | -| EXPORT_CREATED | none | 65 | -| EXPORT_READY | none | 66 | -| EXPORT_FAILED | none | 67 | +| PERCENT | Battery level as a percentage (technically not a unit). + +other units will be added here later, like voltage | 0 | + +#### hiber.value.Value.Numeric.Distance.Unit -#### hiber.Health -Health is an indicator for issues. It is used for publishers to give a quick indication of issues. | Name | Description | Number | | ---- | ----------- | ------ | -| OK | none | 0 | -| WARNING | none | 1 | -| ERROR | none | 2 | +| METER | none | 0 | +| MILLIMETER | none | 1 | +| CENTIMETER | none | 2 | +| KILOMETER | none | 3 | +| YARD | none | 5 | +| MILE | none | 4 | +| FOOT | none | 6 | +| INCH | none | 7 | +| NAUTICAL_MILE | This is a special case unit and may not be auto-converted to your UnitPreference. | 8 | -#### hiber.UnitOfMeasurement -Unit of measurement for a numeric value. +#### hiber.value.Value.Numeric.DurationUnit +The duration enum is not wrapped in Duration, since duration is always returned as a normalize Duration. +This unit is still used for fields, however. | Name | Description | Number | | ---- | ----------- | ------ | -| UNIT_UNKNOWN | none | 0 | -| DURATION_MILLISECONDS | none | 40 | -| DURATION_SECONDS | none | 1 | -| DURATION_MINUTES | none | 2 | -| DURATION_HOURS | none | 3 | -| DURATION_DAYS | none | 4 | -| DURATION_WEEKS | none | 41 | -| FUEL_EFFICIENCY_LITER_PER_100_KILOMETER | none | 30 | -| FUEL_EFFICIENCY_KILOMETER_PER_LITER | none | 31 | -| FUEL_EFFICIENCY_KILOMETER_PER_US_GALLON | none | 32 | -| FUEL_EFFICIENCY_KILOMETER_PER_IMPERIAL_GALLON | none | 33 | -| FUEL_EFFICIENCY_MILE_PER_US_GALLON | none | 34 | -| FUEL_EFFICIENCY_MILE_PER_IMPERIAL_GALLON | none | 35 | -| FUEL_EFFICIENCY_MILE_PER_LITER | none | 36 | -| DISTANCE_METER | none | 8 | -| DISTANCE_MILLIMETER | none | 9 | -| DISTANCE_CENTIMETER | none | 10 | -| DISTANCE_KILOMETER | none | 11 | -| DISTANCE_NAUTICAL_MILE | none | 26 | -| DISTANCE_MILE | none | 21 | -| DISTANCE_YARD | none | 27 | -| DISTANCE_FOOT | none | 28 | -| DISTANCE_INCH | none | 29 | -| PERCENT | none | 16 | -| PRESSURE_BAR | none | 12 | -| PRESSURE_PSI | none | 14 | -| PRESSURE_K_PA | none | 17 | -| SPEED_KILOMETERS_PER_HOUR | none | 18 | -| SPEED_KNOTS | none | 19 | -| SPEED_METERS_PER_SECOND | none | 20 | -| SPEED_MILES_PER_HOUR | none | 22 | -| TEMPERATURE_KELVIN | none | 5 | -| TEMPERATURE_DEGREES_CELSIUS | none | 6 | -| TEMPERATURE_DEGREES_FAHRENHEIT | none | 7 | -| VOLTAGE_MILLIVOLT | none | 15 | -| VOLUME_LITER | none | 23 | -| VOLUME_GALLON_US | none | 24 | -| VOLUME_GALLON_IMPERIAL | none | 25 | -| VOLUME_CUBIC_METER | none | 42 | -| VOLUME_CUBIC_FOOT | none | 43 | -| MASS_KILOGRAMS | none | 37 | -| MASS_POUNDS | none | 38 | -| FLOW_CUBIC_METERS_PER_HOUR | none | 39 | +| MILLISECONDS | none | 0 | +| SECONDS | none | 1 | +| MINUTES | none | 2 | +| HOURS | none | 3 | +| DAYS | none | 4 | +| WEEKS | none | 5 | + +#### hiber.value.Value.Numeric.Flow.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| CUBIC_METER_PER_HOUR | none | 0 | + +#### hiber.value.Value.Numeric.FuelEfficiency.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| LITER_PER_100_KILOMETER | none | 0 | +| KILOMETER_PER_LITER | none | 1 | +| KILOMETER_PER_GALLON | none | 2 | +| KILOMETER_PER_IMPERIAL_GALLON | none | 3 | +| MILE_PER_GALLON | none | 4 | +| MILE_PER_IMPERIAL_GALLON | none | 5 | +| MILE_PER_LITER | none | 6 | + +#### hiber.value.Value.Numeric.Mass.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| KILOGRAMS | none | 0 | +| POUNDS | none | 1 | + +#### hiber.value.Value.Numeric.Percentage.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| PERCENT | Technically not a unit, but for consistency, we've added it here. | 0 | + +#### hiber.value.Value.Numeric.Pressure.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| BAR | none | 0 | +| PSI | none | 1 | +| K_PA | none | 2 | + +#### hiber.value.Value.Numeric.Speed.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| KILOMETERS_PER_HOUR | none | 0 | +| KNOTS | This is a special case unit and may not be auto-converted to your UnitPreference. | 1 | +| METERS_PER_SECOND | none | 2 | +| MILES_PER_HOUR | none | 3 | + +#### hiber.value.Value.Numeric.Temperature.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| KELVIN | none | 0 | +| DEGREES_CELSIUS | none | 1 | +| DEGREES_FAHRENHEIT | none | 2 | + +#### hiber.value.Value.Numeric.Type +The type of numeric value that is represented. +Supported types will automatically convert to the preferred unit (based on the user settings). + +| Name | Description | Number | +| ---- | ----------- | ------ | +| TYPE_UNKNOWN | none | 0 | +| PERCENTAGE | none | 1 | +| TEMPERATURE | none | 2 | +| DISTANCE | none | 3 | +| PRESSURE | none | 4 | +| VOLTAGE | none | 5 | +| SPEED | none | 6 | +| VOLUME | none | 7 | +| DURATION | none | 8 | +| FUEL_EFFICIENCY | none | 9 | +| MASS | none | 10 | +| BATTERY_LEVEL | none | 11 | +| FLOW | none | 12 | + +#### hiber.value.Value.Numeric.Voltage.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| MILLIVOLT | none | 0 | + +#### hiber.value.Value.Numeric.Volume.Unit + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| LITER | none | 0 | +| GALLON_US | none | 1 | +| GALLON_IMPERIAL | none | 2 | +| CUBIC_METER | none | 3 | +| CUBIC_FEET | none | 4 | + +#### hiber.value.Value.Type +The type of value that is represented. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| OTHER | none | 0 | +| NUMERIC | This field contains numeric values, with an optional unit of measurement defined below. | 1 | +| TEXT | This field contains text to be displayed. | 2 | +| ENUM | This field switches between several predefined values. Typically used for status fields. | 3 | + +#### hiber.value.ValueAggregation +Get the values for the selected field. + +There are a few limitations here: +- text fields can only use the LAST aggregation. +- enum fields support a subset of aggregations: + - DEFAULT and LAST return the last value. + - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. + - AVERAGE and SUM are not supported. + +- enum duration + +An enum example: +Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK +- aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. +- aggregation SUM: OK: 35m, FAILED: 25m + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| AVERAGE | Return the average value. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 1 | +| SUM | Return the sum all values. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 2 | +| LAST | Just take the last value. | 3 | +| MINIMUM | Return the lowest value. For enum fields, the order of values is used to determine the MINIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 4 | +| MAXIMUM | Return the highest value. For enum fields, the order of values is used to determine the MAXIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 5 | + +#### hiber.value.ValueTransformation +Transform the values into a derived value. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DURATION | Instead of returning the value, return the amount of time a value was active. Aggregation (if applicable) is applied afterwards on the duration value. | 0 | +| DELTA | Instead of returning the value, return the difference between the value and the previous value. Aggregation (if applicable) is applied before the delta is calculated. | 1 | ## Scalar Value Types diff --git a/docs/md/modem.md b/docs/md/modem.md index 0142bbb..55e42e3 100644 --- a/docs/md/modem.md +++ b/docs/md/modem.md @@ -53,12 +53,12 @@ used to identify them. - [ModemSelection.Peripherals.OneOfValues](#modemselectionperipheralsoneofvalues) - [ModemSelection.Transfers](#modemselectiontransfers) - [RenameModemRequest](#renamemodemrequest) + - [UpdateModemLifecycleRequest](#updatemodemlifecyclerequest) + - [UpdateModemLifecycleRequest.Response](#updatemodemlifecyclerequestresponse) - [UpdateModemNotesRequest](#updatemodemnotesrequest) - [UpdateModemNotesRequest.Response](#updatemodemnotesrequestresponse) - [UpdateModemSecureNotesRequest](#updatemodemsecurenotesrequest) - [UpdateModemSecureNotesRequest.Response](#updatemodemsecurenotesrequestresponse) - - [UpdateModemStatusRequest](#updatemodemstatusrequest) - - [UpdateModemStatusRequest.Response](#updatemodemstatusrequestresponse) - [UpdateModemTagsRequest](#updatemodemtagsrequest) - [UpdateModemTagsRequest.Response](#updatemodemtagsrequestresponse) - [UpdatePeripheralsRequest](#updateperipheralsrequest) @@ -67,8 +67,8 @@ used to identify them. - Enums - [ListModemsRequest.Sort](#listmodemsrequestsort) + - [Modem.Lifecycle](#modemlifecycle) - [Modem.Peripherals.HiberAntenna](#modemperipheralshiberantenna) - - [Modem.Status](#modemstatus) - [Modem.Transfer.Status](#modemtransferstatus) - [Modem.Type](#modemtype) - [ModemMessage.Source](#modemmessagesource) @@ -92,6 +92,7 @@ used to identify them. - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -184,8 +185,8 @@ Change the notes for the selected modems to the given value. Change the secure notes for the selected modems to the given value, if you have permission. ### UpdateStatus -> **rpc** UpdateStatus([UpdateModemStatusRequest](#updatemodemstatusrequest)) - [UpdateModemStatusRequest.Response](#updatemodemstatusrequestresponse) +> **rpc** UpdateStatus([UpdateModemLifecycleRequest](#updatemodemlifecyclerequest)) + [UpdateModemLifecycleRequest.Response](#updatemodemlifecyclerequestresponse) Change the status of the selected modems to the given value. @@ -221,7 +222,7 @@ when you want to connect a device to the API using just the API calls in the Tes | amount | [ uint32](#uint32) | The amount of modems to create. | | names | [repeated string](#string) | The name(s) to give the new modem(s). Must not contain more values than the amount of modems to create. | | external_device_identifiers | [repeated string](#string) | The external device identifiers for the new modems. Must not contain more values than the amount of modems to create. The order of this list matches the order of the name, values in the same index are applied to the same modem. | -| status | [ Modem.Status](#modemstatus) | The status for the new modems. | +| lifecycle | [ Modem.Lifecycle](#modemlifecycle) | The status for the new modems. | | technical | [ Modem.TechnicalData](#modemtechnicaldata) | The technical data, such as manufacturer and hardware information for the new modems. | | peripherals | [map CreateModem.Request.PeripheralsEntry](#createmodemrequestperipheralsentry) | The peripherals for the new modems. | | notes | [ string](#string) | Notes for all new modems. | @@ -403,7 +404,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ Modem.Status](#modemstatus) | none | +| lifecycle | [ Modem.Lifecycle](#modemlifecycle) | none | | active_subscription | [ Modem.ActiveSubscription](#modemactivesubscription) | additional information | | technical | [ Modem.TechnicalData](#modemtechnicaldata) | none | | peripherals | [ Modem.Peripherals](#modemperipherals) | none | @@ -608,13 +609,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated Modem.Status](#modemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated Modem.Lifecycle](#modemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ ModemSelection.Transfers](#modemselectiontransfers) | none | | include_types | [repeated Modem.Type](#modemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated Modem.Type](#modemtype) | Exclude modems that have a type listed in types. | @@ -683,69 +684,69 @@ For example: - exclude { 'bluetooth' -> [ ] } returns only modems that do not ha | modem_number | [ string](#string) | none | | name | [ string](#string) | none | -### UpdateModemNotesRequest +### UpdateModemLifecycleRequest | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| selection | [ ModemSelection](#modemselection) | none | -| pagination | [ hiber.Pagination](#hiberpagination) | none | -| notes | [ string](#string) | Notes content | -| allow_override_existing_notes | [ bool](#bool) | When you try to set a new notes value to multiple modems, the API returns an error if their previous values were different. Set this to true to apply it anyway. | +| modem_number | [ string](#string) | Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible. | +| modem_selection | [ ModemSelection](#modemselection) | Or a modem selection. | +| update_lifecycle | [ Modem.Lifecycle](#modemlifecycle) | The new status for the modem(s). | +| pagination | [ hiber.Pagination](#hiberpagination) | Pagination for the modems in the Response. | -### UpdateModemNotesRequest.Response +### UpdateModemLifecycleRequest.Response | Field | Type | Description | | ----- | ---- | ----------- | +| modem | [ Modem](#modem) | none | | modems | [repeated Modem](#modem) | none | -| request | [ UpdateModemNotesRequest](#updatemodemnotesrequest) | none | +| request | [ UpdateModemLifecycleRequest](#updatemodemlifecyclerequest) | none | | pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | none | -### UpdateModemSecureNotesRequest +### UpdateModemNotesRequest | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| modem_number | [ string](#string) | none | -| secure_notes | [ string](#string) | none | +| selection | [ ModemSelection](#modemselection) | none | +| pagination | [ hiber.Pagination](#hiberpagination) | none | +| notes | [ string](#string) | Notes content | +| allow_override_existing_notes | [ bool](#bool) | When you try to set a new notes value to multiple modems, the API returns an error if their previous values were different. Set this to true to apply it anyway. | -### UpdateModemSecureNotesRequest.Response +### UpdateModemNotesRequest.Response | Field | Type | Description | | ----- | ---- | ----------- | -| modem | [ Modem](#modem) | none | -| request | [ UpdateModemSecureNotesRequest](#updatemodemsecurenotesrequest) | none | +| modems | [repeated Modem](#modem) | none | +| request | [ UpdateModemNotesRequest](#updatemodemnotesrequest) | none | +| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | none | -### UpdateModemStatusRequest +### UpdateModemSecureNotesRequest | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| modem_number | [ string](#string) | Either pick a single modem to update. DEPRECATED, since ModemSelection is more flexible. | -| modem_selection | [ ModemSelection](#modemselection) | Or a modem selection. | -| update_status | [ Modem.Status](#modemstatus) | The new status for the modem(s). | -| pagination | [ hiber.Pagination](#hiberpagination) | Pagination for the modems in the Response. | +| modem_number | [ string](#string) | none | +| secure_notes | [ string](#string) | none | -### UpdateModemStatusRequest.Response +### UpdateModemSecureNotesRequest.Response | Field | Type | Description | | ----- | ---- | ----------- | | modem | [ Modem](#modem) | none | -| modems | [repeated Modem](#modem) | none | -| request | [ UpdateModemStatusRequest](#updatemodemstatusrequest) | none | -| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | none | +| request | [ UpdateModemSecureNotesRequest](#updatemodemsecurenotesrequest) | none | ### UpdateModemTagsRequest @@ -819,12 +820,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +### Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | ### Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -837,18 +855,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -### Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - ### Modem.Transfer.Status @@ -1086,6 +1092,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/modem_alarm.md b/docs/md/modem_alarm.md index d38b1cb..967386b 100644 --- a/docs/md/modem_alarm.md +++ b/docs/md/modem_alarm.md @@ -80,8 +80,8 @@ advanced use cases, like assigning to a tag. - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) @@ -105,6 +105,7 @@ advanced use cases, like assigning to a tag. - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -885,7 +886,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | | active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | | technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | | peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | @@ -913,13 +914,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | | include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | @@ -944,12 +945,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +#### hiber.modem.Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | #### hiber.modem.Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -962,18 +980,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - #### hiber.modem.Modem.Transfer.Status @@ -1211,6 +1217,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/modem_message_body_parser.md b/docs/md/modem_message_body_parser.md index e6ca571..d985304 100644 --- a/docs/md/modem_message_body_parser.md +++ b/docs/md/modem_message_body_parser.md @@ -67,8 +67,8 @@ where you can find documentation, examples and a web IDE. - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) @@ -92,6 +92,7 @@ where you can find documentation, examples and a web IDE. - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -661,7 +662,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | | active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | | technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | | peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | @@ -689,13 +690,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | | include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | @@ -720,12 +721,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +#### hiber.modem.Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | #### hiber.modem.Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -738,18 +756,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - #### hiber.modem.Modem.Transfer.Status @@ -987,6 +993,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/named_location.md b/docs/md/named_location.md index cfefde3..1cc16b2 100644 --- a/docs/md/named_location.md +++ b/docs/md/named_location.md @@ -49,6 +49,7 @@ - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -484,6 +485,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/permission.md b/docs/md/permission.md index 9a8d21f..1f783a9 100644 --- a/docs/md/permission.md +++ b/docs/md/permission.md @@ -10,6 +10,7 @@ Permissions limit what a user can do through the API. - Enums - [OrganizationPermission](#organizationpermission) + - [SupportPermission](#supportpermission) - [UserPermission](#userpermission) @@ -61,6 +62,14 @@ Requesting user-related events explicitly if you cannot access the users will re | LOCATIONS_MANAGE | Manage saved locations using the OrganizationLocationService. | 48 | | EXPORT | Create, access and download exports. | 49 | +### SupportPermission +SupportPermissions are used for features typically reserved for customer support, or that behave differently +when used by a customer support operator. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| CUSTOMER_SUPPORT | Allow Customer Support functions. | 0 | + ### UserPermission UserPermissions are generally used to limit what a token can do to its user. By default, a user has all UserPermissions, which apply only to himself. diff --git a/docs/md/simulation_service.md b/docs/md/simulation_service.md index f4692b0..baaf0d0 100644 --- a/docs/md/simulation_service.md +++ b/docs/md/simulation_service.md @@ -42,6 +42,7 @@ - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -70,8 +71,8 @@ - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) @@ -408,6 +409,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags @@ -796,7 +806,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | | active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | | technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | | peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | @@ -824,13 +834,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | | include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | @@ -855,12 +865,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +#### hiber.modem.Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | #### hiber.modem.Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -873,18 +900,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - #### hiber.modem.Modem.Transfer.Status diff --git a/docs/md/unit_preferences_service.md b/docs/md/unit_preferences_service.md index fbdf11f..e55902d 100644 --- a/docs/md/unit_preferences_service.md +++ b/docs/md/unit_preferences_service.md @@ -51,7 +51,7 @@ - [hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) - [hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) - [hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) - + - Enums - [hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) - [hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) - [hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) @@ -66,6 +66,8 @@ - [hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) - [hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) - [hiber.value.Value.Type](#hibervaluevaluetype) + - [hiber.value.ValueAggregation](#hibervaluevalueaggregation) + - [hiber.value.ValueTransformation](#hibervaluevaluetransformation) - [Scalar Value Types](#scalar-value-types) @@ -661,6 +663,40 @@ The type of value that is represented. | TEXT | This field contains text to be displayed. | 2 | | ENUM | This field switches between several predefined values. Typically used for status fields. | 3 | +#### hiber.value.ValueAggregation +Get the values for the selected field. + +There are a few limitations here: +- text fields can only use the LAST aggregation. +- enum fields support a subset of aggregations: + - DEFAULT and LAST return the last value. + - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. + - AVERAGE and SUM are not supported. + +- enum duration + +An enum example: +Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK +- aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. +- aggregation SUM: OK: 35m, FAILED: 25m + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| AVERAGE | Return the average value. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 1 | +| SUM | Return the sum all values. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 2 | +| LAST | Just take the last value. | 3 | +| MINIMUM | Return the lowest value. For enum fields, the order of values is used to determine the MINIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 4 | +| MAXIMUM | Return the highest value. For enum fields, the order of values is used to determine the MAXIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 5 | + +#### hiber.value.ValueTransformation +Transform the values into a derived value. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DURATION | Instead of returning the value, return the amount of time a value was active. Aggregation (if applicable) is applied afterwards on the duration value. | 0 | +| DELTA | Instead of returning the value, return the difference between the value and the previous value. Aggregation (if applicable) is applied before the delta is calculated. | 1 | + ## Scalar Value Types | .proto Type | Notes | C++ Type | Java Type | Python Type | diff --git a/docs/md/value_service.md b/docs/md/value_service.md index d3e1e04..bd445cc 100644 --- a/docs/md/value_service.md +++ b/docs/md/value_service.md @@ -31,8 +31,6 @@ Messages are parsed to a number of values (depending on the parser), which can b - Enums - [ListValues.Sort](#listvaluessort) - - [ValueAggregation](#valueaggregation) - - [ValueTransformation](#valuetransformation) - Referenced messages from [value.proto](#referenced-messages-from-valueproto) - [hiber.value.Value](#hibervaluevalue) @@ -49,7 +47,7 @@ Messages are parsed to a number of values (depending on the parser), which can b - [hiber.value.Value.Numeric.Temperature](#hibervaluevaluenumerictemperature) - [hiber.value.Value.Numeric.Voltage](#hibervaluevaluenumericvoltage) - [hiber.value.Value.Numeric.Volume](#hibervaluevaluenumericvolume) - + - Enums - [hiber.value.Value.Numeric.BatteryLevel.Unit](#hibervaluevaluenumericbatterylevelunit) - [hiber.value.Value.Numeric.Distance.Unit](#hibervaluevaluenumericdistanceunit) - [hiber.value.Value.Numeric.DurationUnit](#hibervaluevaluenumericdurationunit) @@ -64,14 +62,16 @@ Messages are parsed to a number of values (depending on the parser), which can b - [hiber.value.Value.Numeric.Voltage.Unit](#hibervaluevaluenumericvoltageunit) - [hiber.value.Value.Numeric.Volume.Unit](#hibervaluevaluenumericvolumeunit) - [hiber.value.Value.Type](#hibervaluevaluetype) + - [hiber.value.ValueAggregation](#hibervaluevalueaggregation) + - [hiber.value.ValueTransformation](#hibervaluevaluetransformation) - Referenced messages from [modem.proto](#referenced-messages-from-modemproto) - [hiber.modem.Modem](#hibermodemmodem) - [hiber.modem.ModemSelection](#hibermodemmodemselection) - [hiber.modem.ListModemsRequest.Sort](#hibermodemlistmodemsrequestsort) + - [hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) - [hiber.modem.Modem.Peripherals.HiberAntenna](#hibermodemmodemperipheralshiberantenna) - - [hiber.modem.Modem.Status](#hibermodemmodemstatus) - [hiber.modem.Modem.Transfer.Status](#hibermodemmodemtransferstatus) - [hiber.modem.Modem.Type](#hibermodemmodemtype) - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) @@ -95,6 +95,7 @@ Messages are parsed to a number of values (depending on the parser), which can b - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -310,40 +311,6 @@ How to sort the values. | TIME_ASCENDING | none | 0 | | TIME_DESCENDING | none | 1 | -### ValueAggregation -Get the values for the selected field. - -There are a few limitations here: -- text fields can only use the LAST aggregation. -- enum fields support a subset of aggregations: - - DEFAULT and LAST return the last value. - - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. - - AVERAGE and SUM are not supported. - -- enum duration - -An enum example: -Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK -- aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. -- aggregation SUM: OK: 35m, FAILED: 25m - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | none | 0 | -| AVERAGE | Return the average value. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 1 | -| SUM | Return the sum all values. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 2 | -| LAST | Just take the last value. | 3 | -| MINIMUM | Return the lowest value. For enum fields, the order of values is used to determine the MINIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 4 | -| MAXIMUM | Return the highest value. For enum fields, the order of values is used to determine the MAXIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 5 | - -### ValueTransformation -Transform the values into a derived value. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DURATION | Instead of returning the value, return the amount of time a value was active. Aggregation (if applicable) is applied afterwards on the duration value. | 0 | -| DELTA | Instead of returning the value, return the difference between the value and the previous value. Aggregation (if applicable) is applied before the delta is calculated. | 1 | - ## Referenced messages from value.proto @@ -668,6 +635,40 @@ The type of value that is represented. | TEXT | This field contains text to be displayed. | 2 | | ENUM | This field switches between several predefined values. Typically used for status fields. | 3 | +#### hiber.value.ValueAggregation +Get the values for the selected field. + +There are a few limitations here: +- text fields can only use the LAST aggregation. +- enum fields support a subset of aggregations: + - DEFAULT and LAST return the last value. + - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. + - AVERAGE and SUM are not supported. + +- enum duration + +An enum example: +Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK +- aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. +- aggregation SUM: OK: 35m, FAILED: 25m + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| AVERAGE | Return the average value. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 1 | +| SUM | Return the sum all values. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 2 | +| LAST | Just take the last value. | 3 | +| MINIMUM | Return the lowest value. For enum fields, the order of values is used to determine the MINIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 4 | +| MAXIMUM | Return the highest value. For enum fields, the order of values is used to determine the MAXIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 5 | + +#### hiber.value.ValueTransformation +Transform the values into a derived value. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DURATION | Instead of returning the value, return the amount of time a value was active. Aggregation (if applicable) is applied afterwards on the duration value. | 0 | +| DELTA | Instead of returning the value, return the difference between the value and the previous value. Aggregation (if applicable) is applied before the delta is calculated. | 1 | + ## Referenced messages from modem.proto @@ -696,7 +697,7 @@ when the modem is registered into the system or when a subscription is authorize | inactivity | [ hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | | health | [ hiber.Health](#hiberhealth) | Deprecated health based on the number of error and warning events this modem has received in the past 30 days Uses the OK, WARNING, ERROR format. | | health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | -| status | [ hiber.modem.Modem.Status](#hibermodemmodemstatus) | none | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | | active_subscription | [ hiber.modem.Modem.ActiveSubscription](#hibermodemmodemactivesubscription) | additional information | | technical | [ hiber.modem.Modem.TechnicalData](#hibermodemmodemtechnicaldata) | none | | peripherals | [ hiber.modem.Modem.Peripherals](#hibermodemmodemperipherals) | none | @@ -724,13 +725,13 @@ Filter modems by modem id, (child)organization, tags, activation status and time | ----- | ---- | ----------- | | modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | | free_text_search | [ string](#string) | none | -| only_active | [ bool](#bool) | none | +| only_active | [ bool](#bool) | Use lifecycle filter instead. | | activated_in | [ hiber.TimeRange](#hibertimerange) | none | | with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | | with_service_type | [repeated hiber.organization.subscription.ServiceType](#hiberorganizationsubscriptionservicetype) | none | | health | [repeated hiber.Health](#hiberhealth) | Deprecated health that uses the OK, WARNING, ERROR format. | | health_levels | [repeated string](#string) | Filter modems by health level. | -| status | [repeated hiber.modem.Modem.Status](#hibermodemmodemstatus) | Filter modems by status(es). Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. | +| lifecycles | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Filter modems by lifecycle(s). Defaults to nominal lifecycles, excluding disabled or decommissioned modems. | | transfers | [ hiber.modem.ModemSelection.Transfers](#hibermodemmodemselectiontransfers) | none | | include_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Only include modems that have a type listed in types. In other words, when providing multiple types, this is an "OR" relationship. | | exclude_types | [repeated hiber.modem.Modem.Type](#hibermodemmodemtype) | Exclude modems that have a type listed in types. | @@ -755,12 +756,29 @@ Sorting options for the results. | MODEM_NUMBER_DESC | Sort numerically on the number of the modem, in descending order. | 3 | | STATUS_ASC | Sort modem on its Status. | 4 | | STATUS_DESC | Sort modem on its Status in reverse order. | 5 | +| STATUS_ASC_ALPHABETICAL | Status sorted alphabetically by Status name. | 14 | +| STATUS_DESC_ALPHABETICAL | Status sorted alphabetically by Status name, descending order. | 15 | | MODEM_NAME_ASC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. | 6 | | MODEM_NAME_DESC | Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order. | 7 | | ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the modem, in ascending order. | 8 | | ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the modem, in descending order. | 9 | | HEALTH | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 10 | | HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 11 | +| HEALTH_ASC_ALPHABETICAL | Health sorted alphabetically by health level name. | 12 | +| HEALTH_DESC_ALPHABETICAL | Health sorted alphabetically by health level name, descending order. | 13 | + +#### hiber.modem.Modem.Lifecycle + + +| Name | Description | Number | +| ---- | ----------- | ------ | +| ACCEPTANCE_TESTING | Modem is deployed, but not active yet. Invisible for customer. | 0 | +| INSTALLED | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | +| PAUSED | none | 6 | +| DISABLED | none | 5 | +| DECOMMISSIONED | none | 4 | +| DAMAGED | Kept for backwards compatibility. Internally mapped to decommissioned | 2 | +| LOST | Kept for backwards compatibility. Internally mapped to decommissioned | 3 | #### hiber.modem.Modem.Peripherals.HiberAntenna A Hiber antenna is required for the modem to function. @@ -773,18 +791,6 @@ A Hiber antenna is required for the modem to function. | HIBER_BLACK | none | 3 | | CUSTOM | none | 4 | -#### hiber.modem.Modem.Status -Modem statuses for its lifecycle. - -| Name | Description | Number | -| ---- | ----------- | ------ | -| DEFAULT | Modem is in your inventory, but not deployed or active. | 0 | -| ACTIVE | Modem is active and sending messages. See health for more details on its health, based on the past messages. | 1 | -| DAMAGED | none | 2 | -| LOST | none | 3 | -| DEAD | none | 4 | -| DISABLED | none | 5 | - #### hiber.modem.Modem.Transfer.Status @@ -1022,6 +1028,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/values.md b/docs/md/values.md index c52aa12..718c73a 100644 --- a/docs/md/values.md +++ b/docs/md/values.md @@ -39,6 +39,8 @@ - [Value.Numeric.Voltage.Unit](#valuenumericvoltageunit) - [Value.Numeric.Volume.Unit](#valuenumericvolumeunit) - [Value.Type](#valuetype) + - [ValueAggregation](#valueaggregation) + - [ValueTransformation](#valuetransformation) - Referenced messages from [base.proto](#referenced-messages-from-baseproto) - [hiber.Area](#hiberarea) @@ -59,6 +61,7 @@ - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -401,6 +404,40 @@ The type of value that is represented. | TEXT | This field contains text to be displayed. | 2 | | ENUM | This field switches between several predefined values. Typically used for status fields. | 3 | +### ValueAggregation +Get the values for the selected field. + +There are a few limitations here: +- text fields can only use the LAST aggregation. +- enum fields support a subset of aggregations: + - DEFAULT and LAST return the last value. + - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. + - AVERAGE and SUM are not supported. + +- enum duration + +An enum example: +Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK +- aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. +- aggregation SUM: OK: 35m, FAILED: 25m + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| AVERAGE | Return the average value. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 1 | +| SUM | Return the sum all values. Not supported for textual and enum fields. When used with these fields, LAST is used instead. | 2 | +| LAST | Just take the last value. | 3 | +| MINIMUM | Return the lowest value. For enum fields, the order of values is used to determine the MINIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 4 | +| MAXIMUM | Return the highest value. For enum fields, the order of values is used to determine the MAXIMUM. Not supported for textual fields. When used with these fields, LAST is used instead. | 5 | + +### ValueTransformation +Transform the values into a derived value. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DURATION | Instead of returning the value, return the amount of time a value was active. Aggregation (if applicable) is applied afterwards on the duration value. | 0 | +| DELTA | Instead of returning the value, return the difference between the value and the previous value. Aggregation (if applicable) is applied before the delta is calculated. | 1 | + ## Referenced messages from base.proto @@ -607,6 +644,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/docs/md/webhook.md b/docs/md/webhook.md index c518947..abf7e41 100644 --- a/docs/md/webhook.md +++ b/docs/md/webhook.md @@ -75,6 +75,7 @@ - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) - [hiber.Filter.Publishers](#hiberfilterpublishers) + - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) - [hiber.Filter.Tags.Update](#hiberfiltertagsupdate) - [hiber.Filter.UserPermissions](#hiberfilteruserpermissions) @@ -822,6 +823,15 @@ Update object to update a Filter.Modems field. | exclude | [repeated int64](#int64) | none | | only_active | [ bool](#bool) | none | +### hiber.Filter.SupportPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.SupportPermission](#hibersupportpermission) | none | +| exclude | [repeated hiber.SupportPermission](#hibersupportpermission) | none | + ### hiber.Filter.Tags diff --git a/easypulse.proto b/easypulse.proto index a7ab9d1..3a0287f 100644 --- a/easypulse.proto +++ b/easypulse.proto @@ -12,6 +12,7 @@ syntax = "proto3"; package hiber.easypulse; import "base.proto"; +import "field.proto"; import "health.proto"; import "tag.proto"; import "value.proto"; @@ -37,6 +38,9 @@ service EasypulseService { option deprecated = true; } + /* List the fields for Easypulse, so they can be used with other services. */ + rpc Fields (Easypulse.Fields.Request) returns (Easypulse.Fields.Response); + /* Manage the target values that are used to determine score values. */ rpc TargetValues (Easypulse.TargetValues.List.Request) returns (Easypulse.TargetValues.List.Response); rpc UpdateTargetValues (Easypulse.TargetValues.Update.Request) returns (Easypulse.TargetValues); @@ -227,6 +231,68 @@ message Easypulse { } } + /* List the fields for the easypulse organization, to be used with the value service, for example. + */ + message Fields { + message EasypulseField { + field.Field field = 1; + value.ValueAggregation default_aggregation = 2; + optional value.ValueTransformation default_transformation = 3; + value.Value.Numeric.DurationUnit default_partition = 4; + + oneof target_value { + TargetValues.DurationTargetValue target_value_duration = 5; + TargetValues.DistanceTargetValue target_value_distance = 6; + } + } + + message StateBasedFields { + EasypulseField on = 1; + EasypulseField running = 2; + EasypulseField idle = 3; + EasypulseField off = 4; + } + + EasypulseField odometer = 1; + EasypulseField max_rpm = 2; + EasypulseField max_speed = 3; + EasypulseField battery_level = 4; + EasypulseField fuel_level = 5; + + /** Fuel usage while in different states of usage. */ + StateBasedFields fuel_used = 6; + + /** Time spent in different states of usage. */ + StateBasedFields engine_time = 8; + EasypulseField engine_oil_temperature = 7; + + message PTOEngagement { + EasypulseField count = 1; + EasypulseField time = 2; + } + PTOEngagement pto_engagement = 9; + + message Request { + /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ + string organization = 1; + + /* Request the fields for a specific modem. + * The fields are always the same, but the defaults and target values may be different. + */ + optional string modem = 2; + + /* Whether to apply the unit preferences to the fields. + * This will convert any fields into your preferred unit, for convenience. + */ + bool apply_unit_preferences = 3; + } + + message Response { + Fields fields = 1; + Request request = 2; + } + } + /* List the history for a single field, and optionally apply an aggregation and/or grouping to it. * Deprecated in favor of the ValueService. */ diff --git a/modem.proto b/modem.proto index 54a78e0..724212e 100644 --- a/modem.proto +++ b/modem.proto @@ -61,7 +61,7 @@ service ModemService { rpc UpdateSecureNotes (UpdateModemSecureNotesRequest) returns (UpdateModemSecureNotesRequest.Response); /* Change the status of the selected modems to the given value. */ - rpc UpdateStatus (UpdateModemStatusRequest) returns (UpdateModemStatusRequest.Response); + rpc UpdateStatus (UpdateModemLifecycleRequest) returns (UpdateModemLifecycleRequest.Response); /* Add and remove peripherals for the selected modems. */ rpc UpdatePeripherals (UpdatePeripheralsRequest) returns (UpdatePeripheralsRequest.Response); @@ -105,7 +105,7 @@ message Modem { /* Health level based on the modem alarm and some always-present alarms. */ health.HealthLevel health_level = 28; - Status status = 12; + Lifecycle lifecycle = 12; // additional information ActiveSubscription active_subscription = 6; @@ -236,18 +236,21 @@ message Modem { string custom_antenna = 4; } - /* Modem statuses for its lifecycle. */ - enum Status { - /* Modem is in your inventory, but not deployed or active. */ - DEFAULT = 0; + enum Lifecycle { + /* Modem is deployed, but not active yet. Invisible for customer. */ + ACCEPTANCE_TESTING = 0; /* Modem is active and sending messages. * See health for more details on its health, based on the past messages. */ - ACTIVE = 1; - DAMAGED = 2; - LOST = 3; - DEAD = 4; + INSTALLED = 1; + PAUSED = 6; DISABLED = 5; + DECOMMISSIONED = 4; + + /* Kept for backwards compatibility. Internally mapped to decommissioned */ + DAMAGED = 2 [deprecated = true]; + /* Kept for backwards compatibility. Internally mapped to decommissioned */ + LOST = 3 [deprecated = true]; } /* The effective type of this modem. @@ -329,7 +332,8 @@ message ModemSelection { Filter.Modems modems = 1; string free_text_search = 8; - bool only_active = 4; + /* Use lifecycle filter instead. */ + bool only_active = 4 [deprecated = true]; TimeRange activated_in = 5; TimeRange with_last_message_in = 7; repeated hiber.organization.subscription.ServiceType with_service_type = 6; @@ -340,10 +344,10 @@ message ModemSelection { /* Filter modems by health level. */ repeated string health_levels = 18; - /* Filter modems by status(es). - * Defaults to nominal statuses, excluding disabled, dead, lost or damaged modems. + /* Filter modems by lifecycle(s). + * Defaults to nominal lifecycles, excluding disabled or decommissioned modems. */ - repeated Modem.Status status = 10; + repeated Modem.Lifecycle lifecycles = 10; Transfers transfers = 11; /* Only include modems that have a type listed in types. @@ -577,6 +581,10 @@ message ListModemsRequest { STATUS_ASC = 4; /* Sort modem on its Status in reverse order. */ STATUS_DESC = 5; + /* Status sorted alphabetically by Status name. */ + STATUS_ASC_ALPHABETICAL = 14; + /* Status sorted alphabetically by Status name, descending order. */ + STATUS_DESC_ALPHABETICAL = 15; /* Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order. */ MODEM_NAME_ASC = 6; @@ -592,6 +600,10 @@ message ListModemsRequest { HEALTH = 10; /* Health sorted from most to least severe (i.e. ERROR, WARNING, OK). */ HEALTH_DESC = 11; + /* Health sorted alphabetically by health level name. */ + HEALTH_ASC_ALPHABETICAL = 12; + /* Health sorted alphabetically by health level name, descending order. */ + HEALTH_DESC_ALPHABETICAL = 13; } /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ @@ -749,7 +761,7 @@ message CreateModem { repeated string external_device_identifiers = 4; /* The status for the new modems. */ - Modem.Status status = 5; + Modem.Lifecycle lifecycle = 5; /* The technical data, such as manufacturer and hardware information for the new modems. */ Modem.TechnicalData technical = 6; @@ -850,11 +862,11 @@ message UpdateModemSecureNotesRequest { string secure_notes = 3; } -message UpdateModemStatusRequest { +message UpdateModemLifecycleRequest { message Response { Modem modem = 1 [deprecated = true]; repeated Modem modems = 3; - UpdateModemStatusRequest request = 2; + UpdateModemLifecycleRequest request = 2; Pagination.Result pagination = 4; } @@ -868,7 +880,7 @@ message UpdateModemStatusRequest { ModemSelection modem_selection = 4; /* The new status for the modem(s). */ - Modem.Status update_status = 3; + Modem.Lifecycle update_lifecycle = 3; /* Pagination for the modems in the Response. */ Pagination pagination = 5; diff --git a/permission.proto b/permission.proto index eb48267..dc168a0 100644 --- a/permission.proto +++ b/permission.proto @@ -116,3 +116,11 @@ enum UserPermission { /* Delete your user account permanently. Includes read permission. */ DELETE = 3; } + +/* SupportPermissions are used for features typically reserved for customer support, or that behave differently + * when used by a customer support operator. + */ +enum SupportPermission { + /* Allow Customer Support functions. */ + CUSTOMER_SUPPORT = 0; +} diff --git a/value.proto b/value.proto index ab0054a..ab49551 100644 --- a/value.proto +++ b/value.proto @@ -304,3 +304,61 @@ message Value { int32 priority = 5; } } + +/* Get the values for the selected field. + * + * There are a few limitations here: + * - text fields can only use the LAST aggregation. + * - enum fields support a subset of aggregations: + * - DEFAULT and LAST return the last value. + * - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. + * - AVERAGE and SUM are not supported. + * + * - enum duration + * + * An enum example: + * Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK + * - aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. + * - aggregation SUM: OK: 35m, FAILED: 25m + */ +enum ValueAggregation { + DEFAULT = 0; + + /* Return the average value. + * Not supported for textual and enum fields. When used with these fields, LAST is used instead. + */ + AVERAGE = 1; + + /* Return the sum all values. + * Not supported for textual and enum fields. When used with these fields, LAST is used instead. + */ + SUM = 2; + + /* Just take the last value. */ + LAST = 3; + + /* Return the lowest value. + * For enum fields, the order of values is used to determine the MINIMUM. + * Not supported for textual fields. When used with these fields, LAST is used instead. + */ + MINIMUM = 4; + + /* Return the highest value. + * For enum fields, the order of values is used to determine the MAXIMUM. + * Not supported for textual fields. When used with these fields, LAST is used instead. + */ + MAXIMUM = 5; +} + +/* Transform the values into a derived value. */ +enum ValueTransformation { + /* Instead of returning the value, return the amount of time a value was active. + * Aggregation (if applicable) is applied afterwards on the duration value. + */ + DURATION = 0; + + /* Instead of returning the value, return the difference between the value and the previous value. + * Aggregation (if applicable) is applied before the delta is calculated. + */ + DELTA = 1; +} diff --git a/value_service.proto b/value_service.proto index d479600..6770bae 100644 --- a/value_service.proto +++ b/value_service.proto @@ -85,19 +85,6 @@ message ValueContext { } } -/* Transform the values into a derived value. */ -enum ValueTransformation { - /* Instead of returning the value, return the amount of time a value was active. - * Aggregation (if applicable) is applied afterwards on the duration value. - */ - DURATION = 0; - - /* Instead of returning the value, return the difference between the value and the previous value. - * Aggregation (if applicable) is applied before the delta is calculated. - */ - DELTA = 1; -} - /* List values for a (set of) modem(s), filtering by field and time. */ message ListValues { /* How to sort the values. */ @@ -126,51 +113,6 @@ message ListValues { } } -/* Get the values for the selected field. - * - * There are a few limitations here: - * - text fields can only use the LAST aggregation. - * - enum fields support a subset of aggregations: - * - DEFAULT and LAST return the last value. - * - MINIMUM and MAXIMUM return the lowest or highest value (respectively) based on the enum value order. - * - AVERAGE and SUM are not supported. - * - * - enum duration - * - * An enum example: - * Field "status" with this timeline: 00:00 OK, 00:10 FAILED, 00:20 OK, 00:25 FAILED, 00:40 OK - * - aggregation DEFAULT or LAST: OK, since it's OK at the end of the time range. - * - aggregation SUM: OK: 35m, FAILED: 25m - */ -enum ValueAggregation { - DEFAULT = 0; - - /* Return the average value. - * Not supported for textual and enum fields. When used with these fields, LAST is used instead. - */ - AVERAGE = 1; - - /* Return the sum all values. - * Not supported for textual and enum fields. When used with these fields, LAST is used instead. - */ - SUM = 2; - - /* Just take the last value. */ - LAST = 3; - - /* Return the lowest value. - * For enum fields, the order of values is used to determine the MINIMUM. - * Not supported for textual fields. When used with these fields, LAST is used instead. - */ - MINIMUM = 4; - - /* Return the highest value. - * For enum fields, the order of values is used to determine the MAXIMUM. - * Not supported for textual fields. When used with these fields, LAST is used instead. - */ - MAXIMUM = 5; -} - /* Aggregate values for a (set of) modem(s), filtering by field and time. */ message AggregatedValues { /* The time range that was aggregated. */