diff --git a/CHANGELOG.md b/CHANGELOG.md index d4b860a..7ccfca3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ #### Upcoming Changes +### 0.126 (2022-10-24) + +##### DeviceService + +- Added a new device service to make updates to devices easier. + ### 0.125 (2022-10-17) ##### EasypulseService diff --git a/base.proto b/base.proto index 742819f..977bd40 100644 --- a/base.proto +++ b/base.proto @@ -353,6 +353,11 @@ message Filter { } } + message ModemIdentifiers { + repeated string include = 1; + repeated string exclude = 2; + } + message Tags { repeated int64 include = 1; repeated int64 exclude = 2; @@ -403,8 +408,59 @@ message Filter { repeated string include = 2; repeated string exclude = 3; } + + message HealthLevels { + repeated string include = 1; + repeated string exclude = 2; + } + + /* Filter result on specific properties encoded in map-value pairs. */ + message Properties { + oneof selection { + MapFilter properties = 1; + /* When set to true, match only empty property-sets. */ + bool include_only_empty = 2; + } + } } +/* Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). + * This filter allows selecting a range of values for a specific name. + * One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + * + * To select for multiple versions of a property, + * add the name of the property as a map-key and add a repeated list of versions as the map-value. + * + * For example: + * - include { 'bluetooth' -> [ ] } + * returns all items that have any version of bluetooth, + * - include { 'bluetooth' -> [ '4.0', '5.0' ] } + * will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), + * - include { 'bluetooth' -> [ '' ] } + * would only select bluetooth peripherals that don't have any version set, + * - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + * will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), + * - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + * will return an empty list since exclude will take precedence, and + * - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + * returns only items that have bluetooth, but not version 3.0. + */ +message MapFilter { + + /* Technical solution to make map into a map, + * which is not possible in protobuf without trickery. */ + message OneOfValues { + repeated string value = 1; + } + + /* Filter to only include items with all of the given set of properties. */ + map include_and = 1; + + /* Filter to exclude items with any of the given set of properties.*/ + map exclude = 2; +} + + /* Health is an indicator for issues. It is used for publishers to give a quick indication of issues. */ enum Health { diff --git a/device.proto b/device.proto new file mode 100644 index 0000000..2c7a454 --- /dev/null +++ b/device.proto @@ -0,0 +1,148 @@ +syntax = "proto3"; + +package hiber.device; + +import "google/protobuf/struct.proto"; + +import "base.proto"; +import "health.proto"; +import "modem.proto"; +import "tag.proto"; + +option java_multiple_files = false; +option java_package = "global.hiber.api.grpc.device"; +option java_outer_classname = "DeviceApi"; +option go_package = "hiber"; + +/* Information about a device. + * A device is anything in the Hiber network that can send data to our systems. + * They have a unique device number in our system, used to identify them. + */ +message Device { + /* An 8-character hexadecimal string, formatted for human readability. System ignores spaces. */ + string number = 1; + /* The organization that owns this device */ + string organization = 2; + + /* A descriptor given to the device, defaults to it's number. */ + string name = 3; + + hiber.Location location = 4; + + /* The amount of time since the last message from this modem was received on the server. */ + optional hiber.Duration inactivity = 5; + + /* Health level based on the modem alarm and some always-present alarms. */ + health.HealthLevel health_level = 6; + + /* The current lifecycle the modem is in. */ + hiber.modem.Modem.Lifecycle lifecycle = 7; + + // additional information + map peripherals = 8; + + /* Notes field that can be used to add additional information to a modem. */ + string notes = 9; + + /* Secure notes field that can be used to add additional information to a modem, with limited accessibility. */ + optional string secure_notes = 10; + + repeated hiber.tag.Tag tags = 11; + + /* Optional information about what other devices this devices is linked to.*/ + optional Links link = 12; + + /* Modem metadata, typically extracted from messages. */ + google.protobuf.Struct metadata = 13; + + /* The timezone configured for the modem. */ + optional string time_zone = 14; + + /* The transmission interval for this modem, if configured. */ + optional hiber.Duration transmission_interval = 15; + + /* Collection of data about the devices it is connected to. */ + message Links { + /* Other identifiers for this devices. Could include data like its MAC-address or otherwise unique identifier. */ + repeated string identifiers = 1; + + /* The device directly downstream from this device. + * Usually a gateway of some sorts. This device sends its data directly to its parent. + * The parent will relay the data to our systems. */ + optional string parent = 2; + +// /* The devices that are directly upstream form this device if any. +// * The upstream devices use this device to relay messages for them. */ +// TODO(WEB-6273) Implement list of children +// repeated string children = 3; + } +} + +/* Selection object for devices. + * Filter devices by device number, tags, etc. + */ +message DeviceSelection { + string free_text_search = 1; + + Filter.Modems modems = 2; + Filter.ModemIdentifiers identifiers = 3; + Filter.HealthLevels health_level = 4; + ModemFilter.Lifecycles lifecycles = 5; + Filter.Modems with_parents = 6; + Filter.Properties peripherals = 7; + + hiber.tag.TagSelection filter_by_tags = 8; + + TimeRange with_last_message_in = 9; +} + +/* Sorting options for the results. */ +enum Sort { + /* Sort alphabetically on the name of the device. + * De default name of the device is its HEX number, in ascending order. */ + DEVICE_NAME_ASC = 0; + /* Sort alphabetically on the name of the device. + * De default name of the device is its HEX number, in descending order. */ + DEVICE_NAME_DESC = 1; + + /* Sort numerically on the number of the device, in ascending order. */ + DEVICE_NUMBER_ASC = 2; + /* Sort numerically on the number of the device, in descending order. */ + DEVICE_NUMBER_DESC = 3; + + /* Sort devices on most recent activity first (e.g. newest message received). */ + ACTIVITY = 4; + /* Sort devices on least recent activity first (e.g. longest no message received). */ + INACTIVITY = 5; + + /* Sort device on its lifecycle state. */ + LIFECYCLE_ASC = 6; + /* Sort device on its lifecycle state in reverse order. */ + LIFECYCLE_DESC = 7; + /* Sort device on lifecycle name, alphabetically. */ + LIFECYCLE_ALPHABETICAL_ASC = 8; + /* Sort device on lifecycle name, alphabetically in reverse order. */ + LIFECYCLE_ALPHABETICAL_DESC = 9; + + /* Sort alphabetically on the name of the organization that owns the device, in ascending order. */ + ORGANIZATION_ASC = 10; + /* Sort alphabetically on the name of the organization that owns the device, in descending order. */ + ORGANIZATION_DESC = 11; + + /* Health sorted from least to most severe (i.e. OK, WARNING, ERROR). */ + HEALTH_ASC = 12; + /* Health sorted from most to least severe (i.e. ERROR, WARNING, OK). */ + HEALTH_DESC = 13; + /* Health sorted alphabetically by health level name. */ + HEALTH_ALPHABETICAL_ASC = 14; + /* Health sorted alphabetically by health level name, descending order. */ + HEALTH_ALPHABETICAL_DESC = 15; +} + + +message ModemFilter { + message Lifecycles { + repeated hiber.modem.Modem.Lifecycle include = 1; + repeated hiber.modem.Modem.Lifecycle exclude = 2; + } +} diff --git a/device_service.proto b/device_service.proto new file mode 100644 index 0000000..d22ca08 --- /dev/null +++ b/device_service.proto @@ -0,0 +1,142 @@ +/* Device management. + * + * Devices are anything capable of sending messages to the system. + * They have a unique device (previously modem) number, used to identify them. + */ +syntax = "proto3"; + +package hiber.device; + +import "base.proto"; +import "device.proto"; +import "modem.proto"; + +option java_multiple_files = false; +option java_package = "global.hiber.api.grpc.device"; +option java_outer_classname = "DeviceServiceApi"; +option go_package = "hiber"; + +/* At the core of the Hiber system, devices are the network nodes that send information and user data. + * This service contains calls to list and manage devices. + */ +service DeviceService { + /* List the devices in your organization, and, optionally, its child organizations. */ + rpc List (ListDevice.Request) returns (ListDevice.Response); + + /* Update a device. */ + rpc Update(UpdateDevice.Request) returns (UpdateDevice.Response); +} + +message UpdateDevice { + + hiber.device.DeviceSelection selection = 1; + + /* Change the name for the selected devices. + * To prevent confusion, the selection can only effectively target 1 device when changing the name. + * Unless you specifically set `allow_bulk_rename`. + * You'd be left with multiple devices with the same name (technically allowed), + * but probably something you don't want. + */ + optional string name = 2; + /* Allow a rename that results in multiple devices with the same name. + * Could be useful if you have different sites with devices that fulfill + * a similar job but are located at different sites. + * It is advised to make sure those devices have different tags/groups. + */ + bool allow_bulk_rename = 3; + + /* Change the notes for the selected devices. */ + optional string notes = 4; + /* Allow changing notes in bulk if the notes are different. + * Must set this explicitly to prevent accidental loss of notes. + */ + bool allow_bulk_notes = 5; + + /* Change the notes for the selected devices. */ + optional string secure_notes = 6; + /* Allow changing notes in bulk if the notes are different. + * Must set this explicitly to prevent accidental loss of notes. + */ + bool allow_bulk_secure_notes = 7; + + /* Updates the devices peripherals, by adding, removing or replacing. */ + optional UpdatePeripherals peripherals = 8; + /* Set the timezone the device is located in. */ + optional string time_zone = 9; + /* Update the lifecycle for this device. */ + optional hiber.modem.Modem.Lifecycle lifecycle = 10; + /* Sets the interval this devices is transmitting on. + * Mainly useful for devices that have a regular interval for transmissions. */ + optional Duration transmission_interval = 11; + + /* When updating peripherals, you can choose to add and delete peripherals, + * or to do a wholesome replace of all peripherals. + */ + message UpdatePeripherals { + message Partial { + /* Removes peripherals by name in this list. Leaves other peripherals untouched. */ + repeated string remove_peripherals = 1; + /* Adds peripherals by name-value from this mapping. Leaves other peripherals untouched. */ + map add_peripherals = 2; + } + message Replace { + /* Replaces the entire set of peripherals. All peripherals not named in this map will be removed. */ + map replace_peripherals = 1; + } + oneof replace { + Partial partial_update = 1; + Replace full_replace = 2; + } + } + + message Request { + /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ + string organization = 1; + /* Multiple different updates can be made. + * Every update contains a device selection (historically modem selection) + * which targets the devices that should be updated. + */ + repeated UpdateDevice devices = 2; + } + message Response { + repeated Device devices = 1; + Request request = 2; + } +} + +message ListDevice { + message Request { + /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ + string organization = 1; + + /* Select which devices to return. Uses ModemSelection, which is the historical name for device. */ + hiber.device.DeviceSelection selection = 2; + + /* Paginate through results. */ + Pagination pagination = 3; + + /* Sort the devices with the given sort options. */ + repeated hiber.device.Sort sort_by = 4; + + /* Filter devices by location. */ + LocationSelection location_selection = 5; + + /* Set this to true to populate the parents field in the response. + * This will be populated with missing parents (e.g. gateways) for the the devices on this page. + * Any parent that is on the current page is not included in this list to avoid duplicate data. + */ + bool include_missing_parents = 6; + } + message Response { + repeated Device devices = 1; + ListDevice.Request request = 2; + Pagination.Result pagination = 3; + repeated Sort sorted_by = 4; + + /* This will be populated with missing parents (e.g. gateways) for the the devices on this page. + * Any parent that is on the current page is not included in this list to avoid duplicate data. + * Only set when include_missing_parents is true in the request. + */ + repeated Device parents = 5; + } +} diff --git a/docs/html/assignment.html b/docs/html/assignment.html index 0675b0c..c6f2c58 100644 --- a/docs/html/assignment.html +++ b/docs/html/assignment.html @@ -381,6 +381,14 @@

Table of Contents

MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -397,6 +405,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -433,6 +445,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -3045,6 +3073,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -3177,6 +3267,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -3484,6 +3605,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    @@ -7861,7 +8099,7 @@

    CreateModemAlarm.Responsecreated ModemAlarm -

    +

    The created modem alarm.

    @@ -7872,7 +8110,7 @@

    CreateModemAlarm.ResponseDeleteModemAlarm

    -

    +

    Delete an alarm.

    @@ -7899,7 +8137,7 @@

    DeleteModemAlarm.Request

    identifier string -

    +

    Identifier of the modem alarm to delete.

    @@ -7917,7 +8155,7 @@

    DeleteModemAlarm.ResponseListModemAlarms

    -

    +

    List modem alarms in an organization.

    @@ -7944,14 +8182,14 @@

    ListModemAlarms.Request

    selection ModemAlarmSelection -

    +

    Selection criteria for listing modem alarms.

    pagination hiber.Pagination -

    +

    Pagination for the returned alarms.

    @@ -7984,21 +8222,21 @@

    ListModemAlarms.Response

    modem_alarms ModemAlarm repeated -

    +

    A list of modem alarms.

    pagination hiber.Pagination.Result -

    +

    A pagination object, which can be used to go through the alarms.

    request ListModemAlarms.Request -

    +

    The request made to list the given alarms.

    @@ -8091,7 +8329,7 @@

    M

    ModemAlarm

    -

    Alarm for a modem, monitoring message data, location or activity.

    An alarm is a collection of checks that validate the correctness of a modem. For example, an alarm might

    check that the modem is in a given location, or that a field in its messages is between certain values.

    Health for an alarm event is determined by taking the most severe health level from the health_levels configured

    on the failing checks, using this default for any checks that do not have a health_level configured.

    This can be changed on assignment with the default_health_level parameter, to fit the needs of the organization.

    Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of

    your health levels, that level is used. Otherwise, the catch-all health level is used.

    See the health definition for more information on the catch all health level (typically the most severe).

    Note that the health level displayed here is the result of the steps above.

    When assigned to a (set of) modem(s), an alarm can be customized using its parameters.

    Parameters are based on the check fields, and are also used in the check error message template.

    For the alarm parameters, check parameters are prefixed with the check identifier.

    For example: An alarm with check A (field "healthy" equals 1) and check B (field "state" oneof ["OK", "ACTIVE"])

    would have the following parameters:

    {

    "A": {

    "expected": 1,

    "field.path": "healthy",

    "field.equals.expected": 1

    },

    "B": {

    "expected": ["OK", "ACTIVE"],

    "field.path": "state",

    "field.oneof.expected": ["OK", "ACTIVE"]

    }

    }

    +

    Alarm for a modem, monitoring message data, location or activity.

    An alarm is a collection of checks that validate the correctness of a modem. For example, an alarm might

    check that the modem is in a given location, or that a field in its messages is between certain values.

    Health for an alarm event is determined by taking the most severe health level from the health_levels configured

    on the failing checks, using this default for any checks that do not have a health_level configured.

    This can be changed on assignment with the default_health_level parameter, to fit the needs of the organization.

    Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of

    your health levels, that level is used. Otherwise, the catch-all health level is used.

    See the health definition for more information on the catch-all health level (typically the most severe).

    Note that the health level displayed here is the result of the steps above.

    When assigned to a (set of) modem(s), an alarm can be customized using its parameters.

    Parameters are based on the check fields, and are also used in the check error message template.

    For the alarm parameters, check parameters are prefixed with the check identifier.

    For example: An alarm with check A (field "healthy" equals 1) and check B (field "state" oneof ["OK", "ACTIVE"])

    would have the following parameters:

    {

    "A": {

    "expected": 1,

    "field.path": "healthy",

    "field.equals.expected": 1

    },

    "B": {

    "expected": ["OK", "ACTIVE"],

    "field.path": "state",

    "field.oneof.expected": ["OK", "ACTIVE"]

    }

    }

    @@ -8166,7 +8404,7 @@

    ModemAlarm

    @@ -8193,7 +8431,7 @@

    ModemAlarm

    ModemAlarm.Check

    -

    A check is a specification of how things should be, i.e. "a value should be within this range".

    When it fails, it produces an event with:

    - a custom health level, or the default defined in the alarm

    - an error message, define from a template in the check

    The error message template is a string with parameters for the relevant data.

    The parameters are included as {parameter}, which gets replaced with the value.

    The supported parameters are different per check, but the parameters below are always supported:

    - modem: the modem number.

    - message: the id of the message, if any.

    - expected: a shortcut for the expected value(s), depending on the check:

    - equals check: expected value

    - oneof check: expected values as [a, b, c]

    - threshold check: expected range as minimum..maximum

    - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)]

    - actual: the invalid actual value(s) for this check.

    The checks below define other available parameters.

    For example (using some parameters for specific checks):

    - "Your device {modem} has left its designated area! It is now at {actual}."

    - "Your device battery is at {actual}%, which is below the recommended minimum of {field.threshold.minimum}%."

    - "Your device battery is draining faster than expected: {actual}% over the past {field.delta.period}."

    - "Your device temperature has exceeded {value.threshold.maximum} degrees: {actual}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {expected}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {field.oneof.expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {field.equals.expected}."

    - "Unexpected value {actual} for field {field.path}!"

    Numeric values can be formatted with an extra postfix on the parameters

    - Round numeric values by adding ":.2f" (for 2 decimals). For example: "{actual:.3f}" (rounds to 3 decimals)

    - Always sign numeric values (when rounded) by prefixing the format with a plus. For example: `{actual:+.3f}`

    - This is applied to numeric fields and fields that can be numeric, like `{actual}` and `{expected}`.

    +

    A check is a specification of how things should be, i.e. "a value should be within this range".

    When it fails, it produces an event with:

    - a custom health level, or the default defined in the alarm

    - an error message, define from a template in the check

    The error message template is a string with parameters for the relevant data.

    The parameters are included as {parameter}, which gets replaced with the value.

    The supported parameters are different per check, but the parameters below are always supported:

    - modem:name: the modem name.

    - modem:number: the modem number.

    - message: the id of the message, if any.

    - expected: a shortcut for the expected value(s), depending on the check:

    - inactivity check: expected duration

    - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)]

    - equals/minimum/maximum check: expected value

    - oneof check (allowed/blocked): expected values as [a, b, c]

    - threshold/delta check: expected range as minimum..maximum, extended with duration for delta check

    - actual: the invalid actual value(s) for this check.

    The checks below define other available parameters.

    For example (using some parameters for specific checks):

    - "Your device {modem} has left its designated area! It is now at {actual}."

    - "Your device battery is at {actual}%, which is below the recommended minimum of {field.threshold.minimum}%."

    - "Your device battery is draining faster than expected: {actual}% over the past {field.delta.period}."

    - "Your device temperature has exceeded {value.threshold.maximum} degrees: {actual}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {expected}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {field.oneof.expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {field.equals.expected}."

    - "Unexpected value {actual} for field {field.path}!"

    Numeric values can be formatted with an extra postfix on the parameters

    - Round numeric values by adding ":.2f" (for 2 decimals). For example: "{actual:.3f}" (rounds to 3 decimals)

    - Always sign numeric values (when rounded) by prefixing the format with a plus. For example: `{actual:+.3f}`

    - This is applied to numeric fields and fields that can be numeric, like `{actual}` and `{expected}`.

    Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. -For example, when using an inactivity check, this would could be used to configure modem health ERROR while +For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in.

    @@ -8237,28 +8475,28 @@

    ModemAlarm.Check

    - + - + - + - + @@ -8293,7 +8531,7 @@

    ModemAlarm.Check.DelayChe

    ModemAlarm.Check.FieldCheck

    -

    A check that evaluates each new message, and checks selected field(s) in the parsed body.

    When multiple fields are selected, the checks are applied to all of them individually.

    See the Json Path documentation at https://goessner.net/articles/JsonPath/ for details on json path.

    We currently do not allow filter expressions.

    Simple examples selecting a field:

    - $.my_field: a field in the root of the parsed object

    - $.my_obj.my_field: a field in a deeper structure

    - $.my_array[x].my_field: the field my_field of the element at index x is selected

    Complex use cases are also possible, but they require a bit more understanding of json path logic:

    - $.my_array.length(): the length of my_array is selected. Combine with an equals or threshold check,

    to require that an array has a certain length.

    - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected

    - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected

    Note that this for the examples above, if they return an array, the entire array is used as the value

    in the comparison for equals and oneof.

    A check of this type has the following parameters (matches the fields):

    - field.path: replace the path for this field

    - field.ignoreFieldNotFound: replace the value for ignore_field_not_found

    For the equals check:

    - field.equals.expected: iff this is an equals check, replace the expected value

    For the oneof check:

    - field.oneof.expected: iff this is a oneof check, replace the expected values

    For the threshold check:

    - field.threshold.expected: iff this is a threshold check, replace the expected range

    - field.threshold.minimum: iff this is a threshold check, replace the expected minimum

    - field.threshold.maximum: iff this is a threshold check, replace the expected maximum

    For the delta check:

    - field.delta.period:

    - field.delta.threshold.expected: iff this is a delta check, replace the expected range

    - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum

    - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum

    All of the parameters above can be used in the error message template.

    The delta check also adds a few additional error message variables:

    - {field.delta.previous}: the previous value for the field

    - {field.delta.difference} (also {actual}): the difference between previous and current value for the field

    - {field.delta.current}: the current value for the field

    +

    A check that evaluates each new message, and checks selected field(s) in the parsed body.

    When multiple fields are selected, the checks are applied to all of them individually.

    See the Json Path documentation at https://goessner.net/articles/JsonPath/ for details on json path.

    We currently do not allow filter expressions.

    Simple examples selecting a field:

    - $.my_field: a field in the root of the parsed object

    - $.my_obj.my_field: a field in a deeper structure

    - $.my_array[x].my_field: the field my_field of the element at index x is selected

    Complex use cases are also possible, but they require a bit more understanding of json path logic:

    - $.my_array.length(): the length of my_array is selected. Combine with an equals or threshold check,

    to require that an array has a certain length.

    - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected

    - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected

    Note that for the examples above, if they return an array, the entire array is used as the value

    in the comparison for equals and oneof.

    A check of this type has the following parameters (matches the fields):

    - field.path: replace the path for this field

    - field.ignoreFieldNotFound: replace the value for ignore_field_not_found

    For the equals check:

    - field.equals.expected: iff this is an equals check, replace the expected value

    For the allowed check:

    - field.allowed.allowed: iff this is an allowed check, replace the expected values

    For the blocked check:

    - field.blocked.blocked: iff this is a blocked check, replace the expected values

    For the threshold check:

    - field.threshold.expected: iff this is a threshold check, replace the expected range

    - field.threshold.minimum: iff this is a threshold check, replace the expected minimum

    - field.threshold.maximum: iff this is a threshold check, replace the expected maximum

    For the delta check:

    - field.delta.period: iff this is a delta check, replace the expected duration

    - field.delta.threshold.expected: iff this is a delta check, replace the expected range

    - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum

    - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum

    All of the parameters above can be used in the error message template.

    The delta check also adds a few additional error message variables:

    - {field.delta.previous}: the previous value for the field

    - {field.delta.difference} (also {actual}): the difference between previous and current value for the field

    - {field.delta.current}: the current value for the field

    location ModemAlarm.Check.LocationCheck

    Check whether the device is in a given location.

    field ModemAlarm.Check.FieldCheck

    Check that a message body field has a specified value.

    inactivity ModemAlarm.Check.InactivityCheck

    Check whether the device exceeds inactivity limits.

    delay ModemAlarm.Check.DelayCheck

    Check whether a message delay exceeds delay limits.

    @@ -8331,49 +8569,49 @@

    ModemAlarm.Check.FieldChe

    - + - + - + - + - + - + - + @@ -8421,7 +8659,7 @@

    ModemAlarm.C

    - + @@ -8494,7 +8732,7 @@

    ModemAlarm.Ch

    - + @@ -8667,7 +8905,7 @@

    ModemAlarm.Check.Locat

    ModemAlarm.HealthLevelAfterResolved

    -

    Allow the alarm to cause a health level for the modem even after a new message has come in.

    Typically, an alarm event only affects the modem health while it is from the last message from that modem.

    By configuring this, you can specify the modem health should be affected for a longer period.

    For example, when using an inactivity check, this would could be used to configure modem health ERROR while

    inactive, lowering to INVESTIGATE for a day after a new message comes in.

    +

    Allow the alarm to cause a health level for the modem even after a new message has come in.

    Typically, an alarm event only affects the modem health while it is from the last message from that modem.

    By configuring this, you can specify the modem health should be affected for a longer period.

    For example, when using an inactivity check, this could be used to configure modem health ERROR while

    inactive, lowering to INVESTIGATE for a day after a new message comes in.

    equals ModemAlarm.Check.FieldCheck.EqualsCheck

    Check that a field equals a value.

    allowed ModemAlarm.Check.FieldCheck.AllowedCheck

    Check that a field equals one of a set of values.

    blocked ModemAlarm.Check.FieldCheck.BlockedCheck

    Check that a field does not equal one of a set of values.

    minimum ModemAlarm.Check.FieldCheck.MinimumCheck

    Chech that a field is higher than the given value.

    maximum ModemAlarm.Check.FieldCheck.MaximumCheck

    Check that a field is lower than the given value.

    threshold ModemAlarm.Check.FieldCheck.ThresholdCheck

    Check that a field is within a given numeric range.

    delta ModemAlarm.Check.FieldCheck.DeltaCheck

    Check that a field's difference in value over a given period is within a specified numeric range.

    blocked google.protobuf.Value repeated

    The list of blocked values; the field should not match any of them.

    expected google.protobuf.Value

    The expected value a field should have.

    @@ -8698,7 +8936,7 @@

    ModemAlarm.Health

    ModemAlarmSelection

    -

    +

    Selection criteria for listing modem alarms in an organization. If no options are provided, all modem alarms

    are valid.

    If values are provided both for identifiers and search, then only alarms are selected that match both criteria.

    @@ -8711,7 +8949,7 @@

    ModemAlarmSelection

    - + @@ -8732,7 +8970,9 @@

    ModemAlarmSelection

    - + @@ -8743,7 +8983,7 @@

    ModemAlarmSelection

    TestModemAlarmTestParameters

    -

    +

    Test a set of parameters on a modem alarm, to see the result when they are applied during assignment.

    @@ -8770,14 +9010,14 @@

    TestModemAlarmTe

    - + - + @@ -9071,14 +9311,14 @@

    UpdateModemAlarmAddC

    - + - + @@ -9113,7 +9353,7 @@

    UpdateModemAlarmAdd

    UpdateModemAlarmAvailability

    -

    +

    Update the modem alarm availability, specifying for which (child) organizations an alarm is available.

    @@ -9140,7 +9380,7 @@

    UpdateModemAlarm

    - + @@ -9183,7 +9423,7 @@

    UpdateModemAlar

    UpdateModemAlarmRemoveCheck

    -

    +

    Remove a check from an alarm.

    @@ -9210,14 +9450,14 @@

    UpdateModemAlarmR

    - + - + @@ -9252,7 +9492,7 @@

    UpdateModemAlarm

    UpdateModemAlarmUpdateCheck

    -

    +

    Update a check of an alarm.

    Only the values of a check can be updated, e.g., it is not possible to change an inactivity check to a location

    check.

    @@ -9279,21 +9519,21 @@

    UpdateModemAlarmU

    - + - + - + diff --git a/docs/html/certificate.html b/docs/html/certificate.html index ad84d36..ac3767e 100644 --- a/docs/html/certificate.html +++ b/docs/html/certificate.html @@ -289,6 +289,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -305,6 +313,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -341,6 +353,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1336,6 +1364,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + +
    identifiers string repeated

    Selects alarms by the given list of alarm identifiers.

    only_owned_alarms bool

    Only list owned alarms. Alarms are considered owned if your current organization created them, and thus would +be able to delete them. Alarms can also be inherited from parent organizations, in which case they are owned +by that parent organization.

    alarm_identifier string

    The identifier of the alarm on which to test parameters.

    parameters google.protobuf.Struct

    The parameters of the alarm that are changed.

    alarm_identifier string

    The identifier of the alarm to which the check is added.

    check ModemAlarm.Check

    The check to add to the Modem Alarm. Identifier must be unique within the alarm.

    The check to add to the Modem Alarm. Identifier of the check must be unique within the alarm.

    alarm_identifier string

    The identifier of the alarm for which to update the modem availability.

    alarm_identifier string

    The identifier of the alarm from which to remove the check.

    check_identifier string

    The identifier of the check to remove.

    alarm_identifier string

    The identifier of the alarm of which to update the check.

    check_identifier string

    The identifier of the check to update.

    update_check ModemAlarm.Check

    The new values for the check of this alarm.

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1468,6 +1558,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1775,6 +1896,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/currentuser.html b/docs/html/currentuser.html index 9105f63..f8b6a29 100644 --- a/docs/html/currentuser.html +++ b/docs/html/currentuser.html @@ -333,6 +333,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -349,6 +357,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -385,6 +397,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1674,6 +1702,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1806,6 +1896,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2113,6 +2234,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/device.html b/docs/html/device.html new file mode 100644 index 0000000..41cf2c8 --- /dev/null +++ b/docs/html/device.html @@ -0,0 +1,7727 @@ + + + + + Protocol Documentation + + + + + + + + + + +

    Protocol Documentation

    + +

    Table of Contents

    + +
    + +
    + + + +
    +

    device.proto

    Top +
    +

    + + +

    Device

    +

    Information about a device.

    A device is anything in the Hiber network that can send data to our systems.

    They have a unique device number in our system, used to identify them.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    numberstring

    An 8-character hexadecimal string, formatted for human readability. System ignores spaces.

    organizationstring

    The organization that owns this device

    namestring

    A descriptor given to the device, defaults to it's number.

    locationhiber.Location

    inactivityhiber.Durationoptional

    The amount of time since the last message from this modem was received on the server.

    health_levelhiber.health.HealthLevel

    Health level based on the modem alarm and some always-present alarms.

    lifecyclehiber.modem.Modem.Lifecycle

    The current lifecycle the modem is in.

    peripheralsDevice.PeripheralsEntryrepeated

    additional information

    notesstring

    Notes field that can be used to add additional information to a modem.

    secure_notesstringoptional

    Secure notes field that can be used to add additional information to a modem, with limited accessibility.

    tagshiber.tag.Tagrepeated

    linkDevice.Linksoptional

    Optional information about what other devices this devices is linked to.

    metadatagoogle.protobuf.Struct

    Modem metadata, typically extracted from messages.

    time_zonestringoptional

    The timezone configured for the modem.

    transmission_intervalhiber.Durationoptional

    The transmission interval for this modem, if configured.

    + + + + + + +

    Collection of data about the devices it is connected to.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    identifiersstringrepeated

    Other identifiers for this devices. Could include data like its MAC-address or otherwise unique identifier.

    parentstringoptional

    The device directly downstream from this device. +Usually a gateway of some sorts. This device sends its data directly to its parent. +The parent will relay the data to our systems.

    + + + + + +

    Device.PeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    DeviceSelection

    +

    Selection object for devices.

    Filter devices by device number, tags, etc.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    free_text_searchstring

    modemshiber.Filter.Modems

    identifiershiber.Filter.ModemIdentifiers

    health_levelhiber.Filter.HealthLevels

    lifecyclesModemFilter.Lifecycles

    with_parentshiber.Filter.Modems

    peripheralshiber.Filter.Properties

    filter_by_tagshiber.tag.TagSelection

    with_last_message_inhiber.TimeRange

    + + + + + +

    ModemFilter

    +

    + + + + + +

    ModemFilter.Lifecycles

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includehiber.modem.Modem.Lifecyclerepeated

    excludehiber.modem.Modem.Lifecyclerepeated

    + + + + + + + +

    Sort

    +

    Sorting options for the results.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DEVICE_NAME_ASC0

    Sort alphabetically on the name of the device. +De default name of the device is its HEX number, in ascending order.

    DEVICE_NAME_DESC1

    Sort alphabetically on the name of the device. +De default name of the device is its HEX number, in descending order.

    DEVICE_NUMBER_ASC2

    Sort numerically on the number of the device, in ascending order.

    DEVICE_NUMBER_DESC3

    Sort numerically on the number of the device, in descending order.

    ACTIVITY4

    Sort devices on most recent activity first (e.g. newest message received).

    INACTIVITY5

    Sort devices on least recent activity first (e.g. longest no message received).

    LIFECYCLE_ASC6

    Sort device on its lifecycle state.

    LIFECYCLE_DESC7

    Sort device on its lifecycle state in reverse order.

    LIFECYCLE_ALPHABETICAL_ASC8

    Sort device on lifecycle name, alphabetically.

    LIFECYCLE_ALPHABETICAL_DESC9

    Sort device on lifecycle name, alphabetically in reverse order.

    ORGANIZATION_ASC10

    Sort alphabetically on the name of the organization that owns the device, in ascending order.

    ORGANIZATION_DESC11

    Sort alphabetically on the name of the organization that owns the device, in descending order.

    HEALTH_ASC12

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

    HEALTH_DESC13

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

    HEALTH_ALPHABETICAL_ASC14

    Health sorted alphabetically by health level name.

    HEALTH_ALPHABETICAL_DESC15

    Health sorted alphabetically by health level name, descending order.

    + + + + + + + +
    +

    base.proto

    Top +
    +

    + + +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    centerLocation

    bottom_leftLocation

    top_rightLocation

    textualstring

    Text representation. Can be used as an alternative input in a request, filled in by the API in responses.

    + + + + + +

    Avatar

    +

    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)

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    urlstring

    A URL that contains the location of avatar.

    imageNamedFile

    The data of the avatar as a Named File.

    + + + + + +

    BytesOrHex

    +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    bytesbytes

    hexstring

    + + + + + +

    BytesOrHex.Update

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueBytesOrHex

    + + + + + +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    yearuint32

    monthuint32

    dayuint32

    textualstring

    + + + + + +

    DoubleRange

    +

    Decimal range.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    startdouble

    enddouble

    + + + + + +

    Duration

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    durationgoogle.protobuf.Duration

    textualstring

    + + + + + +

    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)

    "Exclude" fields filter out anything in the exclude set.

    When combined with include, exclude takes precedence when determining whether an item is filtered

    + + + + + +

    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

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_allbool

    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ChildOrganizations.Update

    +

    Update object to update a Filter.ChildOrganizations field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.ChildOrganizations

    + + + + + +

    Filter.Events

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeEventTyperepeated

    excludeEventTyperepeated

    + + + + + +

    Filter.Events.Update

    +

    Update object to update a Filter.Events field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.Events

    + + + + + +

    Filter.FieldEnumValues

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fieldstring

    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.Modems

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    Include all modems with these modem numbers (HEX)

    excludestringrepeated

    Exclude all modems with these modem numbers (HEX). +Exclude takes precedence over include.

    + + + + + +

    Filter.Modems.Update

    +

    Update object to update a Filter.Modems field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.Modems

    + + + + + +

    Filter.OrganizationPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_allbool

    includeOrganizationPermissionrepeated

    excludeOrganizationPermissionrepeated

    + + + + + +

    Filter.Organizations

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + + +

    Filter.Publishers

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeint64repeated

    excludeint64repeated

    only_activebool

    + + + + + +

    Filter.SupportPermissions

    +

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

    excludeSupportPermissionrepeated

    + + + + + +

    Filter.Tags

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeint64repeated

    excludeint64repeated

    + + + + + +

    Filter.Tags.Update

    +

    Update object to update a Filter.Tags field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.Tags

    + + + + + +

    Filter.UserPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_allbool

    includeUserPermissionrepeated

    excludeUserPermissionrepeated

    + + + + + +

    Filter.Users

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.Webhooks

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeint64repeated

    excludeint64repeated

    only_activebool

    + + + + + +

    Location

    +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    latitudedouble

    Decimal degrees north.

    longitudedouble

    Decimal degrees east.

    textualstring

    Text representation. Can be used as an alternative input in a request, filled in by the API in responses.

    + + + + + +

    LocationSelection

    +

    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

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    areasArearepeated

    Rectangular areas, each defined by two locations, normalized to bottom-left and top-right points.

    shapesShaperepeated

    Polygon shapes, each defined by a list of locations, which draw a shape on the map.

    + + + + + +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + + +

    NamedFile

    +

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    dataBytesOrHex

    The binary payload that represents the file

    media_typestring

    The media-type of the file, as defined by RFC 6838 or its extensions

    namestring

    A semantic name for this file.

    + + + + + +

    Pagination

    +

    Pagination is normalized across the api. Provide a pagination object to get a specific page or offset,

    or limit your data.

    Calls that have a pagination option automatically return a Pagination.Result, which contains

    either the specified pagination options or the defaults, as well as total counts. It also contains Pagination

    objects that can be used for the previous and next page.

    This effectively means that an api user would never need to create their own pagination object; as long as they

    start at the first page and continue to the next, they can use the provided Pagination object.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    sizeint32

    pageint32

    + + + + + +

    Pagination.Result

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    sizeint32

    pageint32

    totalint32

    total_pagesint32

    previousPagination

    nextPagination

    approximated_totalbool

    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.

    + + + + + +

    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.

    For example, the outline of a city would be defined using a Shape,

    while a rectangular region is easier to define using Area.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    pathLocationrepeated

    textualstring

    Text representation. Can be used as an alternative input in a request, filled in by the API in responses.

    + + + + + +

    TimeRange

    +

    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

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    startTimestamp

    endTimestamp

    + + + + + +

    Timestamp

    +

    Timestamp type for convenience.

    Some clients are better at parsing Google's seconds/nanos based timestamp, while others prefer a text-based format.

    To accommodate this, this Timestamp type supports both.

    When used as API output, both the timestamp and textual fields will be set. The textual field has the commonly

    used ISO 8601 format (i.e. "2018-01-01T13:00:00Z").

    When used an API input, only one of the fields is needed, there is no need to set both. When both are set, the

    timestamp field will be used, the textual field will be discarded.

    In addition, the textual field, when used as input, allows for a number of shortcuts that get converted into

    timestamps:

    - "now": converted to the current timestamp at the time of the request

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    timestampgoogle.protobuf.Timestamp

    time_zonestring

    textualstring

    + + + + + +

    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.

    To use this to update, set a value and set updated to true

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valuebool

    + + + + + +

    UpdateClearableString

    +

    Update object for a string that can be empty.

    Since an empty string is also the default value, we need to distinguish between an omitted value and

    setting the value to an empty string, in an update object.

    To use this to update, set a value and set updated to true

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valuestring

    + + + + + +

    UpdateOptionalDuration

    +

    Update object for an optional Duration.

    To use this to update, set a value and set updated to true.

    To clear the duration, set updated to true, but set no value.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueDuration

    + + + + + +

    UpdateOptionalId

    +

    Update object for an optional id.

    To use this to update, set a value and set updated to true. To clear the id, set updated to true, but set no value.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueint64

    + + + + + +

    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

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueuint32

    + + + + + + + +

    EventType

    +

    Enum of api-accessible events.

    The event types in this enum have a protobuf implementation, and can be used, for example, in the

    api event stream and publishers.

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

    ORGANIZATION_CREATED34

    ORGANIZATION_UPDATED12

    ORGANIZATION_DELETED35

    ORGANIZATION_EVENT_CONFIGURATION_UPDATED43

    MODEM_CREATED55

    MODEM_UPDATED36

    MODEM_LOCATION_UPDATED4

    MODEM_ACTIVATED33

    MODEM_MESSAGE_RECEIVED5

    MODEM_MESSAGE_BODY_PARSED39

    MODEM_MESSAGE_BODY_RECEIVED45

    MODEM_MESSAGE_CANNOT_BE_PARSED15

    MODEM_MESSAGE_SUMMARY42

    MODEM_MESSAGE_BODY_PARSER_CREATED46

    MODEM_MESSAGE_BODY_PARSER_UPDATED47

    MODEM_MESSAGE_BODY_PARSER_DELETED48

    MODEM_ALARM56

    MODEM_ALARM_CREATED57

    MODEM_ALARM_UPDATED58

    MODEM_ALARM_DELETED59

    ASSIGNED63

    UNASSIGNED64

    MODEM_TRANSFER_STARTED17

    MODEM_TRANSFER_RECEIVED18

    MODEM_TRANSFER_CANCELLED19

    MODEM_TRANSFER_NOT_RECEIVED20

    MODEM_TRANSFER_RETURN_TRANSFER_STARTED21

    MODEM_CLAIMED22

    PUBLISHER_CREATED1

    PUBLISHER_UPDATED2

    PUBLISHER_DELETED3

    PUBLISHER_AUTO_DISABLED37

    PUBLISHER_FAILED11

    USER_ACCESS_REQUEST8

    USER_INVITED38

    USER_ADDED9

    USER_REMOVED10

    USER_VALIDATION_UPDATED54

    TOKEN_CREATED31

    TOKEN_EXPIRY_WARNING25

    TOKEN_EXPIRED26

    TOKEN_DELETED32

    EXPORT_CREATED65

    EXPORT_READY66

    EXPORT_FAILED67

    + +

    Health

    +

    Health is an indicator for issues. It is used for publishers to give a quick indication of issues.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    OK0

    WARNING1

    ERROR2

    + +

    UnitOfMeasurement

    +

    Unit of measurement for a numeric value.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    UNIT_UNKNOWN0

    DURATION_MILLISECONDS40

    DURATION_SECONDS1

    DURATION_MINUTES2

    DURATION_HOURS3

    DURATION_DAYS4

    DURATION_WEEKS41

    FUEL_EFFICIENCY_LITER_PER_100_KILOMETER30

    FUEL_EFFICIENCY_KILOMETER_PER_LITER31

    FUEL_EFFICIENCY_KILOMETER_PER_US_GALLON32

    FUEL_EFFICIENCY_KILOMETER_PER_IMPERIAL_GALLON33

    FUEL_EFFICIENCY_MILE_PER_US_GALLON34

    FUEL_EFFICIENCY_MILE_PER_IMPERIAL_GALLON35

    FUEL_EFFICIENCY_MILE_PER_LITER36

    DISTANCE_METER8

    DISTANCE_MILLIMETER9

    DISTANCE_CENTIMETER10

    DISTANCE_KILOMETER11

    DISTANCE_NAUTICAL_MILE26

    DISTANCE_MILE21

    DISTANCE_YARD27

    DISTANCE_FOOT28

    DISTANCE_INCH29

    PERCENT16

    PRESSURE_BAR12

    PRESSURE_PSI14

    PRESSURE_K_PA17

    SPEED_KILOMETERS_PER_HOUR18

    SPEED_KNOTS19

    SPEED_METERS_PER_SECOND20

    SPEED_MILES_PER_HOUR22

    TEMPERATURE_KELVIN5

    TEMPERATURE_DEGREES_CELSIUS6

    TEMPERATURE_DEGREES_FAHRENHEIT7

    VOLTAGE_MILLIVOLT15

    VOLUME_LITER23

    VOLUME_GALLON_US24

    VOLUME_GALLON_IMPERIAL25

    VOLUME_CUBIC_METER42

    VOLUME_CUBIC_FOOT43

    MASS_KILOGRAMS37

    MASS_POUNDS38

    FLOW_CUBIC_METERS_PER_HOUR39

    + + + + + + + +
    +

    health.proto

    Top +
    +

    + + +

    AddHealthLevel

    +

    + + + + + +

    AddHealthLevel.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    new_health_levelHealthLevel

    Add the given level to the organizations health levels. +The new health level will be added with the highest severity (at the bottom of the health levels list).

    + + + + + +

    AddHealthLevel.Response

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_levelsHealthLevelrepeated

    + + + + + +

    HealthLevel

    +

    A health level in an organization.

    Health can be customized depending on your need.

    The default health levels are:

    - OK (green): no problems detected

    - WARNING (orange): unresolvable problems detected, for example delayed or skipped messages

    - ERROR (red): significant problems detected (that typically can be resolved),

    for example inactivity or invalid messages (resolved on a successful message)

    Health levels can be customized to as many as you need for your operations, for example:

    - INTERVENTION

    - DEFECT

    - BATTERY

    - HIGH

    - LOW

    Health levels are ordered by severity (low to high),

    and of all things affecting a modem's health,

    only the most severe level will be returned when retrieving a modem.

    Health can be assigned using modems alarms, which specify the health level they will cause on a modem (and for how

    long, if it does not resolve automatically).

    Precisely one health level can be assigned as a catch-all for any unknown health levels from alarms (or Hiber systems),

    which can happen when a device manufacturer has provided alarms to your device (e.g. a low battery alarm).

    By default, any unknown health levels map to the level that is marked catch-all.

    Health level have a set of named colors, represented by a map where the key is the name of the color

    and the value is a string that represents a valid CSS3 color.

    Simple examples are: green, red, orange, grey, #FF00FF for fuchsia, etc (Keep in mind that CSS3 allows for many

    ways to define colors, see https://www.w3.org/TR/2003/WD-css3-color-20030214/).

    All the following definitions also mean "red":

    - rgb(255, 0, 0)

    - rgb(100%, 0, 0)

    - rgba(100%, 0%, 0%, 100%)

    - hsl(0, 100%, 50%)

    - hsla(0, 100%, 50%, 1)

    The client is responsible for rendering the correct color from the CSS3 color-space and for setting the colors and

    their names. There is no verification on missing named colors, so the client must set sensible defaults when colors

    are missing.

    To assist with sorting, health levels have a numeric severity equal to their index in the sorted list of health

    levels (starting at 1). This means higher numbers denote a more severe health.

    Since these values are noting more than a list index, they should not be cached, compared to another organization or

    compared to values retrieved from the API at another time.

    For example, an organization using the default health would have:

    - Ok: severity 1

    - Warning: severity 2

    - Error: severity 3

    That organization could then add a new health level in between Ok and Warning, meaning the severity of Warning and

    Error will change:

    - Ok, severity 1

    - ItsComplicated, severity 2

    - Warning, severity 3

    - Error, severity 4

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    levelstring

    The name of this health level. +Levels are identified by their name. +The API does support renaming, where the rename is propagated to all the relevant parts of the system.

    colorstring

    Deprecated. Default color for the health level, as a string that represents a valid CSS3 color. +DEPRECATED: Maps to the color named "text" in color_data.

    color_dataHealthLevel.ColorDataEntryrepeated

    Map of named colors, where key is the name and the value is a valid CSS3 color definition.

    severityint64

    A unique numeric value equal to the index of this health level in the list of health levels sorted by ascending severity (starting at 1). +This means higher numbers denote a more severe health. +This value cannot be used when creating or updating. +To change the severity for a health level, reorder all health levels.

    catch_allbool

    Precisely one health level can be assigned as a catch-all for any unknown health levels from alarms (or Hiber systems), +which can happen when a device manufacturer has provided alarms for your device (e.g. a low battery alarm). +By default, unknown health levels map to the level of the highest severity, +unless another level is marked as catch-all.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    color

    true

    + + + + + +

    HealthLevel.ColorDataEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    HealthLevelSelection

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    searchstring

    Search for the given string in the levels and colors.

    levelsstringrepeated

    Filter by exact levels.

    + + + + + +

    ListHealthLevels

    +

    + + + + + +

    ListHealthLevels.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionHealthLevelSelection

    + + + + + +

    ListHealthLevels.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_levelsHealthLevelrepeated

    requestListHealthLevels.Request

    + + + + + +

    RemoveHealthLevel

    +

    + + + + + +

    RemoveHealthLevel.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    levelstring

    + + + + + +

    RemoveHealthLevel.Response

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_levelsHealthLevelrepeated

    + + + + + +

    ReorderHealthLevels

    +

    Re-order the health levels for your organization.

    + + + + + +

    ReorderHealthLevels.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    levelsstringrepeated

    The health levels for the organization, ordered by severity (low to high). +This list must include _all_ health levels, or the call will fail. +The implication is, that if someone adds, removes or renames a level just before this call is sent, +then this call will fail to protect against strange results.

    + + + + + +

    ReorderHealthLevels.Response

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    reordered_health_levelsHealthLevelrepeated

    + + + + + +

    UpdateHealthLevel

    +

    + + + + + +

    UpdateHealthLevel.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    levelstring

    renamestring

    Optionally, rename this health level. +NOTE! Don't use this to change the semantics of a health level. +All historic events that have this health-level will change with it. +(Unless you are very sure you want to change history, that is)

    update_colorhiber.UpdateClearableString

    Deprecated. Optionally, set or update the color for this health level. +DEPRECATED, use add_colors with name "text". +Vice versa, this field will also update the "text" color in the color_data field of HealthLevel.

    remove_colorsstringrepeated

    Remove colors by name. Will remove the named color from the color_data field in HealthLevel.

    add_colorsUpdateHealthLevel.Request.AddColorsEntryrepeated

    Add colors by name. Will add the named color from the color_data field in HealthLevel. +For backwards compatibility reasons, if add_colors contains a color named "text", it will also update +the field color in HealthLevel

    update_catch_allhiber.UpdateBoolean

    Optionally, set or unset the catch all flag.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    update_color

    true

    + + + + + +

    UpdateHealthLevel.Request.AddColorsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    UpdateHealthLevel.Response

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_levelsHealthLevelrepeated

    + + + + + + + + + + + +

    HealthService

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    ListListHealthLevels.RequestListHealthLevels.Response

    List the health levels.

    ReorderReorderHealthLevels.RequestReorderHealthLevels.Response

    Reorder the health levels, changing the order of severity.

    AddAddHealthLevel.RequestAddHealthLevel.Response

    Add a new health level at the end of the list (highest severity).

    UpdateUpdateHealthLevel.RequestUpdateHealthLevel.Response

    Update or rename a health level.

    RemoveRemoveHealthLevel.RequestRemoveHealthLevel.Response

    Remove a health level. Any events with that level are redirected to the catch-all level.

    + + + + +
    +

    modem.proto

    Top +
    +

    Modem and message management.

    Modems are anything capable of sending messages to the system. They have a unique modem number,

    used to identify them.

    + + +

    CreateModem

    +

    Create modems for your organization.

    This call is not available to all organizations, and is typically used to create modems for testing or

    when you want to connect a device to the API using just the API calls in the TestingService.

    + + + + + +

    CreateModem.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    amountuint32

    The amount of modems to create.

    namesstringrepeated

    The name(s) to give the new modem(s). +Must not contain more values than the amount of modems to create.

    external_device_identifiersstringrepeated

    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.

    lifecycleModem.Lifecycle

    The status for the new modems.

    technicalModem.TechnicalData

    The technical data, such as manufacturer and hardware information for the new modems.

    peripheralsCreateModem.Request.PeripheralsEntryrepeated

    The peripherals for the new modems.

    notesstring

    Notes for all new modems.

    locationhiber.Location

    random_location_in_areahiber.Area

    tagshiber.tag.UpdateTagsForItem

    The tags to set to the new modems, either existing or created by this call.

    include_modems_in_responsebool

    Whether to return the full Modem in addition to the modem number and verification code.

    include_verification_codebool

    Whether to return the verification code for the modem.

    + + + + + +

    CreateModem.Request.PeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    CreateModem.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsCreateModem.Response.CreatedModemrepeated

    requestCreateModem.Request

    + + + + + +

    CreateModem.Response.CreatedModem

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modem_numberstring

    The modem number that was created.

    verification_codestring

    The verification code for this modem number, used to, for example, claim modems. +Only available when include_verification_code was set to true.

    modemModem

    Only available when include_modems_in_response was set to true.

    + + + + + +

    GetModemRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    in_organizationshiber.organization.OrganizationSelection

    If set, look up the modem in multiple organizations, instead of in the given or default organization. +This can be used to find a modem if you do not know in which organization it is. +Since this is a selection object, an empty selection searches in all accessible organizations, but +the organizations can be limited using the fields in the OrganizationSelection.

    modem_numberstring

    The modem to get.

    child_organizationshiber.Filter.ChildOrganizations

    Deprecated. Look for the modem in child organizations. +DEPRECATED: use the in_organizations flag instead.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    child_organizations

    true

    + + + + + +

    ListModemMessagesRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemMessageSelection

    paginationhiber.Pagination

    + + + + + +

    ListModemMessagesRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    messagesModemMessagerepeated

    requestListModemMessagesRequest

    paginationhiber.Pagination.Result

    + + + + + +

    ListModemsGrouped

    +

    Lists all modems the given criteria, grouped by gateway.

    Pagination is applied to modems in a group, not to the groups themselves.

    + + + + + +

    ListModemsGrouped.Request

    +

    The usage of ListModemsRequest and ListModemsRequest.Response in the Response.Group was intentionally

    chosen to simplify pagination withing a group, since the response contains the request

    (which will be updated with the group it is in) and pagination to select the next page using the

    list method.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    group_contentListModemsRequest

    The modems you want to display in the groups. +This is a ListModemsRequest that is used to fetch the modems for each group, with the added limitation +that the modems must be in the group.

    groupsListModemsRequest

    Select the parents for the groups to display. +Anything selected here that cannot have any connected modems (i.e. a direct modem) wil be omitted +unless allow_any_group_parent is set to true. +Only gateways will have connected devices, so unless allow_any_group_parent is true, +type is replaced with GATEWAY. This may change in the future if more grouping options are introduced.

    allow_any_group_parentbool

    Set to true to allow group request to return modems that can never be the parent of a group. +- If this flag is false, the modems for the groups are automatically filtered on being a parent of a group. + Note that the group may still be empty, i.e. when a gateway has no connected devices. +- If this flag is true, the group parents can include modems which cannot be a parent and for which + the group can only be empty.

    + + + + + +

    ListModemsGrouped.Response

    +

    The usage of ListModemsRequest and ListModemsRequest.Response in the Response.Group was intentionally

    chosen to simplify pagination withing a group, since the response contains the request

    (which will be updated with the group it is in) and pagination to select the next page using the

    list method.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    groupsListModemsRequest.Responserepeated

    The groups, based on a parent (typically a gateway unless allow_any_group_parent was set). +This is a ListModemsRequest.Response, with the selection updated with its parent and includes +the group parent in the group_parents field.

    requestListModemsGrouped.Request

    paginationhiber.Pagination.Result

    sorted_byListModemsRequest.Sortrepeated

    + + + + + +

    ListModemsRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemSelection

    Select which modems to return.

    paginationhiber.Pagination

    Paginate through results.

    sort_byListModemsRequest.Sortrepeated

    Sort the modem with the given sort options.

    include_inbound_modemsbool

    Whether to include inbound modems in the results. +Inbound modems are modems that are in a transfer that has been sent *to* your organization, but that has not +been marked as received yet.

    include_outbound_modemsbool

    Whether to include outbound modems in the results. +Inbound modems are modems that are in a transfer that has been sent *from* your organization, but that has not +been marked as received yet.

    child_organizationshiber.Filter.ChildOrganizations

    Deprecated. Include modems from the selected child organizations. +DEPRECATED: this option will be removed in the future!

    location_selectionhiber.LocationSelection

    Filter modems by location.

    include_missing_group_parentsbool

    Set this to true to populate the group_parents field in the response. +This will be populated with missing group parents (i.e. gateways) for the the modems on this page. +Any group parent that is on the current page is not included in this list to avoid duplicate data.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    child_organizations

    true

    + + + + + +

    ListModemsRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsModemrepeated

    requestListModemsRequest

    paginationhiber.Pagination.Result

    sorted_byListModemsRequest.Sortrepeated

    group_parentsModemrepeated

    This will be populated with missing group parents (i.e. gateways) for the the modems on this page. +Any group parent that is on the current page is not included in this list to avoid duplicate data. +Only set when include_missing_group_parents is true in the request.

    + + + + + +

    MessageCountRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemMessageSelection

    time_zone_offsetint32

    Numeric timezone offset for day grouping. Optional.

    time_zonestring

    Timezone string for day grouping. Optional.

    + + + + + +

    MessageCountRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    message_count_per_dayMessageCountRequest.Response.MessageCountrepeated

    requestMessageCountRequest

    + + + + + +

    MessageCountRequest.Response.MessageCount

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    datehiber.Date

    countint32

    + + + + + +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    numberstring

    An 8-character hexadecimal string

    organizationstring

    namestring

    An optional descriptor given to the modem

    locationhiber.Location

    last_message_iduint64

    last_message_received_athiber.Timestamp

    Time the server has received the last message.

    last_message_sent_athiber.Timestamp

    Time the modem has sent the last message.

    last_message_bodyhiber.BytesOrHex

    The body of the last message.

    inactivityhiber.Duration

    The amount of time since the last message from this modem was received on the server.

    healthhiber.Health

    Deprecated. 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_levelhiber.health.HealthLevel

    Health level based on the modem alarm and some always-present alarms.

    lifecycleModem.Lifecycle

    active_subscriptionModem.ActiveSubscription

    additional information

    technicalModem.TechnicalData

    peripheralsModem.Peripherals

    in_transferModem.Transfer

    notesstring

    Notes field that can be used to add additional information to a modem.

    secure_notesstring

    Secure notes field that can be used to add additional information to a modem, with limited accessibility.

    tagshiber.tag.Tagrepeated

    is_gatewaybool

    Deprecated. [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_gatewaybool

    Deprecated. [DEPRECATED] Whether the modem is connected to a modem configured as a gateway. +Use `type` instead.

    connected_to_gatewaystring

    Deprecated. [DEPRECATED] The modem number that this modem is connected to, if any. +Use `connected_device_info.connected_to_gateway` instead.

    external_device_idsstringrepeated

    Deprecated. [DEPRECATED] External device ids, if any. +Use `connected_device_info.external_device_ids` instead.

    typeModem.Type

    The type of modem. +Used mainly to differentiate in the UI or to sort on.

    gateway_infoModem.GatewayInfo

    Additional information when this modem is a gateway.

    connected_device_infoModem.ConnectedDeviceInfo

    Additional information when this modem is a connected device.

    metadatagoogle.protobuf.Struct

    Modem metadata, typically extracted from messages.

    time_zonestring

    The timezone configured for the modem.

    transmission_intervalhiber.Duration

    The transmission interval for this modem, if configured.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameOption
    health

    true

    is_gateway

    true

    is_device_connected_to_gateway

    true

    connected_to_gateway

    true

    external_device_ids

    true

    + + + + + +

    Modem.ActiveSubscription

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    typehiber.organization.subscription.ServiceType

    start_datehiber.Timestamp

    end_datehiber.Timestamp

    + + + + + +

    Modem.ConnectedDeviceInfo

    +

    Additional information when this modem is a connected device.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    connected_to_gatewaystring

    The gateways that this modem is connected to. +This field reflects the gateway that processed the last message for this modem. +If the modem is connected to multiple gateways, the last used gateway is tracked here.

    external_device_idsstringrepeated

    External device ids for this modem.

    + + + + + +

    Modem.GatewayInfo

    +

    Additional information when this modem is a gateway.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    number_of_connected_devicesint32

    + + + + + +

    Modem.Peripherals

    +

    Peripherals attached to the modem, including antenna, whether it has a gps antenna and an

    open field for peripherals like battery, sensors, etc.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    hiber_antennaModem.Peripherals.HiberAntenna

    gpsbool

    peripheralsModem.Peripherals.PeripheralsEntryrepeated

    custom_antennastring

    + + + + + +

    Modem.Peripherals.PeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    Modem.TechnicalData

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    hardware_namestring

    firmware_version_namestring

    hardware_production_batchstring

    manufacturerstring

    + + + + + +

    Modem.Transfer

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    statusModem.Transfer.Status

    identifierstring

    + + + + + +

    ModemHealthCount

    +

    + + + + + +

    ModemHealthCount.HealthCount

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_levelhiber.health.HealthLevel

    Health level based on the modem alarm and some always-present alarms.

    countuint32

    The number of modems matching the modem selection with this health level

    healthhiber.Health

    Deprecated. 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.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    health

    true

    + + + + + +

    ModemHealthCount.HealthCountGroupedPerTag

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    taghiber.tag.Tag

    The tag this count is for.

    health_countsModemHealthCount.HealthCountrepeated

    + + + + + +

    ModemHealthCount.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_selectionModemSelection

    Selection of modems to count. If default, all modems are counted.

    include_tag_countbool

    Whether to return specific counts for tags, selected using the tag_count_selection.

    tag_count_selectionhiber.tag.TagSelection

    Selection of tags to return specific counts for. If default, count is calculated for all tags.

    + + + + + +

    ModemHealthCount.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_totalsModemHealthCount.HealthCountrepeated

    health_grouped_per_tagModemHealthCount.HealthCountGroupedPerTagrepeated

    requestModemHealthCount.Request

    + + + + + +

    ModemMessage

    +

    Decrypted modem message. Messages are received encrypted and decrypted asynchronously, which adds the location

    data and message body. (Your message body is, of course, still encrypted if you've encrypted it yourself)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    message_iduint64

    Unique message identifier.

    modem_numberstring

    Modem number of the modem that sent the message.

    modem_namestring

    The name of the modem that sent the message.

    modem_identifierstring

    The device identifier for the modem that sent the message (e.g. a MAC address).

    sent_athiber.Timestamp

    Time the message was sent from the modem.

    received_athiber.Timestamp

    Time the message was received on the server.

    locationhiber.Location

    Modem location when the message was sent.

    bodybytes

    Message body.

    body_byteshiber.BytesOrHex

    Message body convenience object.

    body_parsedModemMessage.ParsedBodyrepeated

    A list of applied body parsers and their results.

    body_parsed_successfullybool

    Convenience flag marking whether the body was parsed successfully by at least one parser.

    sourcesModemMessage.Sourcerepeated

    Message source(s) for this message (i.e. it was received through the satellite or directly to the server).

    is_testbool

    True if the the TEST source is in the sources.

    is_gateway_messagebool

    Whether this message contains other messages.

    via_gateway_messageuint64

    The gateway message this message was sent in.

    metadatagoogle.protobuf.Struct

    Message metadata, defined by the modem or gateway.

    body_fieldsgoogle.protobuf.Struct

    Flattened results of all successful body parsers. +This is a convenience to access the fields from body_parsed, but if any fields are present in +multiple body_parsed results, it is not defined which field will be used in this Struct. +This may change in the future.

    tagshiber.tag.Tagrepeated

    The tags of the modem that sent the message.

    tag_namesstringrepeated

    The names of the tags of the modem that sent the message.

    + + + + + +

    ModemMessage.ParsedBody

    +

    Parsed message body.

    If any parsers are configured for the modem, they are applied to the message.

    The result is stored either as a json object or an error string.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    parser_idint32

    Deprecated. Id of the parser that was used, if the parser and modem are owned by the same organization. +[DEPRECATED] Deprecated in favour of the identifier, which is globally unique.

    parser_identifierstring

    Globally unique identifier of the parser that was used.

    parser_namestring

    Name of the parser that was used.

    errorstring

    Error while parsing the message body.

    resultgoogle.protobuf.Struct

    Result of parsing the body with this parser.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    parser_id

    true

    + + + + + +

    ModemMessageSelection

    +

    Selection object for modem messages.

    Filter messages by modem id, (child)organization, and time sent (note that this is not the time the message was received)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemshiber.Filter.Modems

    Deprecated. Define the modems to return messages for, i.e. include = [AAAA AAAA, BBBB BBBB]. +Deprecated in favor of using the ModemSelection.

    modem_selectionModemSelection

    Select the modems to return messages for.

    time_rangehiber.TimeRange

    Filter message by time range. This field is required, to limit the amount of messages.

    filter_by_sourcesModemMessageSelection.ModemMessageSourceFilter

    Filter messages by the given source filter. +For example, to exclude test and simulated messages, use exclude = [TEST, SIMULATED] +or to only return Hiberband messages, use include = [HIBERBAND]. +Note that if a message has sources [HIBERBAND, DIRECT_TO_API], including [HIBERBAND] will include the message, +and excluding [HIBERBAND] will filter out the message, even though it also has DIRECT_TO_API.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modems

    true

    + + + + + +

    ModemMessageSelection.ModemMessageSourceFilter

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeModemMessage.Sourcerepeated

    excludeModemMessage.Sourcerepeated

    + + + + + +

    ModemSelection

    +

    Selection object for modems.

    Filter modems by modem id, (child)organization, tags, activation status and time, service type and last message time.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemshiber.Filter.Modems

    free_text_searchstring

    only_activebool

    Deprecated. Use lifecycle filter instead.

    activated_inhiber.TimeRange

    Deprecated.

    with_last_message_inhiber.TimeRange

    with_service_typehiber.organization.subscription.ServiceTyperepeated

    healthhiber.Healthrepeated

    Deprecated. Deprecated health that uses the OK, WARNING, ERROR format.

    health_levelsstringrepeated

    Filter modems by health level.

    lifecyclesModem.Lifecyclerepeated

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

    transfersModemSelection.Transfers

    include_typesModem.Typerepeated

    Only include modems that have a type listed in types. +In other words, when providing multiple types, this is an "OR" relationship.

    exclude_typesModem.Typerepeated

    Exclude modems that have a type listed in types.

    only_gatewaysbool

    Deprecated. [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_idsbool

    Deprecated. [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_gatewayshiber.Filter.Modems

    external_device_idsstringrepeated

    filter_by_tagshiber.tag.TagSelection

    peripheralsModemSelection.Peripherals

    only_without_peripheralbool

    When set to true, only modems that do not have any peripheral will be included in the result.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameOption
    only_active

    true

    activated_in

    true

    health

    true

    only_gateways

    true

    only_has_external_device_ids

    true

    + + + + + +

    ModemSelection.Peripherals

    +

    Filter to (de)select modems based on their peripherals.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all modems that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return modems that have bluetooth version 4.0 _or_ 5.0,

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select modems that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns modems that have bluetooth, but not version 3.0.

    - exclude { 'bluetooth' -> [ ] }

    returns only modems that do not have any version of bluetooth,

    - exclude { 'bluetooth' -> [ '4.0', '5.0' ] }

    returns modems that might have bluetooth as long as it's not versions 4.0 or 5.0,

    - exclude { 'bluetooth' -> [ '' ] }

    returns modems that might have bluetooth as long as it's version is set to a specific value,

    - exclude { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    returns modems that don't have bluetooth and/or LoRaWAN.

    - include { 'bluetooth' -> [ ] }, exclude { bluetooth' -> [ ] }

    will return an empty list, since exclusion takes precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { bluetooth' -> [ '3.0' ] }

    returns only modems that have bluetooth, but not version 3.0

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andModemSelection.Peripherals.IncludeAndEntryrepeated

    Filter to only include modems with all of the given set of peripherals. +Peripherals are stored as a name-value pair (e.g. bluetooth, 4.0 / bluetooth, BLE). +To select for multiple versions of a peripheral, +add the name of the peripheral as a map-key and add a repeated list of versions as the map-value.

    excludeModemSelection.Peripherals.ExcludeEntryrepeated

    Filter to exclude modems with any of the given set of peripherals. +Peripherals are stored as a name-value pair (e.g. bluetooth, 4.0 / bluetooth, BLE). +To select for multiple versions of a peripheral, +add the name of the peripheral as a map-key and add a repeated list of versions as the map-value.

    + + + + + +

    ModemSelection.Peripherals.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueModemSelection.Peripherals.OneOfValues

    + + + + + +

    ModemSelection.Peripherals.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueModemSelection.Peripherals.OneOfValues

    + + + + + +

    ModemSelection.Peripherals.OneOfValues

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + + +

    ModemSelection.Transfers

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    transfers_identifiersstringrepeated

    + + + + + +

    RenameModemRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_numberstring

    namestring

    + + + + + +

    UpdateModemLifecycleRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_numberstring

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

    modem_selectionModemSelection

    Or a modem selection.

    update_lifecycleModem.Lifecycle

    The new status for the modem(s).

    paginationhiber.Pagination

    Pagination for the modems in the Response.

    + + + + +

    Fields with deprecated option

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

    true

    + + + + + +

    UpdateModemLifecycleRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemModem

    Deprecated.

    modemsModemrepeated

    requestUpdateModemLifecycleRequest

    paginationhiber.Pagination.Result

    + + + + +

    Fields with deprecated option

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

    true

    + + + + + +

    UpdateModemNotesRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemSelection

    paginationhiber.Pagination

    notesstring

    Notes content

    allow_override_existing_notesbool

    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.

    + + + + + +

    UpdateModemNotesRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsModemrepeated

    requestUpdateModemNotesRequest

    paginationhiber.Pagination.Result

    + + + + + +

    UpdateModemSecureNotesRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_numberstring

    secure_notesstring

    + + + + + +

    UpdateModemSecureNotesRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemModem

    requestUpdateModemSecureNotesRequest

    + + + + + +

    UpdateModemTagsRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    updatehiber.tag.UpdateTagsForItem

    selectionModemSelection

    paginationhiber.Pagination

    + + + + + +

    UpdateModemTagsRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsModemrepeated

    requestUpdateModemTagsRequest

    paginationhiber.Pagination.Result

    + + + + + +

    UpdatePeripheralsRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemSelection

    hiber_antennaModem.Peripherals.HiberAntenna

    gpshiber.UpdateBoolean

    hardcoded_gps_locationhiber.Location

    add_peripheralsUpdatePeripheralsRequest.AddPeripheralsEntryrepeated

    remove_peripheralsstringrepeated

    paginationhiber.Pagination

    custom_antennastring

    time_zonehiber.UpdateClearableString

    update_transmission_intervalhiber.Duration

    remove_transmission_intervalbool

    + + + + + +

    UpdatePeripheralsRequest.AddPeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    UpdatePeripheralsRequest.Response

    +

    The result is paginated if affecting more than 100 modems. Use the list call to paginate further.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    requestUpdatePeripheralsRequest

    modemsModemrepeated

    paginationhiber.Pagination.Result

    + + + + + + + +

    ListModemsRequest.Sort

    +

    Sorting options for the results.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    LAST_MESSAGE_RECEIVED0

    Sorts messages in descending time order.

    LAST_MESSAGE_RECEIVED_INVERTED1

    Sorts messages in ascending time order.

    MODEM_NUMBER_ASC2

    Sort numerically on the number of the modem, in ascending order.

    MODEM_NUMBER_DESC3

    Sort numerically on the number of the modem, in descending order.

    STATUS_ASC4

    Sort modem on its Status.

    STATUS_DESC5

    Sort modem on its Status in reverse order.

    STATUS_ASC_ALPHABETICAL14

    Status sorted alphabetically by Status name.

    STATUS_DESC_ALPHABETICAL15

    Status sorted alphabetically by Status name, descending order.

    MODEM_NAME_ASC6

    Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order.

    MODEM_NAME_DESC7

    Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order.

    ORGANIZATION_ASC8

    Sort alphabetically on the name of the organization that owns the modem, in ascending order.

    ORGANIZATION_DESC9

    Sort alphabetically on the name of the organization that owns the modem, in descending order.

    HEALTH10

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

    HEALTH_DESC11

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

    HEALTH_ASC_ALPHABETICAL12

    Health sorted alphabetically by health level name.

    HEALTH_DESC_ALPHABETICAL13

    Health sorted alphabetically by health level name, descending order.

    + +

    Modem.Lifecycle

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    ACCEPTANCE_TESTING0

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

    INSTALLED1

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

    PAUSED6

    DISABLED5

    DECOMMISSIONED4

    DAMAGED2

    Kept for backwards compatibility. Internally mapped to decommissioned

    LOST3

    Kept for backwards compatibility. Internally mapped to decommissioned

    + +

    Modem.Peripherals.HiberAntenna

    +

    A Hiber antenna is required for the modem to function.

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

    HIBER_PANDA1

    HIBER_GRIZZLY2

    HIBER_BLACK3

    CUSTOM4

    + +

    Modem.Transfer.Status

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    NONE0

    INBOUND1

    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.

    OUTBOUND2

    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.

    RETURNING3

    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.

    + +

    Modem.Type

    +

    The effective type of this modem.

    Type can depend on the hardware itself as well as network topology.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    OTHER0

    A device of which the specific type is not known

    DIRECT1

    A devices that directly connects to the satellite

    GATEWAY2

    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).

    CONNECTED_DEVICE3

    A sensor that can (only) send data to a gateway. Typically using a LoRaWAN connection.

    + +

    ModemMessage.Source

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    HIBERBAND0

    A real message from a modem or gateway, sent over Hiberband to the server.

    DIRECT_TO_API1

    A real message from a modem or gateway, sent directly to the API using a persistent connection.

    TEST2

    A test message sent to the testing API.

    SIMULATION3

    A simulated message, generated by the server.

    + + + + + +

    ModemService

    +

    The core of the Hiber system, modems are the network nodes that send information and user data.

    This service contains calls to list and manage them, as well as list their messages.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    GetGetModemRequestModem

    Get a single modem.

    CreateCreateModem.RequestCreateModem.Response

    Create new modem(s). This is only available if your organization can create modems.

    ListListModemsRequestListModemsRequest.Response

    List the modems in your organization, and, optionally, its child organizations.

    GroupedListModemsGrouped.RequestListModemsGrouped.Response

    List the modems in your organization, and, optionally, its child organizations, grouped by dependency. +For example, a modem that sends it messages through a gateway (like Hilo) would be grouped under that gateway.

    MessagesListModemMessagesRequestListModemMessagesRequest.Response

    List messages for the selected modems.

    MessageCountMessageCountRequestMessageCountRequest.Response

    Count messages for the selected modems.

    RenameRenameModemRequestModem

    Change the name of a modem to the given value.

    UpdateTagsUpdateModemTagsRequestUpdateModemTagsRequest.Response

    Add, remove and create new tags for the selected modems.

    UpdateNotesUpdateModemNotesRequestUpdateModemNotesRequest.Response

    Change the notes for the selected modems to the given value.

    UpdateSecureNotesUpdateModemSecureNotesRequestUpdateModemSecureNotesRequest.Response

    Change the secure notes for the selected modems to the given value, if you have permission.

    UpdateStatusUpdateModemLifecycleRequestUpdateModemLifecycleRequest.Response

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

    UpdatePeripheralsUpdatePeripheralsRequestUpdatePeripheralsRequest.Response

    Add and remove peripherals for the selected modems.

    HealthCountModemHealthCount.RequestModemHealthCount.Response

    Count the modems in your organization by health.

    + + + + +

    Methods with deprecated option

    + + + + + + + + + + + + + + + + + + + + +
    Method NameOption
    Messages

    true

    MessageCount

    true

    + + + + +
    +

    tag.proto

    Top +
    +

    + + +

    CreateTagRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    createTag.Label

    + + + + + +

    DeleteTagRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    idint64

    + + + + + +

    DeleteTagRequest.Response

    +

    + + + + + +

    ListTagsRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionTagSelection

    modem_countbool

    webhook_countbool

    + + + + + +

    ListTagsRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    tagsTagrepeated

    requestListTagsRequest

    tag_modem_countListTagsRequest.Response.TagModemCountEntryrepeated

    map<tag-id, count>

    tag_webhook_countListTagsRequest.Response.TagWebhookCountEntryrepeated

    map<webhook-id, count>

    + + + + + +

    ListTagsRequest.Response.TagModemCountEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keyint64

    valueint32

    + + + + + +

    ListTagsRequest.Response.TagWebhookCountEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keyint64

    valueint32

    + + + + + +

    Tag

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    idint64

    labelTag.Label

    + + + + + +

    Tag.Label

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    namestring

    typestring

    + + + + + +

    TagSelection

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    searchstringrepeated

    namesstringrepeated

    filterhiber.Filter.Tags

    typesstringrepeated

    + + + + + +

    UpdateTagRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    idint64

    updateTag.Label

    + + + + + +

    UpdateTagsForItem

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    tag_ids_to_addint64repeated

    tag_ids_to_removeint64repeated

    new_tags_to_addTag.Labelrepeated

    + + + + + + + + + + + +

    TagService

    +

    Tag management api calls. You can already get tags for objects when you get their data, and even create new tags

    when updating them, so these calls are meant for easier tag management if you need it.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    ListListTagsRequestListTagsRequest.Response

    CreateCreateTagRequestTag

    UpdateUpdateTagRequestTag

    DeleteDeleteTagRequestDeleteTagRequest.Response

    + + + + +

    Scalar Value Types

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    .proto TypeNotesC++JavaPythonGoC#PHPRuby
    doubledoubledoublefloatfloat64doublefloatFloat
    floatfloatfloatfloatfloat32floatfloatFloat
    int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
    int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
    uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
    uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
    sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
    sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
    fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
    fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
    sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
    sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
    boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
    stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
    bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)
    + + + diff --git a/docs/html/device_service.html b/docs/html/device_service.html new file mode 100644 index 0000000..a8e598e --- /dev/null +++ b/docs/html/device_service.html @@ -0,0 +1,7032 @@ + + + + + Protocol Documentation + + + + + + + + + + +

    Protocol Documentation

    + +

    Table of Contents

    + +
    + +
    + + + +
    +

    device_service.proto

    Top +
    +

    Device management.

    Devices are anything capable of sending messages to the system.

    They have a unique device (previously modem) number, used to identify them.

    + + +

    ListDevice

    +

    + + + + + +

    ListDevice.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionDeviceSelection

    Select which devices to return. Uses ModemSelection, which is the historical name for device.

    paginationhiber.Pagination

    Paginate through results.

    sort_bySortrepeated

    Sort the devices with the given sort options.

    location_selectionhiber.LocationSelection

    Filter devices by location.

    include_missing_parentsbool

    Set this to true to populate the parents field in the response. +This will be populated with missing parents (e.g. gateways) for the the devices on this page. +Any parent that is on the current page is not included in this list to avoid duplicate data.

    + + + + + +

    ListDevice.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    devicesDevicerepeated

    requestListDevice.Request

    paginationhiber.Pagination.Result

    sorted_bySortrepeated

    parentsDevicerepeated

    This will be populated with missing parents (e.g. gateways) for the the devices on this page. +Any parent that is on the current page is not included in this list to avoid duplicate data. +Only set when include_missing_parents is true in the request.

    + + + + + +

    UpdateDevice

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    selectionDeviceSelection

    namestringoptional

    Change the name for the selected devices. +To prevent confusion, the selection can only effectively target 1 device when changing the name. +Unless you specifically set `allow_bulk_rename`. +You'd be left with multiple devices with the same name (technically allowed), +but probably something you don't want.

    allow_bulk_renamebool

    Allow a rename that results in multiple devices with the same name. +Could be useful if you have different sites with devices that fulfill +a similar job but are located at different sites. +It is advised to make sure those devices have different tags/groups.

    notesstringoptional

    Change the notes for the selected devices.

    allow_bulk_notesbool

    Allow changing notes in bulk if the notes are different. +Must set this explicitly to prevent accidental loss of notes.

    secure_notesstringoptional

    Change the notes for the selected devices.

    allow_bulk_secure_notesbool

    Allow changing notes in bulk if the notes are different. +Must set this explicitly to prevent accidental loss of notes.

    peripheralsUpdateDevice.UpdatePeripheralsoptional

    Updates the devices peripherals, by adding, removing or replacing.

    time_zonestringoptional

    Set the timezone the device is located in.

    lifecyclehiber.modem.Modem.Lifecycleoptional

    Update the lifecycle for this device.

    transmission_intervalhiber.Durationoptional

    Sets the interval this devices is transmitting on. +Mainly useful for devices that have a regular interval for transmissions.

    + + + + + +

    UpdateDevice.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    devicesUpdateDevicerepeated

    Multiple different updates can be made. +Every update contains a device selection (historically modem selection) +which targets the devices that should be updated.

    + + + + + +

    UpdateDevice.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    devicesDevicerepeated

    requestUpdateDevice.Request

    + + + + + +

    UpdateDevice.UpdatePeripherals

    +

    When updating peripherals, you can choose to add and delete peripherals,

    or to do a wholesome replace of all peripherals.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    partial_updateUpdateDevice.UpdatePeripherals.Partial

    full_replaceUpdateDevice.UpdatePeripherals.Replace

    + + + + + +

    UpdateDevice.UpdatePeripherals.Partial

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    remove_peripheralsstringrepeated

    Removes peripherals by name in this list. Leaves other peripherals untouched.

    add_peripheralsUpdateDevice.UpdatePeripherals.Partial.AddPeripheralsEntryrepeated

    Adds peripherals by name-value from this mapping. Leaves other peripherals untouched.

    + + + + + +

    UpdateDevice.UpdatePeripherals.Partial.AddPeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    UpdateDevice.UpdatePeripherals.Replace

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    replace_peripheralsUpdateDevice.UpdatePeripherals.Replace.ReplacePeripheralsEntryrepeated

    Replaces the entire set of peripherals. All peripherals not named in this map will be removed.

    + + + + + +

    UpdateDevice.UpdatePeripherals.Replace.ReplacePeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + + + + + + + +

    DeviceService

    +

    At the core of the Hiber system, devices are the network nodes that send information and user data.

    This service contains calls to list and manage devices.

    + + + + + + + + + + + + + + + + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    ListListDevice.RequestListDevice.Response

    List the devices in your organization, and, optionally, its child organizations.

    UpdateUpdateDevice.RequestUpdateDevice.Response

    Update a device.

    + + + + +
    +

    base.proto

    Top +
    +

    + + +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    centerLocation

    bottom_leftLocation

    top_rightLocation

    textualstring

    Text representation. Can be used as an alternative input in a request, filled in by the API in responses.

    + + + + + +

    Avatar

    +

    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)

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    urlstring

    A URL that contains the location of avatar.

    imageNamedFile

    The data of the avatar as a Named File.

    + + + + + +

    BytesOrHex

    +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    bytesbytes

    hexstring

    + + + + + +

    BytesOrHex.Update

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueBytesOrHex

    + + + + + +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    yearuint32

    monthuint32

    dayuint32

    textualstring

    + + + + + +

    DoubleRange

    +

    Decimal range.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    startdouble

    enddouble

    + + + + + +

    Duration

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    durationgoogle.protobuf.Duration

    textualstring

    + + + + + +

    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)

    "Exclude" fields filter out anything in the exclude set.

    When combined with include, exclude takes precedence when determining whether an item is filtered

    + + + + + +

    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

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_allbool

    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ChildOrganizations.Update

    +

    Update object to update a Filter.ChildOrganizations field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.ChildOrganizations

    + + + + + +

    Filter.Events

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeEventTyperepeated

    excludeEventTyperepeated

    + + + + + +

    Filter.Events.Update

    +

    Update object to update a Filter.Events field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.Events

    + + + + + +

    Filter.FieldEnumValues

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    fieldstring

    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.Modems

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    Include all modems with these modem numbers (HEX)

    excludestringrepeated

    Exclude all modems with these modem numbers (HEX). +Exclude takes precedence over include.

    + + + + + +

    Filter.Modems.Update

    +

    Update object to update a Filter.Modems field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.Modems

    + + + + + +

    Filter.OrganizationPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_allbool

    includeOrganizationPermissionrepeated

    excludeOrganizationPermissionrepeated

    + + + + + +

    Filter.Organizations

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + + +

    Filter.Publishers

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeint64repeated

    excludeint64repeated

    only_activebool

    + + + + + +

    Filter.SupportPermissions

    +

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

    excludeSupportPermissionrepeated

    + + + + + +

    Filter.Tags

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeint64repeated

    excludeint64repeated

    + + + + + +

    Filter.Tags.Update

    +

    Update object to update a Filter.Tags field.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueFilter.Tags

    + + + + + +

    Filter.UserPermissions

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_allbool

    includeUserPermissionrepeated

    excludeUserPermissionrepeated

    + + + + + +

    Filter.Users

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.Webhooks

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeint64repeated

    excludeint64repeated

    only_activebool

    + + + + + +

    Location

    +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    latitudedouble

    Decimal degrees north.

    longitudedouble

    Decimal degrees east.

    textualstring

    Text representation. Can be used as an alternative input in a request, filled in by the API in responses.

    + + + + + +

    LocationSelection

    +

    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

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    areasArearepeated

    Rectangular areas, each defined by two locations, normalized to bottom-left and top-right points.

    shapesShaperepeated

    Polygon shapes, each defined by a list of locations, which draw a shape on the map.

    + + + + + +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + + +

    NamedFile

    +

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    dataBytesOrHex

    The binary payload that represents the file

    media_typestring

    The media-type of the file, as defined by RFC 6838 or its extensions

    namestring

    A semantic name for this file.

    + + + + + +

    Pagination

    +

    Pagination is normalized across the api. Provide a pagination object to get a specific page or offset,

    or limit your data.

    Calls that have a pagination option automatically return a Pagination.Result, which contains

    either the specified pagination options or the defaults, as well as total counts. It also contains Pagination

    objects that can be used for the previous and next page.

    This effectively means that an api user would never need to create their own pagination object; as long as they

    start at the first page and continue to the next, they can use the provided Pagination object.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    sizeint32

    pageint32

    + + + + + +

    Pagination.Result

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    sizeint32

    pageint32

    totalint32

    total_pagesint32

    previousPagination

    nextPagination

    approximated_totalbool

    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.

    + + + + + +

    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.

    For example, the outline of a city would be defined using a Shape,

    while a rectangular region is easier to define using Area.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    pathLocationrepeated

    textualstring

    Text representation. Can be used as an alternative input in a request, filled in by the API in responses.

    + + + + + +

    TimeRange

    +

    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

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    startTimestamp

    endTimestamp

    + + + + + +

    Timestamp

    +

    Timestamp type for convenience.

    Some clients are better at parsing Google's seconds/nanos based timestamp, while others prefer a text-based format.

    To accommodate this, this Timestamp type supports both.

    When used as API output, both the timestamp and textual fields will be set. The textual field has the commonly

    used ISO 8601 format (i.e. "2018-01-01T13:00:00Z").

    When used an API input, only one of the fields is needed, there is no need to set both. When both are set, the

    timestamp field will be used, the textual field will be discarded.

    In addition, the textual field, when used as input, allows for a number of shortcuts that get converted into

    timestamps:

    - "now": converted to the current timestamp at the time of the request

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    timestampgoogle.protobuf.Timestamp

    time_zonestring

    textualstring

    + + + + + +

    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.

    To use this to update, set a value and set updated to true

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valuebool

    + + + + + +

    UpdateClearableString

    +

    Update object for a string that can be empty.

    Since an empty string is also the default value, we need to distinguish between an omitted value and

    setting the value to an empty string, in an update object.

    To use this to update, set a value and set updated to true

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valuestring

    + + + + + +

    UpdateOptionalDuration

    +

    Update object for an optional Duration.

    To use this to update, set a value and set updated to true.

    To clear the duration, set updated to true, but set no value.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueDuration

    + + + + + +

    UpdateOptionalId

    +

    Update object for an optional id.

    To use this to update, set a value and set updated to true. To clear the id, set updated to true, but set no value.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueint64

    + + + + + +

    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

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    updatedbool

    valueuint32

    + + + + + + + +

    EventType

    +

    Enum of api-accessible events.

    The event types in this enum have a protobuf implementation, and can be used, for example, in the

    api event stream and publishers.

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

    ORGANIZATION_CREATED34

    ORGANIZATION_UPDATED12

    ORGANIZATION_DELETED35

    ORGANIZATION_EVENT_CONFIGURATION_UPDATED43

    MODEM_CREATED55

    MODEM_UPDATED36

    MODEM_LOCATION_UPDATED4

    MODEM_ACTIVATED33

    MODEM_MESSAGE_RECEIVED5

    MODEM_MESSAGE_BODY_PARSED39

    MODEM_MESSAGE_BODY_RECEIVED45

    MODEM_MESSAGE_CANNOT_BE_PARSED15

    MODEM_MESSAGE_SUMMARY42

    MODEM_MESSAGE_BODY_PARSER_CREATED46

    MODEM_MESSAGE_BODY_PARSER_UPDATED47

    MODEM_MESSAGE_BODY_PARSER_DELETED48

    MODEM_ALARM56

    MODEM_ALARM_CREATED57

    MODEM_ALARM_UPDATED58

    MODEM_ALARM_DELETED59

    ASSIGNED63

    UNASSIGNED64

    MODEM_TRANSFER_STARTED17

    MODEM_TRANSFER_RECEIVED18

    MODEM_TRANSFER_CANCELLED19

    MODEM_TRANSFER_NOT_RECEIVED20

    MODEM_TRANSFER_RETURN_TRANSFER_STARTED21

    MODEM_CLAIMED22

    PUBLISHER_CREATED1

    PUBLISHER_UPDATED2

    PUBLISHER_DELETED3

    PUBLISHER_AUTO_DISABLED37

    PUBLISHER_FAILED11

    USER_ACCESS_REQUEST8

    USER_INVITED38

    USER_ADDED9

    USER_REMOVED10

    USER_VALIDATION_UPDATED54

    TOKEN_CREATED31

    TOKEN_EXPIRY_WARNING25

    TOKEN_EXPIRED26

    TOKEN_DELETED32

    EXPORT_CREATED65

    EXPORT_READY66

    EXPORT_FAILED67

    + +

    Health

    +

    Health is an indicator for issues. It is used for publishers to give a quick indication of issues.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    OK0

    WARNING1

    ERROR2

    + +

    UnitOfMeasurement

    +

    Unit of measurement for a numeric value.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    UNIT_UNKNOWN0

    DURATION_MILLISECONDS40

    DURATION_SECONDS1

    DURATION_MINUTES2

    DURATION_HOURS3

    DURATION_DAYS4

    DURATION_WEEKS41

    FUEL_EFFICIENCY_LITER_PER_100_KILOMETER30

    FUEL_EFFICIENCY_KILOMETER_PER_LITER31

    FUEL_EFFICIENCY_KILOMETER_PER_US_GALLON32

    FUEL_EFFICIENCY_KILOMETER_PER_IMPERIAL_GALLON33

    FUEL_EFFICIENCY_MILE_PER_US_GALLON34

    FUEL_EFFICIENCY_MILE_PER_IMPERIAL_GALLON35

    FUEL_EFFICIENCY_MILE_PER_LITER36

    DISTANCE_METER8

    DISTANCE_MILLIMETER9

    DISTANCE_CENTIMETER10

    DISTANCE_KILOMETER11

    DISTANCE_NAUTICAL_MILE26

    DISTANCE_MILE21

    DISTANCE_YARD27

    DISTANCE_FOOT28

    DISTANCE_INCH29

    PERCENT16

    PRESSURE_BAR12

    PRESSURE_PSI14

    PRESSURE_K_PA17

    SPEED_KILOMETERS_PER_HOUR18

    SPEED_KNOTS19

    SPEED_METERS_PER_SECOND20

    SPEED_MILES_PER_HOUR22

    TEMPERATURE_KELVIN5

    TEMPERATURE_DEGREES_CELSIUS6

    TEMPERATURE_DEGREES_FAHRENHEIT7

    VOLTAGE_MILLIVOLT15

    VOLUME_LITER23

    VOLUME_GALLON_US24

    VOLUME_GALLON_IMPERIAL25

    VOLUME_CUBIC_METER42

    VOLUME_CUBIC_FOOT43

    MASS_KILOGRAMS37

    MASS_POUNDS38

    FLOW_CUBIC_METERS_PER_HOUR39

    + + + + + + + +
    +

    device.proto

    Top +
    +

    + + +

    Device

    +

    Information about a device.

    A device is anything in the Hiber network that can send data to our systems.

    They have a unique device number in our system, used to identify them.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    numberstring

    An 8-character hexadecimal string, formatted for human readability. System ignores spaces.

    organizationstring

    The organization that owns this device

    namestring

    A descriptor given to the device, defaults to it's number.

    locationhiber.Location

    inactivityhiber.Durationoptional

    The amount of time since the last message from this modem was received on the server.

    health_levelhiber.health.HealthLevel

    Health level based on the modem alarm and some always-present alarms.

    lifecyclehiber.modem.Modem.Lifecycle

    The current lifecycle the modem is in.

    peripheralsDevice.PeripheralsEntryrepeated

    additional information

    notesstring

    Notes field that can be used to add additional information to a modem.

    secure_notesstringoptional

    Secure notes field that can be used to add additional information to a modem, with limited accessibility.

    tagshiber.tag.Tagrepeated

    linkDevice.Linksoptional

    Optional information about what other devices this devices is linked to.

    metadatagoogle.protobuf.Struct

    Modem metadata, typically extracted from messages.

    time_zonestringoptional

    The timezone configured for the modem.

    transmission_intervalhiber.Durationoptional

    The transmission interval for this modem, if configured.

    + + + + + + +

    Collection of data about the devices it is connected to.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    identifiersstringrepeated

    Other identifiers for this devices. Could include data like its MAC-address or otherwise unique identifier.

    parentstringoptional

    The device directly downstream from this device. +Usually a gateway of some sorts. This device sends its data directly to its parent. +The parent will relay the data to our systems.

    + + + + + +

    Device.PeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    DeviceSelection

    +

    Selection object for devices.

    Filter devices by device number, tags, etc.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    free_text_searchstring

    modemshiber.Filter.Modems

    identifiershiber.Filter.ModemIdentifiers

    health_levelhiber.Filter.HealthLevels

    lifecyclesModemFilter.Lifecycles

    with_parentshiber.Filter.Modems

    peripheralshiber.Filter.Properties

    filter_by_tagshiber.tag.TagSelection

    with_last_message_inhiber.TimeRange

    + + + + + +

    ModemFilter

    +

    + + + + + +

    ModemFilter.Lifecycles

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includehiber.modem.Modem.Lifecyclerepeated

    excludehiber.modem.Modem.Lifecyclerepeated

    + + + + + + + +

    Sort

    +

    Sorting options for the results.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    DEVICE_NAME_ASC0

    Sort alphabetically on the name of the device. +De default name of the device is its HEX number, in ascending order.

    DEVICE_NAME_DESC1

    Sort alphabetically on the name of the device. +De default name of the device is its HEX number, in descending order.

    DEVICE_NUMBER_ASC2

    Sort numerically on the number of the device, in ascending order.

    DEVICE_NUMBER_DESC3

    Sort numerically on the number of the device, in descending order.

    ACTIVITY4

    Sort devices on most recent activity first (e.g. newest message received).

    INACTIVITY5

    Sort devices on least recent activity first (e.g. longest no message received).

    LIFECYCLE_ASC6

    Sort device on its lifecycle state.

    LIFECYCLE_DESC7

    Sort device on its lifecycle state in reverse order.

    LIFECYCLE_ALPHABETICAL_ASC8

    Sort device on lifecycle name, alphabetically.

    LIFECYCLE_ALPHABETICAL_DESC9

    Sort device on lifecycle name, alphabetically in reverse order.

    ORGANIZATION_ASC10

    Sort alphabetically on the name of the organization that owns the device, in ascending order.

    ORGANIZATION_DESC11

    Sort alphabetically on the name of the organization that owns the device, in descending order.

    HEALTH_ASC12

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

    HEALTH_DESC13

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

    HEALTH_ALPHABETICAL_ASC14

    Health sorted alphabetically by health level name.

    HEALTH_ALPHABETICAL_DESC15

    Health sorted alphabetically by health level name, descending order.

    + + + + + + + +
    +

    modem.proto

    Top +
    +

    Modem and message management.

    Modems are anything capable of sending messages to the system. They have a unique modem number,

    used to identify them.

    + + +

    CreateModem

    +

    Create modems for your organization.

    This call is not available to all organizations, and is typically used to create modems for testing or

    when you want to connect a device to the API using just the API calls in the TestingService.

    + + + + + +

    CreateModem.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    amountuint32

    The amount of modems to create.

    namesstringrepeated

    The name(s) to give the new modem(s). +Must not contain more values than the amount of modems to create.

    external_device_identifiersstringrepeated

    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.

    lifecycleModem.Lifecycle

    The status for the new modems.

    technicalModem.TechnicalData

    The technical data, such as manufacturer and hardware information for the new modems.

    peripheralsCreateModem.Request.PeripheralsEntryrepeated

    The peripherals for the new modems.

    notesstring

    Notes for all new modems.

    locationhiber.Location

    random_location_in_areahiber.Area

    tagshiber.tag.UpdateTagsForItem

    The tags to set to the new modems, either existing or created by this call.

    include_modems_in_responsebool

    Whether to return the full Modem in addition to the modem number and verification code.

    include_verification_codebool

    Whether to return the verification code for the modem.

    + + + + + +

    CreateModem.Request.PeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    CreateModem.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsCreateModem.Response.CreatedModemrepeated

    requestCreateModem.Request

    + + + + + +

    CreateModem.Response.CreatedModem

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modem_numberstring

    The modem number that was created.

    verification_codestring

    The verification code for this modem number, used to, for example, claim modems. +Only available when include_verification_code was set to true.

    modemModem

    Only available when include_modems_in_response was set to true.

    + + + + + +

    GetModemRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    in_organizationshiber.organization.OrganizationSelection

    If set, look up the modem in multiple organizations, instead of in the given or default organization. +This can be used to find a modem if you do not know in which organization it is. +Since this is a selection object, an empty selection searches in all accessible organizations, but +the organizations can be limited using the fields in the OrganizationSelection.

    modem_numberstring

    The modem to get.

    child_organizationshiber.Filter.ChildOrganizations

    Deprecated. Look for the modem in child organizations. +DEPRECATED: use the in_organizations flag instead.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    child_organizations

    true

    + + + + + +

    ListModemMessagesRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemMessageSelection

    paginationhiber.Pagination

    + + + + + +

    ListModemMessagesRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    messagesModemMessagerepeated

    requestListModemMessagesRequest

    paginationhiber.Pagination.Result

    + + + + + +

    ListModemsGrouped

    +

    Lists all modems the given criteria, grouped by gateway.

    Pagination is applied to modems in a group, not to the groups themselves.

    + + + + + +

    ListModemsGrouped.Request

    +

    The usage of ListModemsRequest and ListModemsRequest.Response in the Response.Group was intentionally

    chosen to simplify pagination withing a group, since the response contains the request

    (which will be updated with the group it is in) and pagination to select the next page using the

    list method.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    group_contentListModemsRequest

    The modems you want to display in the groups. +This is a ListModemsRequest that is used to fetch the modems for each group, with the added limitation +that the modems must be in the group.

    groupsListModemsRequest

    Select the parents for the groups to display. +Anything selected here that cannot have any connected modems (i.e. a direct modem) wil be omitted +unless allow_any_group_parent is set to true. +Only gateways will have connected devices, so unless allow_any_group_parent is true, +type is replaced with GATEWAY. This may change in the future if more grouping options are introduced.

    allow_any_group_parentbool

    Set to true to allow group request to return modems that can never be the parent of a group. +- If this flag is false, the modems for the groups are automatically filtered on being a parent of a group. + Note that the group may still be empty, i.e. when a gateway has no connected devices. +- If this flag is true, the group parents can include modems which cannot be a parent and for which + the group can only be empty.

    + + + + + +

    ListModemsGrouped.Response

    +

    The usage of ListModemsRequest and ListModemsRequest.Response in the Response.Group was intentionally

    chosen to simplify pagination withing a group, since the response contains the request

    (which will be updated with the group it is in) and pagination to select the next page using the

    list method.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    groupsListModemsRequest.Responserepeated

    The groups, based on a parent (typically a gateway unless allow_any_group_parent was set). +This is a ListModemsRequest.Response, with the selection updated with its parent and includes +the group parent in the group_parents field.

    requestListModemsGrouped.Request

    paginationhiber.Pagination.Result

    sorted_byListModemsRequest.Sortrepeated

    + + + + + +

    ListModemsRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemSelection

    Select which modems to return.

    paginationhiber.Pagination

    Paginate through results.

    sort_byListModemsRequest.Sortrepeated

    Sort the modem with the given sort options.

    include_inbound_modemsbool

    Whether to include inbound modems in the results. +Inbound modems are modems that are in a transfer that has been sent *to* your organization, but that has not +been marked as received yet.

    include_outbound_modemsbool

    Whether to include outbound modems in the results. +Inbound modems are modems that are in a transfer that has been sent *from* your organization, but that has not +been marked as received yet.

    child_organizationshiber.Filter.ChildOrganizations

    Deprecated. Include modems from the selected child organizations. +DEPRECATED: this option will be removed in the future!

    location_selectionhiber.LocationSelection

    Filter modems by location.

    include_missing_group_parentsbool

    Set this to true to populate the group_parents field in the response. +This will be populated with missing group parents (i.e. gateways) for the the modems on this page. +Any group parent that is on the current page is not included in this list to avoid duplicate data.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    child_organizations

    true

    + + + + + +

    ListModemsRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsModemrepeated

    requestListModemsRequest

    paginationhiber.Pagination.Result

    sorted_byListModemsRequest.Sortrepeated

    group_parentsModemrepeated

    This will be populated with missing group parents (i.e. gateways) for the the modems on this page. +Any group parent that is on the current page is not included in this list to avoid duplicate data. +Only set when include_missing_group_parents is true in the request.

    + + + + + +

    MessageCountRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemMessageSelection

    time_zone_offsetint32

    Numeric timezone offset for day grouping. Optional.

    time_zonestring

    Timezone string for day grouping. Optional.

    + + + + + +

    MessageCountRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    message_count_per_dayMessageCountRequest.Response.MessageCountrepeated

    requestMessageCountRequest

    + + + + + +

    MessageCountRequest.Response.MessageCount

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    datehiber.Date

    countint32

    + + + + + +

    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.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    numberstring

    An 8-character hexadecimal string

    organizationstring

    namestring

    An optional descriptor given to the modem

    locationhiber.Location

    last_message_iduint64

    last_message_received_athiber.Timestamp

    Time the server has received the last message.

    last_message_sent_athiber.Timestamp

    Time the modem has sent the last message.

    last_message_bodyhiber.BytesOrHex

    The body of the last message.

    inactivityhiber.Duration

    The amount of time since the last message from this modem was received on the server.

    healthhiber.Health

    Deprecated. 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_levelhiber.health.HealthLevel

    Health level based on the modem alarm and some always-present alarms.

    lifecycleModem.Lifecycle

    active_subscriptionModem.ActiveSubscription

    additional information

    technicalModem.TechnicalData

    peripheralsModem.Peripherals

    in_transferModem.Transfer

    notesstring

    Notes field that can be used to add additional information to a modem.

    secure_notesstring

    Secure notes field that can be used to add additional information to a modem, with limited accessibility.

    tagshiber.tag.Tagrepeated

    is_gatewaybool

    Deprecated. [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_gatewaybool

    Deprecated. [DEPRECATED] Whether the modem is connected to a modem configured as a gateway. +Use `type` instead.

    connected_to_gatewaystring

    Deprecated. [DEPRECATED] The modem number that this modem is connected to, if any. +Use `connected_device_info.connected_to_gateway` instead.

    external_device_idsstringrepeated

    Deprecated. [DEPRECATED] External device ids, if any. +Use `connected_device_info.external_device_ids` instead.

    typeModem.Type

    The type of modem. +Used mainly to differentiate in the UI or to sort on.

    gateway_infoModem.GatewayInfo

    Additional information when this modem is a gateway.

    connected_device_infoModem.ConnectedDeviceInfo

    Additional information when this modem is a connected device.

    metadatagoogle.protobuf.Struct

    Modem metadata, typically extracted from messages.

    time_zonestring

    The timezone configured for the modem.

    transmission_intervalhiber.Duration

    The transmission interval for this modem, if configured.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameOption
    health

    true

    is_gateway

    true

    is_device_connected_to_gateway

    true

    connected_to_gateway

    true

    external_device_ids

    true

    + + + + + +

    Modem.ActiveSubscription

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    typehiber.organization.subscription.ServiceType

    start_datehiber.Timestamp

    end_datehiber.Timestamp

    + + + + + +

    Modem.ConnectedDeviceInfo

    +

    Additional information when this modem is a connected device.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    connected_to_gatewaystring

    The gateways that this modem is connected to. +This field reflects the gateway that processed the last message for this modem. +If the modem is connected to multiple gateways, the last used gateway is tracked here.

    external_device_idsstringrepeated

    External device ids for this modem.

    + + + + + +

    Modem.GatewayInfo

    +

    Additional information when this modem is a gateway.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    number_of_connected_devicesint32

    + + + + + +

    Modem.Peripherals

    +

    Peripherals attached to the modem, including antenna, whether it has a gps antenna and an

    open field for peripherals like battery, sensors, etc.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    hiber_antennaModem.Peripherals.HiberAntenna

    gpsbool

    peripheralsModem.Peripherals.PeripheralsEntryrepeated

    custom_antennastring

    + + + + + +

    Modem.Peripherals.PeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    Modem.TechnicalData

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    hardware_namestring

    firmware_version_namestring

    hardware_production_batchstring

    manufacturerstring

    + + + + + +

    Modem.Transfer

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    statusModem.Transfer.Status

    identifierstring

    + + + + + +

    ModemHealthCount

    +

    + + + + + +

    ModemHealthCount.HealthCount

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_levelhiber.health.HealthLevel

    Health level based on the modem alarm and some always-present alarms.

    countuint32

    The number of modems matching the modem selection with this health level

    healthhiber.Health

    Deprecated. 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.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    health

    true

    + + + + + +

    ModemHealthCount.HealthCountGroupedPerTag

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    taghiber.tag.Tag

    The tag this count is for.

    health_countsModemHealthCount.HealthCountrepeated

    + + + + + +

    ModemHealthCount.Request

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_selectionModemSelection

    Selection of modems to count. If default, all modems are counted.

    include_tag_countbool

    Whether to return specific counts for tags, selected using the tag_count_selection.

    tag_count_selectionhiber.tag.TagSelection

    Selection of tags to return specific counts for. If default, count is calculated for all tags.

    + + + + + +

    ModemHealthCount.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    health_totalsModemHealthCount.HealthCountrepeated

    health_grouped_per_tagModemHealthCount.HealthCountGroupedPerTagrepeated

    requestModemHealthCount.Request

    + + + + + +

    ModemMessage

    +

    Decrypted modem message. Messages are received encrypted and decrypted asynchronously, which adds the location

    data and message body. (Your message body is, of course, still encrypted if you've encrypted it yourself)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    message_iduint64

    Unique message identifier.

    modem_numberstring

    Modem number of the modem that sent the message.

    modem_namestring

    The name of the modem that sent the message.

    modem_identifierstring

    The device identifier for the modem that sent the message (e.g. a MAC address).

    sent_athiber.Timestamp

    Time the message was sent from the modem.

    received_athiber.Timestamp

    Time the message was received on the server.

    locationhiber.Location

    Modem location when the message was sent.

    bodybytes

    Message body.

    body_byteshiber.BytesOrHex

    Message body convenience object.

    body_parsedModemMessage.ParsedBodyrepeated

    A list of applied body parsers and their results.

    body_parsed_successfullybool

    Convenience flag marking whether the body was parsed successfully by at least one parser.

    sourcesModemMessage.Sourcerepeated

    Message source(s) for this message (i.e. it was received through the satellite or directly to the server).

    is_testbool

    True if the the TEST source is in the sources.

    is_gateway_messagebool

    Whether this message contains other messages.

    via_gateway_messageuint64

    The gateway message this message was sent in.

    metadatagoogle.protobuf.Struct

    Message metadata, defined by the modem or gateway.

    body_fieldsgoogle.protobuf.Struct

    Flattened results of all successful body parsers. +This is a convenience to access the fields from body_parsed, but if any fields are present in +multiple body_parsed results, it is not defined which field will be used in this Struct. +This may change in the future.

    tagshiber.tag.Tagrepeated

    The tags of the modem that sent the message.

    tag_namesstringrepeated

    The names of the tags of the modem that sent the message.

    + + + + + +

    ModemMessage.ParsedBody

    +

    Parsed message body.

    If any parsers are configured for the modem, they are applied to the message.

    The result is stored either as a json object or an error string.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    parser_idint32

    Deprecated. Id of the parser that was used, if the parser and modem are owned by the same organization. +[DEPRECATED] Deprecated in favour of the identifier, which is globally unique.

    parser_identifierstring

    Globally unique identifier of the parser that was used.

    parser_namestring

    Name of the parser that was used.

    errorstring

    Error while parsing the message body.

    resultgoogle.protobuf.Struct

    Result of parsing the body with this parser.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    parser_id

    true

    + + + + + +

    ModemMessageSelection

    +

    Selection object for modem messages.

    Filter messages by modem id, (child)organization, and time sent (note that this is not the time the message was received)

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemshiber.Filter.Modems

    Deprecated. Define the modems to return messages for, i.e. include = [AAAA AAAA, BBBB BBBB]. +Deprecated in favor of using the ModemSelection.

    modem_selectionModemSelection

    Select the modems to return messages for.

    time_rangehiber.TimeRange

    Filter message by time range. This field is required, to limit the amount of messages.

    filter_by_sourcesModemMessageSelection.ModemMessageSourceFilter

    Filter messages by the given source filter. +For example, to exclude test and simulated messages, use exclude = [TEST, SIMULATED] +or to only return Hiberband messages, use include = [HIBERBAND]. +Note that if a message has sources [HIBERBAND, DIRECT_TO_API], including [HIBERBAND] will include the message, +and excluding [HIBERBAND] will filter out the message, even though it also has DIRECT_TO_API.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + +
    NameOption
    modems

    true

    + + + + + +

    ModemMessageSelection.ModemMessageSourceFilter

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includeModemMessage.Sourcerepeated

    excludeModemMessage.Sourcerepeated

    + + + + + +

    ModemSelection

    +

    Selection object for modems.

    Filter modems by modem id, (child)organization, tags, activation status and time, service type and last message time.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemshiber.Filter.Modems

    free_text_searchstring

    only_activebool

    Deprecated. Use lifecycle filter instead.

    activated_inhiber.TimeRange

    Deprecated.

    with_last_message_inhiber.TimeRange

    with_service_typehiber.organization.subscription.ServiceTyperepeated

    healthhiber.Healthrepeated

    Deprecated. Deprecated health that uses the OK, WARNING, ERROR format.

    health_levelsstringrepeated

    Filter modems by health level.

    lifecyclesModem.Lifecyclerepeated

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

    transfersModemSelection.Transfers

    include_typesModem.Typerepeated

    Only include modems that have a type listed in types. +In other words, when providing multiple types, this is an "OR" relationship.

    exclude_typesModem.Typerepeated

    Exclude modems that have a type listed in types.

    only_gatewaysbool

    Deprecated. [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_idsbool

    Deprecated. [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_gatewayshiber.Filter.Modems

    external_device_idsstringrepeated

    filter_by_tagshiber.tag.TagSelection

    peripheralsModemSelection.Peripherals

    only_without_peripheralbool

    When set to true, only modems that do not have any peripheral will be included in the result.

    + + + + +

    Fields with deprecated option

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameOption
    only_active

    true

    activated_in

    true

    health

    true

    only_gateways

    true

    only_has_external_device_ids

    true

    + + + + + +

    ModemSelection.Peripherals

    +

    Filter to (de)select modems based on their peripherals.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all modems that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return modems that have bluetooth version 4.0 _or_ 5.0,

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select modems that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns modems that have bluetooth, but not version 3.0.

    - exclude { 'bluetooth' -> [ ] }

    returns only modems that do not have any version of bluetooth,

    - exclude { 'bluetooth' -> [ '4.0', '5.0' ] }

    returns modems that might have bluetooth as long as it's not versions 4.0 or 5.0,

    - exclude { 'bluetooth' -> [ '' ] }

    returns modems that might have bluetooth as long as it's version is set to a specific value,

    - exclude { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    returns modems that don't have bluetooth and/or LoRaWAN.

    - include { 'bluetooth' -> [ ] }, exclude { bluetooth' -> [ ] }

    will return an empty list, since exclusion takes precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { bluetooth' -> [ '3.0' ] }

    returns only modems that have bluetooth, but not version 3.0

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andModemSelection.Peripherals.IncludeAndEntryrepeated

    Filter to only include modems with all of the given set of peripherals. +Peripherals are stored as a name-value pair (e.g. bluetooth, 4.0 / bluetooth, BLE). +To select for multiple versions of a peripheral, +add the name of the peripheral as a map-key and add a repeated list of versions as the map-value.

    excludeModemSelection.Peripherals.ExcludeEntryrepeated

    Filter to exclude modems with any of the given set of peripherals. +Peripherals are stored as a name-value pair (e.g. bluetooth, 4.0 / bluetooth, BLE). +To select for multiple versions of a peripheral, +add the name of the peripheral as a map-key and add a repeated list of versions as the map-value.

    + + + + + +

    ModemSelection.Peripherals.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueModemSelection.Peripherals.OneOfValues

    + + + + + +

    ModemSelection.Peripherals.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueModemSelection.Peripherals.OneOfValues

    + + + + + +

    ModemSelection.Peripherals.OneOfValues

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + + +

    ModemSelection.Transfers

    +

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    transfers_identifiersstringrepeated

    + + + + + +

    RenameModemRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_numberstring

    namestring

    + + + + + +

    UpdateModemLifecycleRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_numberstring

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

    modem_selectionModemSelection

    Or a modem selection.

    update_lifecycleModem.Lifecycle

    The new status for the modem(s).

    paginationhiber.Pagination

    Pagination for the modems in the Response.

    + + + + +

    Fields with deprecated option

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

    true

    + + + + + +

    UpdateModemLifecycleRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemModem

    Deprecated.

    modemsModemrepeated

    requestUpdateModemLifecycleRequest

    paginationhiber.Pagination.Result

    + + + + +

    Fields with deprecated option

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

    true

    + + + + + +

    UpdateModemNotesRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemSelection

    paginationhiber.Pagination

    notesstring

    Notes content

    allow_override_existing_notesbool

    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.

    + + + + + +

    UpdateModemNotesRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsModemrepeated

    requestUpdateModemNotesRequest

    paginationhiber.Pagination.Result

    + + + + + +

    UpdateModemSecureNotesRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    modem_numberstring

    secure_notesstring

    + + + + + +

    UpdateModemSecureNotesRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemModem

    requestUpdateModemSecureNotesRequest

    + + + + + +

    UpdateModemTagsRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    updatehiber.tag.UpdateTagsForItem

    selectionModemSelection

    paginationhiber.Pagination

    + + + + + +

    UpdateModemTagsRequest.Response

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    modemsModemrepeated

    requestUpdateModemTagsRequest

    paginationhiber.Pagination.Result

    + + + + + +

    UpdatePeripheralsRequest

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    organizationstring

    Pick the organization to use (/impersonate). If unset, your default organization is used.

    selectionModemSelection

    hiber_antennaModem.Peripherals.HiberAntenna

    gpshiber.UpdateBoolean

    hardcoded_gps_locationhiber.Location

    add_peripheralsUpdatePeripheralsRequest.AddPeripheralsEntryrepeated

    remove_peripheralsstringrepeated

    paginationhiber.Pagination

    custom_antennastring

    time_zonehiber.UpdateClearableString

    update_transmission_intervalhiber.Duration

    remove_transmission_intervalbool

    + + + + + +

    UpdatePeripheralsRequest.AddPeripheralsEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valuestring

    + + + + + +

    UpdatePeripheralsRequest.Response

    +

    The result is paginated if affecting more than 100 modems. Use the list call to paginate further.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    requestUpdatePeripheralsRequest

    modemsModemrepeated

    paginationhiber.Pagination.Result

    + + + + + + + +

    ListModemsRequest.Sort

    +

    Sorting options for the results.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    LAST_MESSAGE_RECEIVED0

    Sorts messages in descending time order.

    LAST_MESSAGE_RECEIVED_INVERTED1

    Sorts messages in ascending time order.

    MODEM_NUMBER_ASC2

    Sort numerically on the number of the modem, in ascending order.

    MODEM_NUMBER_DESC3

    Sort numerically on the number of the modem, in descending order.

    STATUS_ASC4

    Sort modem on its Status.

    STATUS_DESC5

    Sort modem on its Status in reverse order.

    STATUS_ASC_ALPHABETICAL14

    Status sorted alphabetically by Status name.

    STATUS_DESC_ALPHABETICAL15

    Status sorted alphabetically by Status name, descending order.

    MODEM_NAME_ASC6

    Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in ascending order.

    MODEM_NAME_DESC7

    Sort alphabetically on the name of the modem. De default name of the modem is its HEX number, in descending order.

    ORGANIZATION_ASC8

    Sort alphabetically on the name of the organization that owns the modem, in ascending order.

    ORGANIZATION_DESC9

    Sort alphabetically on the name of the organization that owns the modem, in descending order.

    HEALTH10

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

    HEALTH_DESC11

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

    HEALTH_ASC_ALPHABETICAL12

    Health sorted alphabetically by health level name.

    HEALTH_DESC_ALPHABETICAL13

    Health sorted alphabetically by health level name, descending order.

    + +

    Modem.Lifecycle

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    ACCEPTANCE_TESTING0

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

    INSTALLED1

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

    PAUSED6

    DISABLED5

    DECOMMISSIONED4

    DAMAGED2

    Kept for backwards compatibility. Internally mapped to decommissioned

    LOST3

    Kept for backwards compatibility. Internally mapped to decommissioned

    + +

    Modem.Peripherals.HiberAntenna

    +

    A Hiber antenna is required for the modem to function.

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

    HIBER_PANDA1

    HIBER_GRIZZLY2

    HIBER_BLACK3

    CUSTOM4

    + +

    Modem.Transfer.Status

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    NONE0

    INBOUND1

    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.

    OUTBOUND2

    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.

    RETURNING3

    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.

    + +

    Modem.Type

    +

    The effective type of this modem.

    Type can depend on the hardware itself as well as network topology.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    OTHER0

    A device of which the specific type is not known

    DIRECT1

    A devices that directly connects to the satellite

    GATEWAY2

    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).

    CONNECTED_DEVICE3

    A sensor that can (only) send data to a gateway. Typically using a LoRaWAN connection.

    + +

    ModemMessage.Source

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    HIBERBAND0

    A real message from a modem or gateway, sent over Hiberband to the server.

    DIRECT_TO_API1

    A real message from a modem or gateway, sent directly to the API using a persistent connection.

    TEST2

    A test message sent to the testing API.

    SIMULATION3

    A simulated message, generated by the server.

    + + + + + +

    ModemService

    +

    The core of the Hiber system, modems are the network nodes that send information and user data.

    This service contains calls to list and manage them, as well as list their messages.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    GetGetModemRequestModem

    Get a single modem.

    CreateCreateModem.RequestCreateModem.Response

    Create new modem(s). This is only available if your organization can create modems.

    ListListModemsRequestListModemsRequest.Response

    List the modems in your organization, and, optionally, its child organizations.

    GroupedListModemsGrouped.RequestListModemsGrouped.Response

    List the modems in your organization, and, optionally, its child organizations, grouped by dependency. +For example, a modem that sends it messages through a gateway (like Hilo) would be grouped under that gateway.

    MessagesListModemMessagesRequestListModemMessagesRequest.Response

    List messages for the selected modems.

    MessageCountMessageCountRequestMessageCountRequest.Response

    Count messages for the selected modems.

    RenameRenameModemRequestModem

    Change the name of a modem to the given value.

    UpdateTagsUpdateModemTagsRequestUpdateModemTagsRequest.Response

    Add, remove and create new tags for the selected modems.

    UpdateNotesUpdateModemNotesRequestUpdateModemNotesRequest.Response

    Change the notes for the selected modems to the given value.

    UpdateSecureNotesUpdateModemSecureNotesRequestUpdateModemSecureNotesRequest.Response

    Change the secure notes for the selected modems to the given value, if you have permission.

    UpdateStatusUpdateModemLifecycleRequestUpdateModemLifecycleRequest.Response

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

    UpdatePeripheralsUpdatePeripheralsRequestUpdatePeripheralsRequest.Response

    Add and remove peripherals for the selected modems.

    HealthCountModemHealthCount.RequestModemHealthCount.Response

    Count the modems in your organization by health.

    + + + + +

    Methods with deprecated option

    + + + + + + + + + + + + + + + + + + + + +
    Method NameOption
    Messages

    true

    MessageCount

    true

    + + + + +

    Scalar Value Types

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    .proto TypeNotesC++JavaPythonGoC#PHPRuby
    doubledoubledoublefloatfloat64doublefloatFloat
    floatfloatfloatfloatfloat32floatfloatFloat
    int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
    int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
    uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
    uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
    sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
    sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
    fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
    fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
    sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
    sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
    boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
    stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
    bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)
    + + + diff --git a/docs/html/easypulse.html b/docs/html/easypulse.html index 6723483..913dca8 100644 --- a/docs/html/easypulse.html +++ b/docs/html/easypulse.html @@ -409,6 +409,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -425,6 +433,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -461,6 +473,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -3712,6 +3740,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -3844,6 +3934,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -4151,6 +4272,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/email_notifications.html b/docs/html/email_notifications.html index f859eb0..8b1f465 100644 --- a/docs/html/email_notifications.html +++ b/docs/html/email_notifications.html @@ -293,6 +293,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -309,6 +317,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -345,6 +357,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1386,6 +1414,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1518,6 +1608,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1825,6 +1946,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/event.html b/docs/html/event.html index fdd4661..ddad35f 100644 --- a/docs/html/event.html +++ b/docs/html/event.html @@ -768,6 +768,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -784,6 +792,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -820,6 +832,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -9296,6 +9324,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -9428,6 +9518,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -9735,6 +9856,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    @@ -16877,7 +17115,7 @@

    CreateModemAlarm.Responsecreated ModemAlarm -

    +

    The created modem alarm.

    @@ -16888,7 +17126,7 @@

    CreateModemAlarm.ResponseDeleteModemAlarm

    -

    +

    Delete an alarm.

    @@ -16915,7 +17153,7 @@

    DeleteModemAlarm.Request

    identifier string -

    +

    Identifier of the modem alarm to delete.

    @@ -16933,7 +17171,7 @@

    DeleteModemAlarm.ResponseListModemAlarms

    -

    +

    List modem alarms in an organization.

    @@ -16960,14 +17198,14 @@

    ListModemAlarms.Request

    selection ModemAlarmSelection -

    +

    Selection criteria for listing modem alarms.

    pagination hiber.Pagination -

    +

    Pagination for the returned alarms.

    @@ -17000,21 +17238,21 @@

    ListModemAlarms.Response

    modem_alarms ModemAlarm repeated -

    +

    A list of modem alarms.

    pagination hiber.Pagination.Result -

    +

    A pagination object, which can be used to go through the alarms.

    request ListModemAlarms.Request -

    +

    The request made to list the given alarms.

    @@ -17107,7 +17345,7 @@

    M

    ModemAlarm

    -

    Alarm for a modem, monitoring message data, location or activity.

    An alarm is a collection of checks that validate the correctness of a modem. For example, an alarm might

    check that the modem is in a given location, or that a field in its messages is between certain values.

    Health for an alarm event is determined by taking the most severe health level from the health_levels configured

    on the failing checks, using this default for any checks that do not have a health_level configured.

    This can be changed on assignment with the default_health_level parameter, to fit the needs of the organization.

    Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of

    your health levels, that level is used. Otherwise, the catch-all health level is used.

    See the health definition for more information on the catch all health level (typically the most severe).

    Note that the health level displayed here is the result of the steps above.

    When assigned to a (set of) modem(s), an alarm can be customized using its parameters.

    Parameters are based on the check fields, and are also used in the check error message template.

    For the alarm parameters, check parameters are prefixed with the check identifier.

    For example: An alarm with check A (field "healthy" equals 1) and check B (field "state" oneof ["OK", "ACTIVE"])

    would have the following parameters:

    {

    "A": {

    "expected": 1,

    "field.path": "healthy",

    "field.equals.expected": 1

    },

    "B": {

    "expected": ["OK", "ACTIVE"],

    "field.path": "state",

    "field.oneof.expected": ["OK", "ACTIVE"]

    }

    }

    +

    Alarm for a modem, monitoring message data, location or activity.

    An alarm is a collection of checks that validate the correctness of a modem. For example, an alarm might

    check that the modem is in a given location, or that a field in its messages is between certain values.

    Health for an alarm event is determined by taking the most severe health level from the health_levels configured

    on the failing checks, using this default for any checks that do not have a health_level configured.

    This can be changed on assignment with the default_health_level parameter, to fit the needs of the organization.

    Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of

    your health levels, that level is used. Otherwise, the catch-all health level is used.

    See the health definition for more information on the catch-all health level (typically the most severe).

    Note that the health level displayed here is the result of the steps above.

    When assigned to a (set of) modem(s), an alarm can be customized using its parameters.

    Parameters are based on the check fields, and are also used in the check error message template.

    For the alarm parameters, check parameters are prefixed with the check identifier.

    For example: An alarm with check A (field "healthy" equals 1) and check B (field "state" oneof ["OK", "ACTIVE"])

    would have the following parameters:

    {

    "A": {

    "expected": 1,

    "field.path": "healthy",

    "field.equals.expected": 1

    },

    "B": {

    "expected": ["OK", "ACTIVE"],

    "field.path": "state",

    "field.oneof.expected": ["OK", "ACTIVE"]

    }

    }

    @@ -17182,7 +17420,7 @@

    ModemAlarm

    @@ -17209,7 +17447,7 @@

    ModemAlarm

    ModemAlarm.Check

    -

    A check is a specification of how things should be, i.e. "a value should be within this range".

    When it fails, it produces an event with:

    - a custom health level, or the default defined in the alarm

    - an error message, define from a template in the check

    The error message template is a string with parameters for the relevant data.

    The parameters are included as {parameter}, which gets replaced with the value.

    The supported parameters are different per check, but the parameters below are always supported:

    - modem: the modem number.

    - message: the id of the message, if any.

    - expected: a shortcut for the expected value(s), depending on the check:

    - equals check: expected value

    - oneof check: expected values as [a, b, c]

    - threshold check: expected range as minimum..maximum

    - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)]

    - actual: the invalid actual value(s) for this check.

    The checks below define other available parameters.

    For example (using some parameters for specific checks):

    - "Your device {modem} has left its designated area! It is now at {actual}."

    - "Your device battery is at {actual}%, which is below the recommended minimum of {field.threshold.minimum}%."

    - "Your device battery is draining faster than expected: {actual}% over the past {field.delta.period}."

    - "Your device temperature has exceeded {value.threshold.maximum} degrees: {actual}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {expected}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {field.oneof.expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {field.equals.expected}."

    - "Unexpected value {actual} for field {field.path}!"

    Numeric values can be formatted with an extra postfix on the parameters

    - Round numeric values by adding ":.2f" (for 2 decimals). For example: "{actual:.3f}" (rounds to 3 decimals)

    - Always sign numeric values (when rounded) by prefixing the format with a plus. For example: `{actual:+.3f}`

    - This is applied to numeric fields and fields that can be numeric, like `{actual}` and `{expected}`.

    +

    A check is a specification of how things should be, i.e. "a value should be within this range".

    When it fails, it produces an event with:

    - a custom health level, or the default defined in the alarm

    - an error message, define from a template in the check

    The error message template is a string with parameters for the relevant data.

    The parameters are included as {parameter}, which gets replaced with the value.

    The supported parameters are different per check, but the parameters below are always supported:

    - modem:name: the modem name.

    - modem:number: the modem number.

    - message: the id of the message, if any.

    - expected: a shortcut for the expected value(s), depending on the check:

    - inactivity check: expected duration

    - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)]

    - equals/minimum/maximum check: expected value

    - oneof check (allowed/blocked): expected values as [a, b, c]

    - threshold/delta check: expected range as minimum..maximum, extended with duration for delta check

    - actual: the invalid actual value(s) for this check.

    The checks below define other available parameters.

    For example (using some parameters for specific checks):

    - "Your device {modem} has left its designated area! It is now at {actual}."

    - "Your device battery is at {actual}%, which is below the recommended minimum of {field.threshold.minimum}%."

    - "Your device battery is draining faster than expected: {actual}% over the past {field.delta.period}."

    - "Your device temperature has exceeded {value.threshold.maximum} degrees: {actual}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {expected}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {field.oneof.expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {field.equals.expected}."

    - "Unexpected value {actual} for field {field.path}!"

    Numeric values can be formatted with an extra postfix on the parameters

    - Round numeric values by adding ":.2f" (for 2 decimals). For example: "{actual:.3f}" (rounds to 3 decimals)

    - Always sign numeric values (when rounded) by prefixing the format with a plus. For example: `{actual:+.3f}`

    - This is applied to numeric fields and fields that can be numeric, like `{actual}` and `{expected}`.

    Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. -For example, when using an inactivity check, this would could be used to configure modem health ERROR while +For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in.

    @@ -17253,28 +17491,28 @@

    ModemAlarm.Check

    - + - + - + - + @@ -17309,7 +17547,7 @@

    ModemAlarm.Check.DelayChe

    ModemAlarm.Check.FieldCheck

    -

    A check that evaluates each new message, and checks selected field(s) in the parsed body.

    When multiple fields are selected, the checks are applied to all of them individually.

    See the Json Path documentation at https://goessner.net/articles/JsonPath/ for details on json path.

    We currently do not allow filter expressions.

    Simple examples selecting a field:

    - $.my_field: a field in the root of the parsed object

    - $.my_obj.my_field: a field in a deeper structure

    - $.my_array[x].my_field: the field my_field of the element at index x is selected

    Complex use cases are also possible, but they require a bit more understanding of json path logic:

    - $.my_array.length(): the length of my_array is selected. Combine with an equals or threshold check,

    to require that an array has a certain length.

    - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected

    - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected

    Note that this for the examples above, if they return an array, the entire array is used as the value

    in the comparison for equals and oneof.

    A check of this type has the following parameters (matches the fields):

    - field.path: replace the path for this field

    - field.ignoreFieldNotFound: replace the value for ignore_field_not_found

    For the equals check:

    - field.equals.expected: iff this is an equals check, replace the expected value

    For the oneof check:

    - field.oneof.expected: iff this is a oneof check, replace the expected values

    For the threshold check:

    - field.threshold.expected: iff this is a threshold check, replace the expected range

    - field.threshold.minimum: iff this is a threshold check, replace the expected minimum

    - field.threshold.maximum: iff this is a threshold check, replace the expected maximum

    For the delta check:

    - field.delta.period:

    - field.delta.threshold.expected: iff this is a delta check, replace the expected range

    - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum

    - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum

    All of the parameters above can be used in the error message template.

    The delta check also adds a few additional error message variables:

    - {field.delta.previous}: the previous value for the field

    - {field.delta.difference} (also {actual}): the difference between previous and current value for the field

    - {field.delta.current}: the current value for the field

    +

    A check that evaluates each new message, and checks selected field(s) in the parsed body.

    When multiple fields are selected, the checks are applied to all of them individually.

    See the Json Path documentation at https://goessner.net/articles/JsonPath/ for details on json path.

    We currently do not allow filter expressions.

    Simple examples selecting a field:

    - $.my_field: a field in the root of the parsed object

    - $.my_obj.my_field: a field in a deeper structure

    - $.my_array[x].my_field: the field my_field of the element at index x is selected

    Complex use cases are also possible, but they require a bit more understanding of json path logic:

    - $.my_array.length(): the length of my_array is selected. Combine with an equals or threshold check,

    to require that an array has a certain length.

    - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected

    - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected

    Note that for the examples above, if they return an array, the entire array is used as the value

    in the comparison for equals and oneof.

    A check of this type has the following parameters (matches the fields):

    - field.path: replace the path for this field

    - field.ignoreFieldNotFound: replace the value for ignore_field_not_found

    For the equals check:

    - field.equals.expected: iff this is an equals check, replace the expected value

    For the allowed check:

    - field.allowed.allowed: iff this is an allowed check, replace the expected values

    For the blocked check:

    - field.blocked.blocked: iff this is a blocked check, replace the expected values

    For the threshold check:

    - field.threshold.expected: iff this is a threshold check, replace the expected range

    - field.threshold.minimum: iff this is a threshold check, replace the expected minimum

    - field.threshold.maximum: iff this is a threshold check, replace the expected maximum

    For the delta check:

    - field.delta.period: iff this is a delta check, replace the expected duration

    - field.delta.threshold.expected: iff this is a delta check, replace the expected range

    - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum

    - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum

    All of the parameters above can be used in the error message template.

    The delta check also adds a few additional error message variables:

    - {field.delta.previous}: the previous value for the field

    - {field.delta.difference} (also {actual}): the difference between previous and current value for the field

    - {field.delta.current}: the current value for the field

    location ModemAlarm.Check.LocationCheck

    Check whether the device is in a given location.

    field ModemAlarm.Check.FieldCheck

    Check that a message body field has a specified value.

    inactivity ModemAlarm.Check.InactivityCheck

    Check whether the device exceeds inactivity limits.

    delay ModemAlarm.Check.DelayCheck

    Check whether a message delay exceeds delay limits.

    @@ -17347,49 +17585,49 @@

    ModemAlarm.Check.FieldChe

    - + - + - + - + - + - + - + @@ -17437,7 +17675,7 @@

    ModemAlarm.C

    - + @@ -17510,7 +17748,7 @@

    ModemAlarm.Ch

    - + @@ -17683,7 +17921,7 @@

    ModemAlarm.Check.Locat

    ModemAlarm.HealthLevelAfterResolved

    -

    Allow the alarm to cause a health level for the modem even after a new message has come in.

    Typically, an alarm event only affects the modem health while it is from the last message from that modem.

    By configuring this, you can specify the modem health should be affected for a longer period.

    For example, when using an inactivity check, this would could be used to configure modem health ERROR while

    inactive, lowering to INVESTIGATE for a day after a new message comes in.

    +

    Allow the alarm to cause a health level for the modem even after a new message has come in.

    Typically, an alarm event only affects the modem health while it is from the last message from that modem.

    By configuring this, you can specify the modem health should be affected for a longer period.

    For example, when using an inactivity check, this could be used to configure modem health ERROR while

    inactive, lowering to INVESTIGATE for a day after a new message comes in.

    equals ModemAlarm.Check.FieldCheck.EqualsCheck

    Check that a field equals a value.

    allowed ModemAlarm.Check.FieldCheck.AllowedCheck

    Check that a field equals one of a set of values.

    blocked ModemAlarm.Check.FieldCheck.BlockedCheck

    Check that a field does not equal one of a set of values.

    minimum ModemAlarm.Check.FieldCheck.MinimumCheck

    Chech that a field is higher than the given value.

    maximum ModemAlarm.Check.FieldCheck.MaximumCheck

    Check that a field is lower than the given value.

    threshold ModemAlarm.Check.FieldCheck.ThresholdCheck

    Check that a field is within a given numeric range.

    delta ModemAlarm.Check.FieldCheck.DeltaCheck

    Check that a field's difference in value over a given period is within a specified numeric range.

    blocked google.protobuf.Value repeated

    The list of blocked values; the field should not match any of them.

    expected google.protobuf.Value

    The expected value a field should have.

    @@ -17714,7 +17952,7 @@

    ModemAlarm.Health

    ModemAlarmSelection

    -

    +

    Selection criteria for listing modem alarms in an organization. If no options are provided, all modem alarms

    are valid.

    If values are provided both for identifiers and search, then only alarms are selected that match both criteria.

    @@ -17727,7 +17965,7 @@

    ModemAlarmSelection

    - + @@ -17748,7 +17986,9 @@

    ModemAlarmSelection

    - + @@ -17759,7 +17999,7 @@

    ModemAlarmSelection

    TestModemAlarmTestParameters

    -

    +

    Test a set of parameters on a modem alarm, to see the result when they are applied during assignment.

    @@ -17786,14 +18026,14 @@

    TestModemAlarmTe

    - + - + @@ -18087,14 +18327,14 @@

    UpdateModemAlarmAddC

    - + - + @@ -18129,7 +18369,7 @@

    UpdateModemAlarmAdd

    UpdateModemAlarmAvailability

    -

    +

    Update the modem alarm availability, specifying for which (child) organizations an alarm is available.

    @@ -18156,7 +18396,7 @@

    UpdateModemAlarm

    - + @@ -18199,7 +18439,7 @@

    UpdateModemAlar

    UpdateModemAlarmRemoveCheck

    -

    +

    Remove a check from an alarm.

    @@ -18226,14 +18466,14 @@

    UpdateModemAlarmR

    - + - + @@ -18268,7 +18508,7 @@

    UpdateModemAlarm

    UpdateModemAlarmUpdateCheck

    -

    +

    Update a check of an alarm.

    Only the values of a check can be updated, e.g., it is not possible to change an inactivity check to a location

    check.

    @@ -18295,21 +18535,21 @@

    UpdateModemAlarmU

    - + - + - + diff --git a/docs/html/export.html b/docs/html/export.html index 60beee6..913099f 100644 --- a/docs/html/export.html +++ b/docs/html/export.html @@ -353,6 +353,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -369,6 +377,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -405,6 +417,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1780,6 +1808,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + +
    identifiers string repeated

    Selects alarms by the given list of alarm identifiers.

    only_owned_alarms bool

    Only list owned alarms. Alarms are considered owned if your current organization created them, and thus would +be able to delete them. Alarms can also be inherited from parent organizations, in which case they are owned +by that parent organization.

    alarm_identifier string

    The identifier of the alarm on which to test parameters.

    parameters google.protobuf.Struct

    The parameters of the alarm that are changed.

    alarm_identifier string

    The identifier of the alarm to which the check is added.

    check ModemAlarm.Check

    The check to add to the Modem Alarm. Identifier must be unique within the alarm.

    The check to add to the Modem Alarm. Identifier of the check must be unique within the alarm.

    alarm_identifier string

    The identifier of the alarm for which to update the modem availability.

    alarm_identifier string

    The identifier of the alarm from which to remove the check.

    check_identifier string

    The identifier of the check to remove.

    alarm_identifier string

    The identifier of the alarm of which to update the check.

    check_identifier string

    The identifier of the check to update.

    update_check ModemAlarm.Check

    The new values for the check of this alarm.

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1912,6 +2002,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2219,6 +2340,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/field.html b/docs/html/field.html index eeca38c..7d23a4a 100644 --- a/docs/html/field.html +++ b/docs/html/field.html @@ -265,6 +265,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -281,6 +289,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -317,6 +329,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1353,6 +1381,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1485,6 +1575,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1792,6 +1913,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/field_service.html b/docs/html/field_service.html index d917005..acd9dad 100644 --- a/docs/html/field_service.html +++ b/docs/html/field_service.html @@ -317,6 +317,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -333,6 +341,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -369,6 +381,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2279,6 +2307,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2411,6 +2501,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2718,6 +2839,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/health.html b/docs/html/health.html index 7a38827..f614e75 100644 --- a/docs/html/health.html +++ b/docs/html/health.html @@ -321,6 +321,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -337,6 +345,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -373,6 +385,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1488,6 +1516,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1620,6 +1710,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1927,6 +2048,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/integration_mqtt.html b/docs/html/integration_mqtt.html index 955e119..85a2f74 100644 --- a/docs/html/integration_mqtt.html +++ b/docs/html/integration_mqtt.html @@ -337,6 +337,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -353,6 +361,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -389,6 +401,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2212,6 +2240,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2344,6 +2434,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2651,6 +2772,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/integration_slack.html b/docs/html/integration_slack.html index 3607920..4663cd6 100644 --- a/docs/html/integration_slack.html +++ b/docs/html/integration_slack.html @@ -329,6 +329,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -345,6 +353,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -381,6 +393,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1987,6 +2015,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2119,6 +2209,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2426,6 +2547,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/map.html b/docs/html/map.html index 66597cc..8cf7451 100644 --- a/docs/html/map.html +++ b/docs/html/map.html @@ -297,6 +297,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -313,6 +321,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -349,6 +361,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1750,6 +1778,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1882,6 +1972,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2189,6 +2310,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/message.html b/docs/html/message.html index 05389be..faa6e0d 100644 --- a/docs/html/message.html +++ b/docs/html/message.html @@ -333,6 +333,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -349,6 +357,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -385,6 +397,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2367,6 +2395,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2499,6 +2589,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2806,6 +2927,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/modem.html b/docs/html/modem.html index 314b2d7..1093a21 100644 --- a/docs/html/modem.html +++ b/docs/html/modem.html @@ -473,6 +473,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -489,6 +497,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -525,6 +537,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -4449,6 +4477,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -4581,6 +4671,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -4888,6 +5009,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/modem_alarm.html b/docs/html/modem_alarm.html index 9868f43..6fe8217 100644 --- a/docs/html/modem_alarm.html +++ b/docs/html/modem_alarm.html @@ -465,6 +465,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -481,6 +489,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -517,6 +529,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1102,7 +1130,7 @@

    CreateModemAlarm.Responsecreated ModemAlarm -

    +

    The created modem alarm.

    @@ -1113,7 +1141,7 @@

    CreateModemAlarm.ResponseDeleteModemAlarm

    -

    +

    Delete an alarm.

    @@ -1140,7 +1168,7 @@

    DeleteModemAlarm.Request

    identifier string -

    +

    Identifier of the modem alarm to delete.

    @@ -1158,7 +1186,7 @@

    DeleteModemAlarm.ResponseListModemAlarms

    -

    +

    List modem alarms in an organization.

    @@ -1185,14 +1213,14 @@

    ListModemAlarms.Request

    selection ModemAlarmSelection -

    +

    Selection criteria for listing modem alarms.

    pagination hiber.Pagination -

    +

    Pagination for the returned alarms.

    @@ -1225,21 +1253,21 @@

    ListModemAlarms.Response

    modem_alarms ModemAlarm repeated -

    +

    A list of modem alarms.

    pagination hiber.Pagination.Result -

    +

    A pagination object, which can be used to go through the alarms.

    request ListModemAlarms.Request -

    +

    The request made to list the given alarms.

    @@ -1332,7 +1360,7 @@

    M

    ModemAlarm

    -

    Alarm for a modem, monitoring message data, location or activity.

    An alarm is a collection of checks that validate the correctness of a modem. For example, an alarm might

    check that the modem is in a given location, or that a field in its messages is between certain values.

    Health for an alarm event is determined by taking the most severe health level from the health_levels configured

    on the failing checks, using this default for any checks that do not have a health_level configured.

    This can be changed on assignment with the default_health_level parameter, to fit the needs of the organization.

    Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of

    your health levels, that level is used. Otherwise, the catch-all health level is used.

    See the health definition for more information on the catch all health level (typically the most severe).

    Note that the health level displayed here is the result of the steps above.

    When assigned to a (set of) modem(s), an alarm can be customized using its parameters.

    Parameters are based on the check fields, and are also used in the check error message template.

    For the alarm parameters, check parameters are prefixed with the check identifier.

    For example: An alarm with check A (field "healthy" equals 1) and check B (field "state" oneof ["OK", "ACTIVE"])

    would have the following parameters:

    {

    "A": {

    "expected": 1,

    "field.path": "healthy",

    "field.equals.expected": 1

    },

    "B": {

    "expected": ["OK", "ACTIVE"],

    "field.path": "state",

    "field.oneof.expected": ["OK", "ACTIVE"]

    }

    }

    +

    Alarm for a modem, monitoring message data, location or activity.

    An alarm is a collection of checks that validate the correctness of a modem. For example, an alarm might

    check that the modem is in a given location, or that a field in its messages is between certain values.

    Health for an alarm event is determined by taking the most severe health level from the health_levels configured

    on the failing checks, using this default for any checks that do not have a health_level configured.

    This can be changed on assignment with the default_health_level parameter, to fit the needs of the organization.

    Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of

    your health levels, that level is used. Otherwise, the catch-all health level is used.

    See the health definition for more information on the catch-all health level (typically the most severe).

    Note that the health level displayed here is the result of the steps above.

    When assigned to a (set of) modem(s), an alarm can be customized using its parameters.

    Parameters are based on the check fields, and are also used in the check error message template.

    For the alarm parameters, check parameters are prefixed with the check identifier.

    For example: An alarm with check A (field "healthy" equals 1) and check B (field "state" oneof ["OK", "ACTIVE"])

    would have the following parameters:

    {

    "A": {

    "expected": 1,

    "field.path": "healthy",

    "field.equals.expected": 1

    },

    "B": {

    "expected": ["OK", "ACTIVE"],

    "field.path": "state",

    "field.oneof.expected": ["OK", "ACTIVE"]

    }

    }

    @@ -1407,7 +1435,7 @@

    ModemAlarm

    @@ -1434,7 +1462,7 @@

    ModemAlarm

    ModemAlarm.Check

    -

    A check is a specification of how things should be, i.e. "a value should be within this range".

    When it fails, it produces an event with:

    - a custom health level, or the default defined in the alarm

    - an error message, define from a template in the check

    The error message template is a string with parameters for the relevant data.

    The parameters are included as {parameter}, which gets replaced with the value.

    The supported parameters are different per check, but the parameters below are always supported:

    - modem: the modem number.

    - message: the id of the message, if any.

    - expected: a shortcut for the expected value(s), depending on the check:

    - equals check: expected value

    - oneof check: expected values as [a, b, c]

    - threshold check: expected range as minimum..maximum

    - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)]

    - actual: the invalid actual value(s) for this check.

    The checks below define other available parameters.

    For example (using some parameters for specific checks):

    - "Your device {modem} has left its designated area! It is now at {actual}."

    - "Your device battery is at {actual}%, which is below the recommended minimum of {field.threshold.minimum}%."

    - "Your device battery is draining faster than expected: {actual}% over the past {field.delta.period}."

    - "Your device temperature has exceeded {value.threshold.maximum} degrees: {actual}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {expected}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {field.oneof.expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {field.equals.expected}."

    - "Unexpected value {actual} for field {field.path}!"

    Numeric values can be formatted with an extra postfix on the parameters

    - Round numeric values by adding ":.2f" (for 2 decimals). For example: "{actual:.3f}" (rounds to 3 decimals)

    - Always sign numeric values (when rounded) by prefixing the format with a plus. For example: `{actual:+.3f}`

    - This is applied to numeric fields and fields that can be numeric, like `{actual}` and `{expected}`.

    +

    A check is a specification of how things should be, i.e. "a value should be within this range".

    When it fails, it produces an event with:

    - a custom health level, or the default defined in the alarm

    - an error message, define from a template in the check

    The error message template is a string with parameters for the relevant data.

    The parameters are included as {parameter}, which gets replaced with the value.

    The supported parameters are different per check, but the parameters below are always supported:

    - modem:name: the modem name.

    - modem:number: the modem number.

    - message: the id of the message, if any.

    - expected: a shortcut for the expected value(s), depending on the check:

    - inactivity check: expected duration

    - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)]

    - equals/minimum/maximum check: expected value

    - oneof check (allowed/blocked): expected values as [a, b, c]

    - threshold/delta check: expected range as minimum..maximum, extended with duration for delta check

    - actual: the invalid actual value(s) for this check.

    The checks below define other available parameters.

    For example (using some parameters for specific checks):

    - "Your device {modem} has left its designated area! It is now at {actual}."

    - "Your device battery is at {actual}%, which is below the recommended minimum of {field.threshold.minimum}%."

    - "Your device battery is draining faster than expected: {actual}% over the past {field.delta.period}."

    - "Your device temperature has exceeded {value.threshold.maximum} degrees: {actual}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {expected}."

    - "Your device reported an unhealthy state {actual}. Healthy states are: {field.oneof.expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {expected}."

    - "Your device reported an unhealthy state {actual}. Please set it back to {field.equals.expected}."

    - "Unexpected value {actual} for field {field.path}!"

    Numeric values can be formatted with an extra postfix on the parameters

    - Round numeric values by adding ":.2f" (for 2 decimals). For example: "{actual:.3f}" (rounds to 3 decimals)

    - Always sign numeric values (when rounded) by prefixing the format with a plus. For example: `{actual:+.3f}`

    - This is applied to numeric fields and fields that can be numeric, like `{actual}` and `{expected}`.

    Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. -For example, when using an inactivity check, this would could be used to configure modem health ERROR while +For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in.

    @@ -1478,28 +1506,28 @@

    ModemAlarm.Check

    - + - + - + - + @@ -1534,7 +1562,7 @@

    ModemAlarm.Check.DelayChe

    ModemAlarm.Check.FieldCheck

    -

    A check that evaluates each new message, and checks selected field(s) in the parsed body.

    When multiple fields are selected, the checks are applied to all of them individually.

    See the Json Path documentation at https://goessner.net/articles/JsonPath/ for details on json path.

    We currently do not allow filter expressions.

    Simple examples selecting a field:

    - $.my_field: a field in the root of the parsed object

    - $.my_obj.my_field: a field in a deeper structure

    - $.my_array[x].my_field: the field my_field of the element at index x is selected

    Complex use cases are also possible, but they require a bit more understanding of json path logic:

    - $.my_array.length(): the length of my_array is selected. Combine with an equals or threshold check,

    to require that an array has a certain length.

    - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected

    - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected

    Note that this for the examples above, if they return an array, the entire array is used as the value

    in the comparison for equals and oneof.

    A check of this type has the following parameters (matches the fields):

    - field.path: replace the path for this field

    - field.ignoreFieldNotFound: replace the value for ignore_field_not_found

    For the equals check:

    - field.equals.expected: iff this is an equals check, replace the expected value

    For the oneof check:

    - field.oneof.expected: iff this is a oneof check, replace the expected values

    For the threshold check:

    - field.threshold.expected: iff this is a threshold check, replace the expected range

    - field.threshold.minimum: iff this is a threshold check, replace the expected minimum

    - field.threshold.maximum: iff this is a threshold check, replace the expected maximum

    For the delta check:

    - field.delta.period:

    - field.delta.threshold.expected: iff this is a delta check, replace the expected range

    - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum

    - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum

    All of the parameters above can be used in the error message template.

    The delta check also adds a few additional error message variables:

    - {field.delta.previous}: the previous value for the field

    - {field.delta.difference} (also {actual}): the difference between previous and current value for the field

    - {field.delta.current}: the current value for the field

    +

    A check that evaluates each new message, and checks selected field(s) in the parsed body.

    When multiple fields are selected, the checks are applied to all of them individually.

    See the Json Path documentation at https://goessner.net/articles/JsonPath/ for details on json path.

    We currently do not allow filter expressions.

    Simple examples selecting a field:

    - $.my_field: a field in the root of the parsed object

    - $.my_obj.my_field: a field in a deeper structure

    - $.my_array[x].my_field: the field my_field of the element at index x is selected

    Complex use cases are also possible, but they require a bit more understanding of json path logic:

    - $.my_array.length(): the length of my_array is selected. Combine with an equals or threshold check,

    to require that an array has a certain length.

    - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected

    - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected

    Note that for the examples above, if they return an array, the entire array is used as the value

    in the comparison for equals and oneof.

    A check of this type has the following parameters (matches the fields):

    - field.path: replace the path for this field

    - field.ignoreFieldNotFound: replace the value for ignore_field_not_found

    For the equals check:

    - field.equals.expected: iff this is an equals check, replace the expected value

    For the allowed check:

    - field.allowed.allowed: iff this is an allowed check, replace the expected values

    For the blocked check:

    - field.blocked.blocked: iff this is a blocked check, replace the expected values

    For the threshold check:

    - field.threshold.expected: iff this is a threshold check, replace the expected range

    - field.threshold.minimum: iff this is a threshold check, replace the expected minimum

    - field.threshold.maximum: iff this is a threshold check, replace the expected maximum

    For the delta check:

    - field.delta.period: iff this is a delta check, replace the expected duration

    - field.delta.threshold.expected: iff this is a delta check, replace the expected range

    - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum

    - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum

    All of the parameters above can be used in the error message template.

    The delta check also adds a few additional error message variables:

    - {field.delta.previous}: the previous value for the field

    - {field.delta.difference} (also {actual}): the difference between previous and current value for the field

    - {field.delta.current}: the current value for the field

    location ModemAlarm.Check.LocationCheck

    Check whether the device is in a given location.

    field ModemAlarm.Check.FieldCheck

    Check that a message body field has a specified value.

    inactivity ModemAlarm.Check.InactivityCheck

    Check whether the device exceeds inactivity limits.

    delay ModemAlarm.Check.DelayCheck

    Check whether a message delay exceeds delay limits.

    @@ -1572,49 +1600,49 @@

    ModemAlarm.Check.FieldChe

    - + - + - + - + - + - + - + @@ -1662,7 +1690,7 @@

    ModemAlarm.C

    - + @@ -1735,7 +1763,7 @@

    ModemAlarm.Ch

    - + @@ -1908,7 +1936,7 @@

    ModemAlarm.Check.Locat

    ModemAlarm.HealthLevelAfterResolved

    -

    Allow the alarm to cause a health level for the modem even after a new message has come in.

    Typically, an alarm event only affects the modem health while it is from the last message from that modem.

    By configuring this, you can specify the modem health should be affected for a longer period.

    For example, when using an inactivity check, this would could be used to configure modem health ERROR while

    inactive, lowering to INVESTIGATE for a day after a new message comes in.

    +

    Allow the alarm to cause a health level for the modem even after a new message has come in.

    Typically, an alarm event only affects the modem health while it is from the last message from that modem.

    By configuring this, you can specify the modem health should be affected for a longer period.

    For example, when using an inactivity check, this could be used to configure modem health ERROR while

    inactive, lowering to INVESTIGATE for a day after a new message comes in.

    equals ModemAlarm.Check.FieldCheck.EqualsCheck

    Check that a field equals a value.

    allowed ModemAlarm.Check.FieldCheck.AllowedCheck

    Check that a field equals one of a set of values.

    blocked ModemAlarm.Check.FieldCheck.BlockedCheck

    Check that a field does not equal one of a set of values.

    minimum ModemAlarm.Check.FieldCheck.MinimumCheck

    Chech that a field is higher than the given value.

    maximum ModemAlarm.Check.FieldCheck.MaximumCheck

    Check that a field is lower than the given value.

    threshold ModemAlarm.Check.FieldCheck.ThresholdCheck

    Check that a field is within a given numeric range.

    delta ModemAlarm.Check.FieldCheck.DeltaCheck

    Check that a field's difference in value over a given period is within a specified numeric range.

    blocked google.protobuf.Value repeated

    The list of blocked values; the field should not match any of them.

    expected google.protobuf.Value

    The expected value a field should have.

    @@ -1939,7 +1967,7 @@

    ModemAlarm.Health

    ModemAlarmSelection

    -

    +

    Selection criteria for listing modem alarms in an organization. If no options are provided, all modem alarms

    are valid.

    If values are provided both for identifiers and search, then only alarms are selected that match both criteria.

    @@ -1952,7 +1980,7 @@

    ModemAlarmSelection

    - + @@ -1973,7 +2001,9 @@

    ModemAlarmSelection

    - + @@ -1984,7 +2014,7 @@

    ModemAlarmSelection

    TestModemAlarmTestParameters

    -

    +

    Test a set of parameters on a modem alarm, to see the result when they are applied during assignment.

    @@ -2011,14 +2041,14 @@

    TestModemAlarmTe

    - + - + @@ -2312,14 +2342,14 @@

    UpdateModemAlarmAddC

    - + - + @@ -2354,7 +2384,7 @@

    UpdateModemAlarmAdd

    UpdateModemAlarmAvailability

    -

    +

    Update the modem alarm availability, specifying for which (child) organizations an alarm is available.

    @@ -2381,7 +2411,7 @@

    UpdateModemAlarm

    - + @@ -2424,7 +2454,7 @@

    UpdateModemAlar

    UpdateModemAlarmRemoveCheck

    -

    +

    Remove a check from an alarm.

    @@ -2451,14 +2481,14 @@

    UpdateModemAlarmR

    - + - + @@ -2493,7 +2523,7 @@

    UpdateModemAlarm

    UpdateModemAlarmUpdateCheck

    -

    +

    Update a check of an alarm.

    Only the values of a check can be updated, e.g., it is not possible to change an inactivity check to a location

    check.

    @@ -2520,21 +2550,21 @@

    UpdateModemAlarmU

    - + - + - + @@ -3186,6 +3216,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + +
    identifiers string repeated

    Selects alarms by the given list of alarm identifiers.

    only_owned_alarms bool

    Only list owned alarms. Alarms are considered owned if your current organization created them, and thus would +be able to delete them. Alarms can also be inherited from parent organizations, in which case they are owned +by that parent organization.

    alarm_identifier string

    The identifier of the alarm on which to test parameters.

    parameters google.protobuf.Struct

    The parameters of the alarm that are changed.

    alarm_identifier string

    The identifier of the alarm to which the check is added.

    check ModemAlarm.Check

    The check to add to the Modem Alarm. Identifier must be unique within the alarm.

    The check to add to the Modem Alarm. Identifier of the check must be unique within the alarm.

    alarm_identifier string

    The identifier of the alarm for which to update the modem availability.

    alarm_identifier string

    The identifier of the alarm from which to remove the check.

    check_identifier string

    The identifier of the check to remove.

    alarm_identifier string

    The identifier of the alarm of which to update the check.

    check_identifier string

    The identifier of the check to update.

    update_check ModemAlarm.Check

    The new values for the check of this alarm.

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -3318,6 +3410,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -3625,6 +3748,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/modem_claim.html b/docs/html/modem_claim.html index 66d3754..a498b89 100644 --- a/docs/html/modem_claim.html +++ b/docs/html/modem_claim.html @@ -273,6 +273,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -289,6 +297,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -325,6 +337,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1168,6 +1196,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1300,6 +1390,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1607,6 +1728,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/modem_message_body_parser.html b/docs/html/modem_message_body_parser.html index 573558d..20d0198 100644 --- a/docs/html/modem_message_body_parser.html +++ b/docs/html/modem_message_body_parser.html @@ -401,6 +401,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -417,6 +425,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -453,6 +465,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2898,6 +2926,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -3030,6 +3120,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -3337,6 +3458,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/modem_message_downlink.html b/docs/html/modem_message_downlink.html index cc48f59..0b21b31 100644 --- a/docs/html/modem_message_downlink.html +++ b/docs/html/modem_message_downlink.html @@ -297,6 +297,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -313,6 +321,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -349,6 +361,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1596,6 +1624,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1728,6 +1818,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2035,6 +2156,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/modem_transfer.html b/docs/html/modem_transfer.html index 62cb479..874fddd 100644 --- a/docs/html/modem_transfer.html +++ b/docs/html/modem_transfer.html @@ -353,6 +353,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -369,6 +377,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -405,6 +417,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2591,6 +2619,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2723,6 +2813,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -3030,6 +3151,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/named_location.html b/docs/html/named_location.html index 8a5d83e..34dea96 100644 --- a/docs/html/named_location.html +++ b/docs/html/named_location.html @@ -313,6 +313,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -329,6 +337,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -365,6 +377,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1523,6 +1551,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1655,6 +1745,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1962,6 +2083,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/organization.html b/docs/html/organization.html index b793e7f..82b14fd 100644 --- a/docs/html/organization.html +++ b/docs/html/organization.html @@ -337,6 +337,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -353,6 +361,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -389,6 +401,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1890,6 +1918,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2022,6 +2112,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2329,6 +2450,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/publisher.html b/docs/html/publisher.html index 37f2e3c..ffb6c20 100644 --- a/docs/html/publisher.html +++ b/docs/html/publisher.html @@ -281,6 +281,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -297,6 +305,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -333,6 +345,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1807,6 +1835,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1939,6 +2029,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2246,6 +2367,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/satellite.html b/docs/html/satellite.html index 5b5991a..31febaa 100644 --- a/docs/html/satellite.html +++ b/docs/html/satellite.html @@ -293,6 +293,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -309,6 +317,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -345,6 +357,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1323,6 +1351,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1455,6 +1545,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1762,6 +1883,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/simulation.html b/docs/html/simulation.html index 24870b9..6bf9df7 100644 --- a/docs/html/simulation.html +++ b/docs/html/simulation.html @@ -265,6 +265,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -281,6 +289,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -317,6 +329,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1053,6 +1081,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1185,6 +1275,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1492,6 +1613,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/simulation_service.html b/docs/html/simulation_service.html index 547cd38..3507568 100644 --- a/docs/html/simulation_service.html +++ b/docs/html/simulation_service.html @@ -285,6 +285,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -301,6 +309,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -337,6 +349,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1453,6 +1481,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1585,6 +1675,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1892,6 +2013,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/status.html b/docs/html/status.html index 283c3ef..8b10952 100644 --- a/docs/html/status.html +++ b/docs/html/status.html @@ -297,6 +297,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -313,6 +321,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -349,6 +361,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1490,6 +1518,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1622,6 +1712,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1929,6 +2050,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/tag.html b/docs/html/tag.html index 0e50cf9..337a3b1 100644 --- a/docs/html/tag.html +++ b/docs/html/tag.html @@ -293,6 +293,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -309,6 +317,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -345,6 +357,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1298,6 +1326,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1430,6 +1520,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1737,6 +1858,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/testing.html b/docs/html/testing.html index e2c7706..b4a1712 100644 --- a/docs/html/testing.html +++ b/docs/html/testing.html @@ -345,6 +345,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -361,6 +369,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -397,6 +409,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2120,6 +2148,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2252,6 +2342,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2559,6 +2680,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/token.html b/docs/html/token.html index cd2c7f3..76a32ee 100644 --- a/docs/html/token.html +++ b/docs/html/token.html @@ -293,6 +293,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -309,6 +317,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -345,6 +357,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1344,6 +1372,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -1476,6 +1566,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -1783,6 +1904,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/user.html b/docs/html/user.html index eb229fe..492fa0b 100644 --- a/docs/html/user.html +++ b/docs/html/user.html @@ -365,6 +365,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -381,6 +389,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -417,6 +429,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2045,6 +2073,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2177,6 +2267,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2484,6 +2605,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/value.html b/docs/html/value.html index c0002f2..9ecdcbd 100644 --- a/docs/html/value.html +++ b/docs/html/value.html @@ -361,6 +361,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -377,6 +385,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -413,6 +425,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2214,6 +2242,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2346,6 +2436,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2653,6 +2774,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/value_service.html b/docs/html/value_service.html index 32194fb..14cbd45 100644 --- a/docs/html/value_service.html +++ b/docs/html/value_service.html @@ -309,6 +309,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -325,6 +333,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -361,6 +373,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -1873,6 +1901,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2005,6 +2095,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -2312,6 +2433,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/html/webhook.html b/docs/html/webhook.html index 9c0a56b..6c6adbc 100644 --- a/docs/html/webhook.html +++ b/docs/html/webhook.html @@ -393,6 +393,14 @@

    Table of Contents

    MFilter.FieldEnumValues +
  • + MFilter.HealthLevels +
  • + +
  • + MFilter.ModemIdentifiers +
  • +
  • MFilter.Modems
  • @@ -409,6 +417,10 @@

    Table of Contents

    MFilter.Organizations +
  • + MFilter.Properties +
  • +
  • MFilter.Publishers
  • @@ -445,6 +457,22 @@

    Table of Contents

    MLocationSelection +
  • + MMapFilter +
  • + +
  • + MMapFilter.ExcludeEntry +
  • + +
  • + MMapFilter.IncludeAndEntry +
  • + +
  • + MMapFilter.OneOfValues +
  • +
  • MNamedFile
  • @@ -2780,6 +2808,68 @@

    Filter.FieldEnumValues

    +

    Filter.HealthLevels

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + + +

    Filter.ModemIdentifiers

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    includestringrepeated

    excludestringrepeated

    + + + + +

    Filter.Modems

    @@ -2912,6 +3002,37 @@

    Filter.Organizations

    +

    Filter.Properties

    +

    Filter result on specific properties encoded in map-value pairs.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    propertiesMapFilter

    include_only_emptybool

    When set to true, match only empty property-sets.

    + + + + +

    Filter.Publishers

    @@ -3219,6 +3340,123 @@

    LocationSelection

    +

    MapFilter

    +

    Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE).

    This filter allows selecting a range of values for a specific name.

    One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1".

    To select for multiple versions of a property,

    add the name of the property as a map-key and add a repeated list of versions as the map-value.

    For example:

    - include { 'bluetooth' -> [ ] }

    returns all items that have any version of bluetooth,

    - include { 'bluetooth' -> [ '4.0', '5.0' ] }

    will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or),

    - include { 'bluetooth' -> [ '' ] }

    would only select bluetooth peripherals that don't have any version set,

    - include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] }

    will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version),

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] }

    will return an empty list since exclude will take precedence, and

    - include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] }

    returns only items that have bluetooth, but not version 3.0.

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    include_andMapFilter.IncludeAndEntryrepeated

    Filter to only include items with all of the given set of properties.

    excludeMapFilter.ExcludeEntryrepeated

    Filter to exclude items with any of the given set of properties.

    + + + + + +

    MapFilter.ExcludeEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.IncludeAndEntry

    +

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    keystring

    valueMapFilter.OneOfValues

    + + + + + +

    MapFilter.OneOfValues

    +

    Technical solution to make map into a map,

    which is not possible in protobuf without trickery.

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valuestringrepeated

    + + + + +

    NamedFile

    A NamedFile contains bytes with its mime-type and name.

    It can represent any file of any type.

    Note that depending on where in the API this is used,

    the server might put restrictions on file size, media-type or name length.

    The file name should be interpreted as-is.

    No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type.

    It might not even have a file extension.

    The file name may contain characters that cannot be a valid file name on certain systems.

    Specific API calls may pur restrictions on the name or size of the file.

    When showing this as an image in a browser, one can make use of a `data` URI.

    The client must convert the bytes to base64 and can then construct a data URI like this

    data:;base64,

    Other type clients should be able to sort-of-directly set the data bytes as the source for an image.

    diff --git a/docs/md/assignment.md b/docs/md/assignment.md index fdd700f..2bb7925 100644 --- a/docs/md/assignment.md +++ b/docs/md/assignment.md @@ -178,10 +178,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -191,6 +194,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -849,11 +856,11 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | -| created | [ hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | none | +| created | [ hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | The created modem alarm. | ### hiber.modem.alarm.DeleteModemAlarm - +Delete an alarm. ### hiber.modem.alarm.DeleteModemAlarm.Request @@ -863,7 +870,7 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| identifier | [ string](#string) | none | +| identifier | [ string](#string) | Identifier of the modem alarm to delete. | ### hiber.modem.alarm.DeleteModemAlarm.Response @@ -872,7 +879,7 @@ This is a shortcut for creating an alarm and then adding checks, and as such can ### hiber.modem.alarm.ListModemAlarms - +List modem alarms in an organization. ### hiber.modem.alarm.ListModemAlarms.Request @@ -882,8 +889,8 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| selection | [ hiber.modem.alarm.ModemAlarmSelection](#hibermodemalarmmodemalarmselection) | none | -| pagination | [ hiber.Pagination](#hiberpagination) | none | +| selection | [ hiber.modem.alarm.ModemAlarmSelection](#hibermodemalarmmodemalarmselection) | Selection criteria for listing modem alarms. | +| pagination | [ hiber.Pagination](#hiberpagination) | Pagination for the returned alarms. | | apply_unit_preferences | [ bool](#bool) | Apply your UnitPreferences to the alarm checks. For example, if a temperature check is configured in kelvin, but your unit preferences specify celsius for temperature, the check value will be converted to celsius instead. | ### hiber.modem.alarm.ListModemAlarms.Response @@ -892,9 +899,9 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | -| modem_alarms | [repeated hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | none | -| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | none | -| request | [ hiber.modem.alarm.ListModemAlarms.Request](#hibermodemalarmlistmodemalarmsrequest) | none | +| modem_alarms | [repeated hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | A list of modem alarms. | +| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | A pagination object, which can be used to go through the alarms. | +| request | [ hiber.modem.alarm.ListModemAlarms.Request](#hibermodemalarmlistmodemalarmsrequest) | The request made to list the given alarms. | ### hiber.modem.alarm.MakeModemAlarmAvailableToChildOrganizationRequest @@ -929,7 +936,7 @@ This can be changed on assignment with the default_health_level parameter, to fi Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of your health levels, that level is used. Otherwise, the catch-all health level is used. -See the health definition for more information on the catch all health level (typically the most severe). +See the health definition for more information on the catch-all health level (typically the most severe). Note that the health level displayed here is the result of the steps above. When assigned to a (set of) modem(s), an alarm can be customized using its parameters. @@ -961,7 +968,7 @@ would have the following parameters: | available_to_child_organizations | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | Availability to child organizations. This alarm can be shared to child organizations, so it can be assigned to their modems, either directly or automatically over all selected child organizations. Only the owner organization is able to edit the alarm. | | trigger_condition | [ hiber.modem.alarm.ModemAlarm.TriggerCondition](#hibermodemalarmmodemalarmtriggercondition) | Condition determining when an alarm is triggered if it has multiple checks. | | default_health_level | [ string](#string) | The default health level for checks in this alarm, if they have no health_level configured. | -| health_level_after_resolved | [ hiber.modem.alarm.ModemAlarm.HealthLevelAfterResolved](#hibermodemalarmmodemalarmhealthlevelafterresolved) | Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. For example, when using an inactivity check, this would could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | +| health_level_after_resolved | [ hiber.modem.alarm.ModemAlarm.HealthLevelAfterResolved](#hibermodemalarmmodemalarmhealthlevelafterresolved) | Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | | checks | [repeated hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The checks in this alarm, that validate the state of the modem. | | alarm_parameters | [ google.protobuf.Struct](#googleprotobufstruct) | Parameters for this alarm. This field displays all the parameters that can be set for the alarm on assignment, with their current value. | @@ -976,13 +983,15 @@ The error message template is a string with parameters for the relevant data. The parameters are included as {parameter}, which gets replaced with the value. The supported parameters are different per check, but the parameters below are always supported: -- modem: the modem number. +- modem:name: the modem name. +- modem:number: the modem number. - message: the id of the message, if any. - expected: a shortcut for the expected value(s), depending on the check: - - equals check: expected value - - oneof check: expected values as [a, b, c] - - threshold check: expected range as minimum..maximum + - inactivity check: expected duration - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)] + - equals/minimum/maximum check: expected value + - oneof check (allowed/blocked): expected values as [a, b, c] + - threshold/delta check: expected range as minimum..maximum, extended with duration for delta check - actual: the invalid actual value(s) for this check. The checks below define other available parameters. @@ -1009,10 +1018,10 @@ Numeric values can be formatted with an extra postfix on the parameters | description | [ string](#string) | Longer description for this check (optional). | | health_level | [ string](#string) | The health level that this check would cause for a modem, when it fails. If not set, the alarm default is used. | | error_message_template | [ string](#string) | The error message template for this check, with parameters that will be filled in based on the check. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.location | [ hiber.modem.alarm.ModemAlarm.Check.LocationCheck](#hibermodemalarmmodemalarmchecklocationcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.field | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck](#hibermodemalarmmodemalarmcheckfieldcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.inactivity | [ hiber.modem.alarm.ModemAlarm.Check.InactivityCheck](#hibermodemalarmmodemalarmcheckinactivitycheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delay | [ hiber.modem.alarm.ModemAlarm.Check.DelayCheck](#hibermodemalarmmodemalarmcheckdelaycheck) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.location | [ hiber.modem.alarm.ModemAlarm.Check.LocationCheck](#hibermodemalarmmodemalarmchecklocationcheck) | Check whether the device is in a given location. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.field | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck](#hibermodemalarmmodemalarmcheckfieldcheck) | Check that a message body field has a specified value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.inactivity | [ hiber.modem.alarm.ModemAlarm.Check.InactivityCheck](#hibermodemalarmmodemalarmcheckinactivitycheck) | Check whether the device exceeds inactivity limits. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delay | [ hiber.modem.alarm.ModemAlarm.Check.DelayCheck](#hibermodemalarmmodemalarmcheckdelaycheck) | Check whether a message delay exceeds delay limits. | ### hiber.modem.alarm.ModemAlarm.Check.DelayCheck @@ -1047,7 +1056,7 @@ to require that an array has a certain length. - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected -Note that this for the examples above, if they return an array, the entire array is used as the value +Note that for the examples above, if they return an array, the entire array is used as the value in the comparison for equals and oneof. A check of this type has the following parameters (matches the fields): @@ -1057,8 +1066,11 @@ A check of this type has the following parameters (matches the fields): For the equals check: - field.equals.expected: iff this is an equals check, replace the expected value -For the oneof check: -- field.oneof.expected: iff this is a oneof check, replace the expected values +For the allowed check: +- field.allowed.allowed: iff this is an allowed check, replace the expected values + +For the blocked check: +- field.blocked.blocked: iff this is a blocked check, replace the expected values For the threshold check: - field.threshold.expected: iff this is a threshold check, replace the expected range @@ -1066,7 +1078,7 @@ For the threshold check: - field.threshold.maximum: iff this is a threshold check, replace the expected maximum For the delta check: -- field.delta.period: +- field.delta.period: iff this is a delta check, replace the expected duration - field.delta.threshold.expected: iff this is a delta check, replace the expected range - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum @@ -1083,13 +1095,13 @@ The delta check also adds a few additional error message variables: | path | [ string](#string) | Select the field(s) that this check is applied to, using a json path. | | ignore_field_not_found | [ bool](#bool) | Whether to ignore this check if the field is not found. This can be useful if your path selects multiple values in an array, like my_array[*].value, and not all entries have the field, or when fields are omitted if they have a default value. | | unit | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | The unit that this alarm check is using. The field's values will automatically be converted into this unit before the check is applied. Note: unit is not currently available in the alarm_parameters. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.equals | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.EqualsCheck](#hibermodemalarmmodemalarmcheckfieldcheckequalscheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.allowed | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.AllowedCheck](#hibermodemalarmmodemalarmcheckfieldcheckallowedcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.blocked | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.BlockedCheck](#hibermodemalarmmodemalarmcheckfieldcheckblockedcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.minimum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MinimumCheck](#hibermodemalarmmodemalarmcheckfieldcheckminimumcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.maximum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MaximumCheck](#hibermodemalarmmodemalarmcheckfieldcheckmaximumcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.threshold | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.ThresholdCheck](#hibermodemalarmmodemalarmcheckfieldcheckthresholdcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delta | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.DeltaCheck](#hibermodemalarmmodemalarmcheckfieldcheckdeltacheck) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.equals | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.EqualsCheck](#hibermodemalarmmodemalarmcheckfieldcheckequalscheck) | Check that a field equals a value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.allowed | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.AllowedCheck](#hibermodemalarmmodemalarmcheckfieldcheckallowedcheck) | Check that a field equals one of a set of values. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.blocked | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.BlockedCheck](#hibermodemalarmmodemalarmcheckfieldcheckblockedcheck) | Check that a field does not equal one of a set of values. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.minimum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MinimumCheck](#hibermodemalarmmodemalarmcheckfieldcheckminimumcheck) | Chech that a field is higher than the given value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.maximum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MaximumCheck](#hibermodemalarmmodemalarmcheckfieldcheckmaximumcheck) | Check that a field is lower than the given value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.threshold | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.ThresholdCheck](#hibermodemalarmmodemalarmcheckfieldcheckthresholdcheck) | Check that a field is within a given numeric range. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delta | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.DeltaCheck](#hibermodemalarmmodemalarmcheckfieldcheckdeltacheck) | Check that a field's difference in value over a given period is within a specified numeric range. | ### hiber.modem.alarm.ModemAlarm.Check.FieldCheck.AllowedCheck @@ -1105,7 +1117,7 @@ Check that the field is not in a set of blocked values. | Field | Type | Description | | ----- | ---- | ----------- | -| blocked | [repeated google.protobuf.Value](#googleprotobufvalue) | none | +| blocked | [repeated google.protobuf.Value](#googleprotobufvalue) | The list of blocked values; the field should not match any of them. | ### hiber.modem.alarm.ModemAlarm.Check.FieldCheck.DeltaCheck @@ -1124,7 +1136,7 @@ Check that the field is equal to the given value. | Field | Type | Description | | ----- | ---- | ----------- | -| expected | [ google.protobuf.Value](#googleprotobufvalue) | none | +| expected | [ google.protobuf.Value](#googleprotobufvalue) | The expected value a field should have. | ### hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MaximumCheck @@ -1183,7 +1195,7 @@ Allow the alarm to cause a health level for the modem even after a new message h Typically, an alarm event only affects the modem health while it is from the last message from that modem. By configuring this, you can specify the modem health should be affected for a longer period. -For example, when using an inactivity check, this would could be used to configure modem health ERROR while +For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | Field | Type | Description | @@ -1193,18 +1205,21 @@ inactive, lowering to INVESTIGATE for a day after a new message comes in. ### hiber.modem.alarm.ModemAlarmSelection +Selection criteria for listing modem alarms in an organization. If no options are provided, all modem alarms +are valid. +If values are provided both for identifiers and search, then only alarms are selected that match both criteria. | Field | Type | Description | | ----- | ---- | ----------- | -| identifiers | [repeated string](#string) | none | +| identifiers | [repeated string](#string) | Selects alarms by the given list of alarm identifiers. | | search | [ string](#string) | Search for the given string in identifier, description, fields and values. | | owner_organizations | [repeated string](#string) | Only return alarms that were created by the given organizations. | -| only_owned_alarms | [ bool](#bool) | none | +| only_owned_alarms | [ bool](#bool) | Only list owned alarms. Alarms are considered owned if your current organization created them, and thus would be able to delete them. Alarms can also be inherited from parent organizations, in which case they are owned by that parent organization. | ### hiber.modem.alarm.TestModemAlarmTestParameters - +Test a set of parameters on a modem alarm, to see the result when they are applied during assignment. ### hiber.modem.alarm.TestModemAlarmTestParameters.Request @@ -1214,8 +1229,8 @@ inactive, lowering to INVESTIGATE for a day after a new message comes in. | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| parameters | [ google.protobuf.Struct](#googleprotobufstruct) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm on which to test parameters. | +| parameters | [ google.protobuf.Struct](#googleprotobufstruct) | The parameters of the alarm that are changed. | ### hiber.modem.alarm.TestModemAlarmTestParameters.Response @@ -1310,8 +1325,8 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The check to add to the Modem Alarm. Identifier must be unique within the alarm. | +| alarm_identifier | [ string](#string) | The identifier of the alarm to which the check is added. | +| check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The check to add to the Modem Alarm. Identifier of the check must be unique within the alarm. | ### hiber.modem.alarm.UpdateModemAlarmAddCheck.Response @@ -1323,7 +1338,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### hiber.modem.alarm.UpdateModemAlarmAvailability - +Update the modem alarm availability, specifying for which (child) organizations an alarm is available. ### hiber.modem.alarm.UpdateModemAlarmAvailability.Request @@ -1333,7 +1348,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm for which to update the modem availability. | | replace_apply_to_child_organizations | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | The new set of child organizations that this rule applies to. Replaces the original value! | ### hiber.modem.alarm.UpdateModemAlarmAvailability.Response @@ -1346,7 +1361,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### hiber.modem.alarm.UpdateModemAlarmRemoveCheck - +Remove a check from an alarm. ### hiber.modem.alarm.UpdateModemAlarmRemoveCheck.Request @@ -1356,8 +1371,8 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check_identifier | [ string](#string) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm from which to remove the check. | +| check_identifier | [ string](#string) | The identifier of the check to remove. | ### hiber.modem.alarm.UpdateModemAlarmRemoveCheck.Response @@ -1369,7 +1384,10 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### hiber.modem.alarm.UpdateModemAlarmUpdateCheck +Update a check of an alarm. +Only the values of a check can be updated, e.g., it is not possible to change an inactivity check to a location +check. ### hiber.modem.alarm.UpdateModemAlarmUpdateCheck.Request @@ -1379,9 +1397,9 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check_identifier | [ string](#string) | none | -| update_check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm of which to update the check. | +| check_identifier | [ string](#string) | The identifier of the check to update. | +| update_check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The new values for the check of this alarm. | | update_using_parameters | [map hiber.modem.alarm.UpdateModemAlarmUpdateCheck.Request.UpdateUsingParametersEntry](#hibermodemalarmupdatemodemalarmupdatecheckrequestupdateusingparametersentry) | Use parameters to update the check, as it would be when they were added when the alarm was assigned. | | test_parameters_only | [ bool](#bool) | If set, the update is not actually saved, but only applied and returned. This is a convenience to easily test parameters for a check similar to TestModemAlarmTestParameters. | @@ -2045,6 +2063,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -2082,6 +2118,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -2171,6 +2216,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/certificate.md b/docs/md/certificate.md index 7a8acac..d87a39a 100644 --- a/docs/md/certificate.md +++ b/docs/md/certificate.md @@ -38,10 +38,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -51,6 +54,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -375,6 +382,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -412,6 +437,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -501,6 +535,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/currentuser.md b/docs/md/currentuser.md index de174d2..75250fd 100644 --- a/docs/md/currentuser.md +++ b/docs/md/currentuser.md @@ -75,10 +75,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -88,6 +91,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -773,6 +780,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -810,6 +835,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -899,6 +933,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/device.md b/docs/md/device.md new file mode 100644 index 0000000..6f1310e --- /dev/null +++ b/docs/md/device.md @@ -0,0 +1,1154 @@ +# device.proto + + + +#### This file was generated from [device.proto](https://github.com/HiberGlobal/api/blob/master/device.proto). + +## Table of Contents + + + +- Messages + - [Device](#device) + - [Device.Links](#devicelinks) + - [Device.PeripheralsEntry](#deviceperipheralsentry) + - [DeviceSelection](#deviceselection) + - [ModemFilter](#modemfilter) + - [ModemFilter.Lifecycles](#modemfilterlifecycles) + +- Enums + - [Sort](#sort) + +- Referenced messages from [health.proto](#referenced-messages-from-healthproto) + - [hiber.health.HealthLevel](#hiberhealthhealthlevel) + - [hiber.health.HealthLevelSelection](#hiberhealthhealthlevelselection) + + +- 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.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 [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.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) + - [hiber.Filter.Modems](#hiberfiltermodems) + - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) + - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) + - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) + - [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.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) + - [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) + +- [Scalar Value Types](#scalar-value-types) + +## Messages + +### Device + +Information about a device. +A device is anything in the Hiber network that can send data to our systems. +They have a unique device number in our system, used to identify them. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| number | [ string](#string) | An 8-character hexadecimal string, formatted for human readability. System ignores spaces. | +| organization | [ string](#string) | The organization that owns this device | +| name | [ string](#string) | A descriptor given to the device, defaults to it's number. | +| location | [ hiber.Location](#hiberlocation) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_inactivity**.inactivity | [optional hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | +| health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | The current lifecycle the modem is in. | +| peripherals | [map Device.PeripheralsEntry](#deviceperipheralsentry) | additional information | +| notes | [ string](#string) | Notes field that can be used to add additional information to a modem. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_secure_notes**.secure_notes | [optional 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 | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_link**.link | [optional Device.Links](#devicelinks) | Optional information about what other devices this devices is linked to. | +| metadata | [ google.protobuf.Struct](#googleprotobufstruct) | Modem metadata, typically extracted from messages. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_time_zone**.time_zone | [optional string](#string) | The timezone configured for the modem. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_transmission_interval**.transmission_interval | [optional hiber.Duration](#hiberduration) | The transmission interval for this modem, if configured. | + +### Device.Links + +Collection of data about the devices it is connected to. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| identifiers | [repeated string](#string) | Other identifiers for this devices. Could include data like its MAC-address or otherwise unique identifier. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_parent**.parent | [optional string](#string) | The device directly downstream from this device. Usually a gateway of some sorts. This device sends its data directly to its parent. The parent will relay the data to our systems. | + +### Device.PeripheralsEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ string](#string) | none | + +### DeviceSelection + +Selection object for devices. +Filter devices by device number, tags, etc. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| free_text_search | [ string](#string) | none | +| modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | +| identifiers | [ hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) | none | +| health_level | [ hiber.Filter.HealthLevels](#hiberfilterhealthlevels) | none | +| lifecycles | [ ModemFilter.Lifecycles](#modemfilterlifecycles) | none | +| with_parents | [ hiber.Filter.Modems](#hiberfiltermodems) | none | +| peripherals | [ hiber.Filter.Properties](#hiberfilterproperties) | none | +| filter_by_tags | [ hiber.tag.TagSelection](#hibertagtagselection) | none | +| with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | + +### ModemFilter + + + + +### ModemFilter.Lifecycles + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | +| exclude | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | + + +## Enums +### Sort +Sorting options for the results. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEVICE_NAME_ASC | Sort alphabetically on the name of the device. De default name of the device is its HEX number, in ascending order. | 0 | +| DEVICE_NAME_DESC | Sort alphabetically on the name of the device. De default name of the device is its HEX number, in descending order. | 1 | +| DEVICE_NUMBER_ASC | Sort numerically on the number of the device, in ascending order. | 2 | +| DEVICE_NUMBER_DESC | Sort numerically on the number of the device, in descending order. | 3 | +| ACTIVITY | Sort devices on most recent activity first (e.g. newest message received). | 4 | +| INACTIVITY | Sort devices on least recent activity first (e.g. longest no message received). | 5 | +| LIFECYCLE_ASC | Sort device on its lifecycle state. | 6 | +| LIFECYCLE_DESC | Sort device on its lifecycle state in reverse order. | 7 | +| LIFECYCLE_ALPHABETICAL_ASC | Sort device on lifecycle name, alphabetically. | 8 | +| LIFECYCLE_ALPHABETICAL_DESC | Sort device on lifecycle name, alphabetically in reverse order. | 9 | +| ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the device, in ascending order. | 10 | +| ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the device, in descending order. | 11 | +| HEALTH_ASC | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 12 | +| HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 13 | +| HEALTH_ALPHABETICAL_ASC | Health sorted alphabetically by health level name. | 14 | +| HEALTH_ALPHABETICAL_DESC | Health sorted alphabetically by health level name, descending order. | 15 | + + + +## Referenced messages from health.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 [health.proto](https://github.com/HiberGlobal/api/blob/master/health.proto). + + +### hiber.health.HealthLevel + +A health level in an organization. +Health can be customized depending on your need. + +The default health levels are: +- OK (green): no problems detected +- WARNING (orange): unresolvable problems detected, for example delayed or skipped messages +- ERROR (red): significant problems detected (that typically can be resolved), + for example inactivity or invalid messages (resolved on a successful message) + +Health levels can be customized to as many as you need for your operations, for example: +- INTERVENTION +- DEFECT +- BATTERY +- HIGH +- LOW + +Health levels are ordered by severity (low to high), +and of all things affecting a modem's health, +only the most severe level will be returned when retrieving a modem. + +Health can be assigned using modems alarms, which specify the health level they will cause on a modem (and for how +long, if it does not resolve automatically). + +Precisely one health level can be assigned as a catch-all for any unknown health levels from alarms (or Hiber systems), +which can happen when a device manufacturer has provided alarms to your device (e.g. a low battery alarm). +By default, any unknown health levels map to the level that is marked catch-all. + +Health level have a set of named colors, represented by a map where the key is the name of the color +and the value is a string that represents a valid CSS3 color. +Simple examples are: green, red, orange, grey, #FF00FF for fuchsia, etc (Keep in mind that CSS3 allows for many +ways to define colors, see https://www.w3.org/TR/2003/WD-css3-color-20030214/). + +All the following definitions also mean "red": + - rgb(255, 0, 0) + - rgb(100%, 0, 0) + - rgba(100%, 0%, 0%, 100%) + - hsl(0, 100%, 50%) + - hsla(0, 100%, 50%, 1) + +The client is responsible for rendering the correct color from the CSS3 color-space and for setting the colors and +their names. There is no verification on missing named colors, so the client must set sensible defaults when colors +are missing. + +To assist with sorting, health levels have a numeric severity equal to their index in the sorted list of health +levels (starting at 1). This means higher numbers denote a more severe health. +Since these values are noting more than a list index, they should not be cached, compared to another organization or +compared to values retrieved from the API at another time. + +For example, an organization using the default health would have: +- Ok: severity 1 +- Warning: severity 2 +- Error: severity 3 + +That organization could then add a new health level in between Ok and Warning, meaning the severity of Warning and +Error will change: +- Ok, severity 1 +- ItsComplicated, severity 2 +- Warning, severity 3 +- Error, severity 4 + +| Field | Type | Description | +| ----- | ---- | ----------- | +| level | [ string](#string) | The name of this health level. Levels are identified by their name. The API does support renaming, where the rename is propagated to all the relevant parts of the system. | +| color | [ string](#string) | Default color for the health level, as a string that represents a valid CSS3 color. DEPRECATED: Maps to the color named "text" in color_data. | +| color_data | [map hiber.health.HealthLevel.ColorDataEntry](#hiberhealthhealthlevelcolordataentry) | Map of named colors, where key is the name and the value is a valid CSS3 color definition. | +| severity | [ int64](#int64) | A unique numeric value equal to the index of this health level in the list of health levels sorted by ascending severity (starting at 1). This means higher numbers denote a more severe health. This value cannot be used when creating or updating. To change the severity for a health level, reorder all health levels. | +| catch_all | [ bool](#bool) | Precisely one health level can be assigned as a catch-all for any unknown health levels from alarms (or Hiber systems), which can happen when a device manufacturer has provided alarms for your device (e.g. a low battery alarm). By default, unknown health levels map to the level of the highest severity, unless another level is marked as catch-all. | + +### hiber.health.HealthLevelSelection + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| search | [ string](#string) | Search for the given string in the levels and colors. | +| levels | [repeated string](#string) | Filter by exact levels. | + + +### Enums + + +## 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). + + +### 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 | +| ----- | ---- | ----------- | +| 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 | +| ----- | ---- | ----------- | +| 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. | + + +### 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 | + +#### 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. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| HIBER_PANDA | none | 1 | +| HIBER_GRIZZLY | none | 2 | +| HIBER_BLACK | none | 3 | +| CUSTOM | none | 4 | + +#### hiber.modem.Modem.Transfer.Status + + +| 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.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 + + +| 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 | + + + +## 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.) + +#### This section was generated from [tag.proto](https://github.com/HiberGlobal/api/blob/master/tag.proto). + + +### hiber.tag.Tag + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| id | [ int64](#int64) | none | +| label | [ hiber.tag.Tag.Label](#hibertagtaglabel) | none | + +### hiber.tag.Tag.Label + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| name | [ string](#string) | none | +| type | [ string](#string) | none | + +### hiber.tag.TagSelection + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| search | [repeated string](#string) | none | +| names | [repeated string](#string) | none | +| filter | [ hiber.Filter.Tags](#hiberfiltertags) | none | +| types | [repeated string](#string) | none | + + +### Enums + + +## 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 [base.proto](https://github.com/HiberGlobal/api/blob/master/base.proto). + + +### 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 | +| ----- | ---- | ----------- | +| 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.Avatar + +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 | +| ----- | ---- | ----------- | +| [**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.BytesOrHex + +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 | +| ----- | ---- | ----------- | +| bytes | [ bytes](#bytes) | none | +| hex | [ string](#string) | none | + +### hiber.BytesOrHex.Update + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.BytesOrHex](#hiberbytesorhex) | none | + +### 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 | +| ----- | ---- | ----------- | +| 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) + +"Exclude" fields filter out anything in the exclude set. +When combined with include, exclude takes precedence when determining whether an item is filtered + + +### 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 | +| ----- | ---- | ----------- | +| include_all | [ bool](#bool) | none | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ChildOrganizations.Update + +Update object to update a Filter.ChildOrganizations field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | none | + +### hiber.Filter.Events + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.EventType](#hibereventtype) | none | +| exclude | [repeated hiber.EventType](#hibereventtype) | none | + +### hiber.Filter.Events.Update + +Update object to update a Filter.Events field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.Events](#hiberfilterevents) | none | + +### hiber.Filter.FieldEnumValues + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| field | [ string](#string) | none | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Modems + + + +| 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. | + +### hiber.Filter.Modems.Update + +Update object to update a Filter.Modems field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.Modems](#hiberfiltermodems) | none | + +### hiber.Filter.OrganizationPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_all | [ bool](#bool) | none | +| include | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | +| exclude | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | + +### hiber.Filter.Organizations + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + +### hiber.Filter.Publishers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated int64](#int64) | none | +| 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 + + + +| 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 + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_all | [ bool](#bool) | none | +| include | [repeated hiber.UserPermission](#hiberuserpermission) | none | +| exclude | [repeated hiber.UserPermission](#hiberuserpermission) | none | + +### hiber.Filter.Users + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Webhooks + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated int64](#int64) | none | +| exclude | [repeated int64](#int64) | none | +| only_active | [ bool](#bool) | none | + +### hiber.Location + +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. | + +### hiber.LocationSelection + +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 | +| ----- | ---- | ----------- | +| 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + +### hiber.NamedFile + +A NamedFile contains bytes with its mime-type and name. +It can represent any file of any type. + +Note that depending on where in the API this is used, +the server might put restrictions on file size, media-type or name length. + +The file name should be interpreted as-is. +No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type. +It might not even have a file extension. +The file name may contain characters that cannot be a valid file name on certain systems. + +Specific API calls may pur restrictions on the name or size of the file. + +When showing this as an image in a browser, one can make use of a `data` URI. +The client must convert the bytes to base64 and can then construct a data URI like this + + data:;base64, + +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. | + +### hiber.Pagination + +Pagination is normalized across the api. Provide a pagination object to get a specific page or offset, +or limit your data. + +Calls that have a pagination option automatically return a Pagination.Result, which contains +either the specified pagination options or the defaults, as well as total counts. It also contains Pagination +objects that can be used for the previous and next page. + +This effectively means that an api user would never need to create their own pagination object; as long as they +start at the first page and continue to the next, they can use the provided Pagination object. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| size | [ int32](#int32) | none | +| page | [ int32](#int32) | none | + +### hiber.Pagination.Result + + + +| 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 + +Polygon shape defined by a list of locations, which draw a shape on the map. +The last point is connected to the first to close the shape. + +For example, the outline of a city would be defined using a Shape, +while a rectangular region is easier to define using Area. + +| Field | Type | 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. | + +### hiber.TimeRange + +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 | + +### hiber.Timestamp + +Timestamp type for convenience. + +Some clients are better at parsing Google's seconds/nanos based timestamp, while others prefer a text-based format. +To accommodate this, this Timestamp type supports both. + +When used as API output, both the timestamp and textual fields will be set. The textual field has the commonly +used ISO 8601 format (i.e. "2018-01-01T13:00:00Z"). +When used an API input, only one of the fields is needed, there is no need to set both. When both are set, the +timestamp field will be used, the textual field will be discarded. + +In addition, the textual field, when used as input, allows for a number of shortcuts that get converted into +timestamps: +- "now": converted to the current timestamp at the time of the request + +| Field | Type | Description | +| ----- | ---- | ----------- | +| timestamp | [ google.protobuf.Timestamp](#googleprotobuftimestamp) | none | +| time_zone | [ string](#string) | none | +| textual | [ string](#string) | none | + +### 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. + +To use this to update, set a value and set updated to true + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ bool](#bool) | none | + +### hiber.UpdateClearableString + +Update object for a string that can be empty. + +Since an empty string is also the default value, we need to distinguish between an omitted value and +setting the value to an empty string, in an update object. + +To use this to update, set a value and set updated to true + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ string](#string) | none | + +### hiber.UpdateOptionalDuration + +Update object for an optional Duration. + +To use this to update, set a value and set updated to true. +To clear the duration, set updated to true, but set no value. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Duration](#hiberduration) | none | + +### hiber.UpdateOptionalId + +Update object for an optional id. + +To use this to update, set a value and set updated to true. To clear the id, set updated to true, but set no value. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ int64](#int64) | none | + +### 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 | [ uint32](#uint32) | none | + + +### Enums +#### hiber.EventType +Enum of api-accessible events. + +The event types in this enum have a protobuf implementation, and can be used, for example, in the +api event stream and publishers. + +| Name | 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 | + +#### 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.UnitOfMeasurement +Unit of measurement for a numeric value. + +| 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 | + +## Scalar Value Types + +| .proto Type | Notes | C++ Type | Java Type | Python Type | +| ----------- | ----- | -------- | --------- | ----------- | +|

    double | | double | double | float | +|

    float | | float | float | float | +|

    int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | +|

    int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | +|

    uint32 | Uses variable-length encoding. | uint32 | int | int/long | +|

    uint64 | Uses variable-length encoding. | uint64 | long | int/long | +|

    sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | +|

    sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | +|

    fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | +|

    fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | +|

    sfixed32 | Always four bytes. | int32 | int | int | +|

    sfixed64 | Always eight bytes. | int64 | long | int/long | +|

    bool | | bool | boolean | boolean | +|

    string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | +|

    bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | + diff --git a/docs/md/device_service.md b/docs/md/device_service.md new file mode 100644 index 0000000..09c5c92 --- /dev/null +++ b/docs/md/device_service.md @@ -0,0 +1,1171 @@ +# device_service.proto + +Device management. + +Devices are anything capable of sending messages to the system. +They have a unique device (previously modem) number, used to identify them. + +#### This file was generated from [device_service.proto](https://github.com/HiberGlobal/api/blob/master/device_service.proto). + +## Table of Contents + +- Services + - [DeviceService](#deviceservice) + +- Messages + - [ListDevice](#listdevice) + - [ListDevice.Request](#listdevicerequest) + - [ListDevice.Response](#listdeviceresponse) + - [UpdateDevice](#updatedevice) + - [UpdateDevice.Request](#updatedevicerequest) + - [UpdateDevice.Response](#updatedeviceresponse) + - [UpdateDevice.UpdatePeripherals](#updatedeviceupdateperipherals) + - [UpdateDevice.UpdatePeripherals.Partial](#updatedeviceupdateperipheralspartial) + - [UpdateDevice.UpdatePeripherals.Partial.AddPeripheralsEntry](#updatedeviceupdateperipheralspartialaddperipheralsentry) + - [UpdateDevice.UpdatePeripherals.Replace](#updatedeviceupdateperipheralsreplace) + - [UpdateDevice.UpdatePeripherals.Replace.ReplacePeripheralsEntry](#updatedeviceupdateperipheralsreplacereplaceperipheralsentry) + +- Enums + +- Referenced messages from [device.proto](#referenced-messages-from-deviceproto) + - [hiber.device.Device](#hiberdevicedevice) + - [hiber.device.Device.Links](#hiberdevicedevicelinks) + - [hiber.device.Device.PeripheralsEntry](#hiberdevicedeviceperipheralsentry) + - [hiber.device.DeviceSelection](#hiberdevicedeviceselection) + - [hiber.device.ModemFilter](#hiberdevicemodemfilter) + - [hiber.device.ModemFilter.Lifecycles](#hiberdevicemodemfilterlifecycles) + - Enums + - [hiber.device.Sort](#hiberdevicesort) + +- 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.Transfer.Status](#hibermodemmodemtransferstatus) + - [hiber.modem.Modem.Type](#hibermodemmodemtype) + - [hiber.modem.ModemMessage.Source](#hibermodemmodemmessagesource) + +- 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.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) + - [hiber.Filter.Modems](#hiberfiltermodems) + - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) + - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) + - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) + - [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.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) + - [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) + +- [Scalar Value Types](#scalar-value-types) + + +## DeviceService +At the core of the Hiber system, devices are the network nodes that send information and user data. +This service contains calls to list and manage devices. + +### List +> **rpc** List([ListDevice.Request](#listdevicerequest)) + [ListDevice.Response](#listdeviceresponse) + +List the devices in your organization, and, optionally, its child organizations. + +### Update +> **rpc** Update([UpdateDevice.Request](#updatedevicerequest)) + [UpdateDevice.Response](#updatedeviceresponse) + +Update a device. + + +## Messages + +### ListDevice + + + + +### ListDevice.Request + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | +| selection | [ DeviceSelection](#deviceselection) | Select which devices to return. Uses ModemSelection, which is the historical name for device. | +| pagination | [ hiber.Pagination](#hiberpagination) | Paginate through results. | +| sort_by | [repeated Sort](#sort) | Sort the devices with the given sort options. | +| location_selection | [ hiber.LocationSelection](#hiberlocationselection) | Filter devices by location. | +| include_missing_parents | [ bool](#bool) | Set this to true to populate the parents field in the response. This will be populated with missing parents (e.g. gateways) for the the devices on this page. Any parent that is on the current page is not included in this list to avoid duplicate data. | + +### ListDevice.Response + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| devices | [repeated Device](#device) | none | +| request | [ ListDevice.Request](#listdevicerequest) | none | +| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | none | +| sorted_by | [repeated Sort](#sort) | none | +| parents | [repeated Device](#device) | This will be populated with missing parents (e.g. gateways) for the the devices on this page. Any parent that is on the current page is not included in this list to avoid duplicate data. Only set when include_missing_parents is true in the request. | + +### UpdateDevice + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| selection | [ DeviceSelection](#deviceselection) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_name**.name | [optional string](#string) | Change the name for the selected devices. To prevent confusion, the selection can only effectively target 1 device when changing the name. Unless you specifically set `allow_bulk_rename`. You'd be left with multiple devices with the same name (technically allowed), but probably something you don't want. | +| allow_bulk_rename | [ bool](#bool) | Allow a rename that results in multiple devices with the same name. Could be useful if you have different sites with devices that fulfill a similar job but are located at different sites. It is advised to make sure those devices have different tags/groups. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_notes**.notes | [optional string](#string) | Change the notes for the selected devices. | +| allow_bulk_notes | [ bool](#bool) | Allow changing notes in bulk if the notes are different. Must set this explicitly to prevent accidental loss of notes. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_secure_notes**.secure_notes | [optional string](#string) | Change the notes for the selected devices. | +| allow_bulk_secure_notes | [ bool](#bool) | Allow changing notes in bulk if the notes are different. Must set this explicitly to prevent accidental loss of notes. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_peripherals**.peripherals | [optional UpdateDevice.UpdatePeripherals](#updatedeviceupdateperipherals) | Updates the devices peripherals, by adding, removing or replacing. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_time_zone**.time_zone | [optional string](#string) | Set the timezone the device is located in. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_lifecycle**.lifecycle | [optional hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | Update the lifecycle for this device. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_transmission_interval**.transmission_interval | [optional hiber.Duration](#hiberduration) | Sets the interval this devices is transmitting on. Mainly useful for devices that have a regular interval for transmissions. | + +### UpdateDevice.Request + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | +| devices | [repeated UpdateDevice](#updatedevice) | Multiple different updates can be made. Every update contains a device selection (historically modem selection) which targets the devices that should be updated. | + +### UpdateDevice.Response + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| devices | [repeated Device](#device) | none | +| request | [ UpdateDevice.Request](#updatedevicerequest) | none | + +### UpdateDevice.UpdatePeripherals + +When updating peripherals, you can choose to add and delete peripherals, +or to do a wholesome replace of all peripherals. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **replace**.partial_update | [ UpdateDevice.UpdatePeripherals.Partial](#updatedeviceupdateperipheralspartial) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **replace**.full_replace | [ UpdateDevice.UpdatePeripherals.Replace](#updatedeviceupdateperipheralsreplace) | none | + +### UpdateDevice.UpdatePeripherals.Partial + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| remove_peripherals | [repeated string](#string) | Removes peripherals by name in this list. Leaves other peripherals untouched. | +| add_peripherals | [map UpdateDevice.UpdatePeripherals.Partial.AddPeripheralsEntry](#updatedeviceupdateperipheralspartialaddperipheralsentry) | Adds peripherals by name-value from this mapping. Leaves other peripherals untouched. | + +### UpdateDevice.UpdatePeripherals.Partial.AddPeripheralsEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ string](#string) | none | + +### UpdateDevice.UpdatePeripherals.Replace + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| replace_peripherals | [map UpdateDevice.UpdatePeripherals.Replace.ReplacePeripheralsEntry](#updatedeviceupdateperipheralsreplacereplaceperipheralsentry) | Replaces the entire set of peripherals. All peripherals not named in this map will be removed. | + +### UpdateDevice.UpdatePeripherals.Replace.ReplacePeripheralsEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ string](#string) | none | + + +## Enums + + +## Referenced messages from device.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 [device.proto](https://github.com/HiberGlobal/api/blob/master/device.proto). + + +### hiber.device.Device + +Information about a device. +A device is anything in the Hiber network that can send data to our systems. +They have a unique device number in our system, used to identify them. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| number | [ string](#string) | An 8-character hexadecimal string, formatted for human readability. System ignores spaces. | +| organization | [ string](#string) | The organization that owns this device | +| name | [ string](#string) | A descriptor given to the device, defaults to it's number. | +| location | [ hiber.Location](#hiberlocation) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_inactivity**.inactivity | [optional hiber.Duration](#hiberduration) | The amount of time since the last message from this modem was received on the server. | +| health_level | [ hiber.health.HealthLevel](#hiberhealthhealthlevel) | Health level based on the modem alarm and some always-present alarms. | +| lifecycle | [ hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | The current lifecycle the modem is in. | +| peripherals | [map hiber.device.Device.PeripheralsEntry](#hiberdevicedeviceperipheralsentry) | additional information | +| notes | [ string](#string) | Notes field that can be used to add additional information to a modem. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_secure_notes**.secure_notes | [optional 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 | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_link**.link | [optional hiber.device.Device.Links](#hiberdevicedevicelinks) | Optional information about what other devices this devices is linked to. | +| metadata | [ google.protobuf.Struct](#googleprotobufstruct) | Modem metadata, typically extracted from messages. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_time_zone**.time_zone | [optional string](#string) | The timezone configured for the modem. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_transmission_interval**.transmission_interval | [optional hiber.Duration](#hiberduration) | The transmission interval for this modem, if configured. | + +### hiber.device.Device.Links + +Collection of data about the devices it is connected to. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| identifiers | [repeated string](#string) | Other identifiers for this devices. Could include data like its MAC-address or otherwise unique identifier. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **_parent**.parent | [optional string](#string) | The device directly downstream from this device. Usually a gateway of some sorts. This device sends its data directly to its parent. The parent will relay the data to our systems. | + +### hiber.device.Device.PeripheralsEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ string](#string) | none | + +### hiber.device.DeviceSelection + +Selection object for devices. +Filter devices by device number, tags, etc. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| free_text_search | [ string](#string) | none | +| modems | [ hiber.Filter.Modems](#hiberfiltermodems) | none | +| identifiers | [ hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) | none | +| health_level | [ hiber.Filter.HealthLevels](#hiberfilterhealthlevels) | none | +| lifecycles | [ hiber.device.ModemFilter.Lifecycles](#hiberdevicemodemfilterlifecycles) | none | +| with_parents | [ hiber.Filter.Modems](#hiberfiltermodems) | none | +| peripherals | [ hiber.Filter.Properties](#hiberfilterproperties) | none | +| filter_by_tags | [ hiber.tag.TagSelection](#hibertagtagselection) | none | +| with_last_message_in | [ hiber.TimeRange](#hibertimerange) | none | + +### hiber.device.ModemFilter + + + + +### hiber.device.ModemFilter.Lifecycles + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | +| exclude | [repeated hiber.modem.Modem.Lifecycle](#hibermodemmodemlifecycle) | none | + + +### Enums +#### hiber.device.Sort +Sorting options for the results. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEVICE_NAME_ASC | Sort alphabetically on the name of the device. De default name of the device is its HEX number, in ascending order. | 0 | +| DEVICE_NAME_DESC | Sort alphabetically on the name of the device. De default name of the device is its HEX number, in descending order. | 1 | +| DEVICE_NUMBER_ASC | Sort numerically on the number of the device, in ascending order. | 2 | +| DEVICE_NUMBER_DESC | Sort numerically on the number of the device, in descending order. | 3 | +| ACTIVITY | Sort devices on most recent activity first (e.g. newest message received). | 4 | +| INACTIVITY | Sort devices on least recent activity first (e.g. longest no message received). | 5 | +| LIFECYCLE_ASC | Sort device on its lifecycle state. | 6 | +| LIFECYCLE_DESC | Sort device on its lifecycle state in reverse order. | 7 | +| LIFECYCLE_ALPHABETICAL_ASC | Sort device on lifecycle name, alphabetically. | 8 | +| LIFECYCLE_ALPHABETICAL_DESC | Sort device on lifecycle name, alphabetically in reverse order. | 9 | +| ORGANIZATION_ASC | Sort alphabetically on the name of the organization that owns the device, in ascending order. | 10 | +| ORGANIZATION_DESC | Sort alphabetically on the name of the organization that owns the device, in descending order. | 11 | +| HEALTH_ASC | Health sorted from least to most severe (i.e. OK, WARNING, ERROR). | 12 | +| HEALTH_DESC | Health sorted from most to least severe (i.e. ERROR, WARNING, OK). | 13 | +| HEALTH_ALPHABETICAL_ASC | Health sorted alphabetically by health level name. | 14 | +| HEALTH_ALPHABETICAL_DESC | Health sorted alphabetically by health level name, descending order. | 15 | + + + +## 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). + + +### 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 | +| ----- | ---- | ----------- | +| 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 | +| ----- | ---- | ----------- | +| 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. | + + +### 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 | + +#### 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. + +| Name | Description | Number | +| ---- | ----------- | ------ | +| DEFAULT | none | 0 | +| HIBER_PANDA | none | 1 | +| HIBER_GRIZZLY | none | 2 | +| HIBER_BLACK | none | 3 | +| CUSTOM | none | 4 | + +#### hiber.modem.Modem.Transfer.Status + + +| 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.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 + + +| 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 | + + + +## 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 [base.proto](https://github.com/HiberGlobal/api/blob/master/base.proto). + + +### 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 | +| ----- | ---- | ----------- | +| 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.Avatar + +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 | +| ----- | ---- | ----------- | +| [**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.BytesOrHex + +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 | +| ----- | ---- | ----------- | +| bytes | [ bytes](#bytes) | none | +| hex | [ string](#string) | none | + +### hiber.BytesOrHex.Update + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.BytesOrHex](#hiberbytesorhex) | none | + +### 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 | +| ----- | ---- | ----------- | +| 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) + +"Exclude" fields filter out anything in the exclude set. +When combined with include, exclude takes precedence when determining whether an item is filtered + + +### 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 | +| ----- | ---- | ----------- | +| include_all | [ bool](#bool) | none | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ChildOrganizations.Update + +Update object to update a Filter.ChildOrganizations field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | none | + +### hiber.Filter.Events + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated hiber.EventType](#hibereventtype) | none | +| exclude | [repeated hiber.EventType](#hibereventtype) | none | + +### hiber.Filter.Events.Update + +Update object to update a Filter.Events field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.Events](#hiberfilterevents) | none | + +### hiber.Filter.FieldEnumValues + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| field | [ string](#string) | none | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Modems + + + +| 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. | + +### hiber.Filter.Modems.Update + +Update object to update a Filter.Modems field. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Filter.Modems](#hiberfiltermodems) | none | + +### hiber.Filter.OrganizationPermissions + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_all | [ bool](#bool) | none | +| include | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | +| exclude | [repeated hiber.OrganizationPermission](#hiberorganizationpermission) | none | + +### hiber.Filter.Organizations + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + +### hiber.Filter.Publishers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated int64](#int64) | none | +| 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 + + + +| 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 + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_all | [ bool](#bool) | none | +| include | [repeated hiber.UserPermission](#hiberuserpermission) | none | +| exclude | [repeated hiber.UserPermission](#hiberuserpermission) | none | + +### hiber.Filter.Users + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.Webhooks + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated int64](#int64) | none | +| exclude | [repeated int64](#int64) | none | +| only_active | [ bool](#bool) | none | + +### hiber.Location + +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. | + +### hiber.LocationSelection + +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 | +| ----- | ---- | ----------- | +| 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + +### hiber.NamedFile + +A NamedFile contains bytes with its mime-type and name. +It can represent any file of any type. + +Note that depending on where in the API this is used, +the server might put restrictions on file size, media-type or name length. + +The file name should be interpreted as-is. +No hierarchical information is stored in the name, nor should you look at the "extension" to know its media-type. +It might not even have a file extension. +The file name may contain characters that cannot be a valid file name on certain systems. + +Specific API calls may pur restrictions on the name or size of the file. + +When showing this as an image in a browser, one can make use of a `data` URI. +The client must convert the bytes to base64 and can then construct a data URI like this + + data:;base64, + +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. | + +### hiber.Pagination + +Pagination is normalized across the api. Provide a pagination object to get a specific page or offset, +or limit your data. + +Calls that have a pagination option automatically return a Pagination.Result, which contains +either the specified pagination options or the defaults, as well as total counts. It also contains Pagination +objects that can be used for the previous and next page. + +This effectively means that an api user would never need to create their own pagination object; as long as they +start at the first page and continue to the next, they can use the provided Pagination object. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| size | [ int32](#int32) | none | +| page | [ int32](#int32) | none | + +### hiber.Pagination.Result + + + +| 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 + +Polygon shape defined by a list of locations, which draw a shape on the map. +The last point is connected to the first to close the shape. + +For example, the outline of a city would be defined using a Shape, +while a rectangular region is easier to define using Area. + +| Field | Type | 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. | + +### hiber.TimeRange + +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 | + +### hiber.Timestamp + +Timestamp type for convenience. + +Some clients are better at parsing Google's seconds/nanos based timestamp, while others prefer a text-based format. +To accommodate this, this Timestamp type supports both. + +When used as API output, both the timestamp and textual fields will be set. The textual field has the commonly +used ISO 8601 format (i.e. "2018-01-01T13:00:00Z"). +When used an API input, only one of the fields is needed, there is no need to set both. When both are set, the +timestamp field will be used, the textual field will be discarded. + +In addition, the textual field, when used as input, allows for a number of shortcuts that get converted into +timestamps: +- "now": converted to the current timestamp at the time of the request + +| Field | Type | Description | +| ----- | ---- | ----------- | +| timestamp | [ google.protobuf.Timestamp](#googleprotobuftimestamp) | none | +| time_zone | [ string](#string) | none | +| textual | [ string](#string) | none | + +### 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. + +To use this to update, set a value and set updated to true + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ bool](#bool) | none | + +### hiber.UpdateClearableString + +Update object for a string that can be empty. + +Since an empty string is also the default value, we need to distinguish between an omitted value and +setting the value to an empty string, in an update object. + +To use this to update, set a value and set updated to true + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ string](#string) | none | + +### hiber.UpdateOptionalDuration + +Update object for an optional Duration. + +To use this to update, set a value and set updated to true. +To clear the duration, set updated to true, but set no value. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ hiber.Duration](#hiberduration) | none | + +### hiber.UpdateOptionalId + +Update object for an optional id. + +To use this to update, set a value and set updated to true. To clear the id, set updated to true, but set no value. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| updated | [ bool](#bool) | none | +| value | [ int64](#int64) | none | + +### 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 | [ uint32](#uint32) | none | + + +### Enums +#### hiber.EventType +Enum of api-accessible events. + +The event types in this enum have a protobuf implementation, and can be used, for example, in the +api event stream and publishers. + +| Name | 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 | + +#### 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.UnitOfMeasurement +Unit of measurement for a numeric value. + +| 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 | + +## Scalar Value Types + +| .proto Type | Notes | C++ Type | Java Type | Python Type | +| ----------- | ----- | -------- | --------- | ----------- | +|

    double | | double | double | float | +|

    float | | float | float | float | +|

    int32 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. | int32 | int | int | +|

    int64 | Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. | int64 | long | int/long | +|

    uint32 | Uses variable-length encoding. | uint32 | int | int/long | +|

    uint64 | Uses variable-length encoding. | uint64 | long | int/long | +|

    sint32 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. | int32 | int | int | +|

    sint64 | Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. | int64 | long | int/long | +|

    fixed32 | Always four bytes. More efficient than uint32 if values are often greater than 2^28. | uint32 | int | int | +|

    fixed64 | Always eight bytes. More efficient than uint64 if values are often greater than 2^56. | uint64 | long | int/long | +|

    sfixed32 | Always four bytes. | int32 | int | int | +|

    sfixed64 | Always eight bytes. | int64 | long | int/long | +|

    bool | | bool | boolean | boolean | +|

    string | A string must always contain UTF-8 encoded or 7-bit ASCII text. | string | String | str/unicode | +|

    bytes | May contain any arbitrary sequence of bytes. | string | ByteString | str | + diff --git a/docs/md/easypulse.md b/docs/md/easypulse.md index 74009db..7af7c3b 100644 --- a/docs/md/easypulse.md +++ b/docs/md/easypulse.md @@ -128,10 +128,13 @@ somewhat customized Asset model. - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -141,6 +144,10 @@ somewhat customized Asset model. - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -1473,6 +1480,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1510,6 +1535,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1599,6 +1633,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/email_notifications.md b/docs/md/email_notifications.md index 82a002e..b87da89 100644 --- a/docs/md/email_notifications.md +++ b/docs/md/email_notifications.md @@ -39,10 +39,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -52,6 +55,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -391,6 +398,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -428,6 +453,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -517,6 +551,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/event.md b/docs/md/event.md index 22a2e86..333df40 100644 --- a/docs/md/event.md +++ b/docs/md/event.md @@ -468,10 +468,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -481,6 +484,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -2939,11 +2946,11 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | -| created | [ hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | none | +| created | [ hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | The created modem alarm. | ### hiber.modem.alarm.DeleteModemAlarm - +Delete an alarm. ### hiber.modem.alarm.DeleteModemAlarm.Request @@ -2953,7 +2960,7 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| identifier | [ string](#string) | none | +| identifier | [ string](#string) | Identifier of the modem alarm to delete. | ### hiber.modem.alarm.DeleteModemAlarm.Response @@ -2962,7 +2969,7 @@ This is a shortcut for creating an alarm and then adding checks, and as such can ### hiber.modem.alarm.ListModemAlarms - +List modem alarms in an organization. ### hiber.modem.alarm.ListModemAlarms.Request @@ -2972,8 +2979,8 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| selection | [ hiber.modem.alarm.ModemAlarmSelection](#hibermodemalarmmodemalarmselection) | none | -| pagination | [ hiber.Pagination](#hiberpagination) | none | +| selection | [ hiber.modem.alarm.ModemAlarmSelection](#hibermodemalarmmodemalarmselection) | Selection criteria for listing modem alarms. | +| pagination | [ hiber.Pagination](#hiberpagination) | Pagination for the returned alarms. | | apply_unit_preferences | [ bool](#bool) | Apply your UnitPreferences to the alarm checks. For example, if a temperature check is configured in kelvin, but your unit preferences specify celsius for temperature, the check value will be converted to celsius instead. | ### hiber.modem.alarm.ListModemAlarms.Response @@ -2982,9 +2989,9 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | -| modem_alarms | [repeated hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | none | -| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | none | -| request | [ hiber.modem.alarm.ListModemAlarms.Request](#hibermodemalarmlistmodemalarmsrequest) | none | +| modem_alarms | [repeated hiber.modem.alarm.ModemAlarm](#hibermodemalarmmodemalarm) | A list of modem alarms. | +| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | A pagination object, which can be used to go through the alarms. | +| request | [ hiber.modem.alarm.ListModemAlarms.Request](#hibermodemalarmlistmodemalarmsrequest) | The request made to list the given alarms. | ### hiber.modem.alarm.MakeModemAlarmAvailableToChildOrganizationRequest @@ -3019,7 +3026,7 @@ This can be changed on assignment with the default_health_level parameter, to fi Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of your health levels, that level is used. Otherwise, the catch-all health level is used. -See the health definition for more information on the catch all health level (typically the most severe). +See the health definition for more information on the catch-all health level (typically the most severe). Note that the health level displayed here is the result of the steps above. When assigned to a (set of) modem(s), an alarm can be customized using its parameters. @@ -3051,7 +3058,7 @@ would have the following parameters: | available_to_child_organizations | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | Availability to child organizations. This alarm can be shared to child organizations, so it can be assigned to their modems, either directly or automatically over all selected child organizations. Only the owner organization is able to edit the alarm. | | trigger_condition | [ hiber.modem.alarm.ModemAlarm.TriggerCondition](#hibermodemalarmmodemalarmtriggercondition) | Condition determining when an alarm is triggered if it has multiple checks. | | default_health_level | [ string](#string) | The default health level for checks in this alarm, if they have no health_level configured. | -| health_level_after_resolved | [ hiber.modem.alarm.ModemAlarm.HealthLevelAfterResolved](#hibermodemalarmmodemalarmhealthlevelafterresolved) | Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. For example, when using an inactivity check, this would could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | +| health_level_after_resolved | [ hiber.modem.alarm.ModemAlarm.HealthLevelAfterResolved](#hibermodemalarmmodemalarmhealthlevelafterresolved) | Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | | checks | [repeated hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The checks in this alarm, that validate the state of the modem. | | alarm_parameters | [ google.protobuf.Struct](#googleprotobufstruct) | Parameters for this alarm. This field displays all the parameters that can be set for the alarm on assignment, with their current value. | @@ -3066,13 +3073,15 @@ The error message template is a string with parameters for the relevant data. The parameters are included as {parameter}, which gets replaced with the value. The supported parameters are different per check, but the parameters below are always supported: -- modem: the modem number. +- modem:name: the modem name. +- modem:number: the modem number. - message: the id of the message, if any. - expected: a shortcut for the expected value(s), depending on the check: - - equals check: expected value - - oneof check: expected values as [a, b, c] - - threshold check: expected range as minimum..maximum + - inactivity check: expected duration - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)] + - equals/minimum/maximum check: expected value + - oneof check (allowed/blocked): expected values as [a, b, c] + - threshold/delta check: expected range as minimum..maximum, extended with duration for delta check - actual: the invalid actual value(s) for this check. The checks below define other available parameters. @@ -3099,10 +3108,10 @@ Numeric values can be formatted with an extra postfix on the parameters | description | [ string](#string) | Longer description for this check (optional). | | health_level | [ string](#string) | The health level that this check would cause for a modem, when it fails. If not set, the alarm default is used. | | error_message_template | [ string](#string) | The error message template for this check, with parameters that will be filled in based on the check. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.location | [ hiber.modem.alarm.ModemAlarm.Check.LocationCheck](#hibermodemalarmmodemalarmchecklocationcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.field | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck](#hibermodemalarmmodemalarmcheckfieldcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.inactivity | [ hiber.modem.alarm.ModemAlarm.Check.InactivityCheck](#hibermodemalarmmodemalarmcheckinactivitycheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delay | [ hiber.modem.alarm.ModemAlarm.Check.DelayCheck](#hibermodemalarmmodemalarmcheckdelaycheck) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.location | [ hiber.modem.alarm.ModemAlarm.Check.LocationCheck](#hibermodemalarmmodemalarmchecklocationcheck) | Check whether the device is in a given location. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.field | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck](#hibermodemalarmmodemalarmcheckfieldcheck) | Check that a message body field has a specified value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.inactivity | [ hiber.modem.alarm.ModemAlarm.Check.InactivityCheck](#hibermodemalarmmodemalarmcheckinactivitycheck) | Check whether the device exceeds inactivity limits. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delay | [ hiber.modem.alarm.ModemAlarm.Check.DelayCheck](#hibermodemalarmmodemalarmcheckdelaycheck) | Check whether a message delay exceeds delay limits. | ### hiber.modem.alarm.ModemAlarm.Check.DelayCheck @@ -3137,7 +3146,7 @@ to require that an array has a certain length. - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected -Note that this for the examples above, if they return an array, the entire array is used as the value +Note that for the examples above, if they return an array, the entire array is used as the value in the comparison for equals and oneof. A check of this type has the following parameters (matches the fields): @@ -3147,8 +3156,11 @@ A check of this type has the following parameters (matches the fields): For the equals check: - field.equals.expected: iff this is an equals check, replace the expected value -For the oneof check: -- field.oneof.expected: iff this is a oneof check, replace the expected values +For the allowed check: +- field.allowed.allowed: iff this is an allowed check, replace the expected values + +For the blocked check: +- field.blocked.blocked: iff this is a blocked check, replace the expected values For the threshold check: - field.threshold.expected: iff this is a threshold check, replace the expected range @@ -3156,7 +3168,7 @@ For the threshold check: - field.threshold.maximum: iff this is a threshold check, replace the expected maximum For the delta check: -- field.delta.period: +- field.delta.period: iff this is a delta check, replace the expected duration - field.delta.threshold.expected: iff this is a delta check, replace the expected range - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum @@ -3173,13 +3185,13 @@ The delta check also adds a few additional error message variables: | path | [ string](#string) | Select the field(s) that this check is applied to, using a json path. | | ignore_field_not_found | [ bool](#bool) | Whether to ignore this check if the field is not found. This can be useful if your path selects multiple values in an array, like my_array[*].value, and not all entries have the field, or when fields are omitted if they have a default value. | | unit | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | The unit that this alarm check is using. The field's values will automatically be converted into this unit before the check is applied. Note: unit is not currently available in the alarm_parameters. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.equals | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.EqualsCheck](#hibermodemalarmmodemalarmcheckfieldcheckequalscheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.allowed | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.AllowedCheck](#hibermodemalarmmodemalarmcheckfieldcheckallowedcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.blocked | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.BlockedCheck](#hibermodemalarmmodemalarmcheckfieldcheckblockedcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.minimum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MinimumCheck](#hibermodemalarmmodemalarmcheckfieldcheckminimumcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.maximum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MaximumCheck](#hibermodemalarmmodemalarmcheckfieldcheckmaximumcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.threshold | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.ThresholdCheck](#hibermodemalarmmodemalarmcheckfieldcheckthresholdcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delta | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.DeltaCheck](#hibermodemalarmmodemalarmcheckfieldcheckdeltacheck) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.equals | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.EqualsCheck](#hibermodemalarmmodemalarmcheckfieldcheckequalscheck) | Check that a field equals a value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.allowed | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.AllowedCheck](#hibermodemalarmmodemalarmcheckfieldcheckallowedcheck) | Check that a field equals one of a set of values. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.blocked | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.BlockedCheck](#hibermodemalarmmodemalarmcheckfieldcheckblockedcheck) | Check that a field does not equal one of a set of values. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.minimum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MinimumCheck](#hibermodemalarmmodemalarmcheckfieldcheckminimumcheck) | Chech that a field is higher than the given value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.maximum | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MaximumCheck](#hibermodemalarmmodemalarmcheckfieldcheckmaximumcheck) | Check that a field is lower than the given value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.threshold | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.ThresholdCheck](#hibermodemalarmmodemalarmcheckfieldcheckthresholdcheck) | Check that a field is within a given numeric range. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delta | [ hiber.modem.alarm.ModemAlarm.Check.FieldCheck.DeltaCheck](#hibermodemalarmmodemalarmcheckfieldcheckdeltacheck) | Check that a field's difference in value over a given period is within a specified numeric range. | ### hiber.modem.alarm.ModemAlarm.Check.FieldCheck.AllowedCheck @@ -3195,7 +3207,7 @@ Check that the field is not in a set of blocked values. | Field | Type | Description | | ----- | ---- | ----------- | -| blocked | [repeated google.protobuf.Value](#googleprotobufvalue) | none | +| blocked | [repeated google.protobuf.Value](#googleprotobufvalue) | The list of blocked values; the field should not match any of them. | ### hiber.modem.alarm.ModemAlarm.Check.FieldCheck.DeltaCheck @@ -3214,7 +3226,7 @@ Check that the field is equal to the given value. | Field | Type | Description | | ----- | ---- | ----------- | -| expected | [ google.protobuf.Value](#googleprotobufvalue) | none | +| expected | [ google.protobuf.Value](#googleprotobufvalue) | The expected value a field should have. | ### hiber.modem.alarm.ModemAlarm.Check.FieldCheck.MaximumCheck @@ -3273,7 +3285,7 @@ Allow the alarm to cause a health level for the modem even after a new message h Typically, an alarm event only affects the modem health while it is from the last message from that modem. By configuring this, you can specify the modem health should be affected for a longer period. -For example, when using an inactivity check, this would could be used to configure modem health ERROR while +For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | Field | Type | Description | @@ -3283,18 +3295,21 @@ inactive, lowering to INVESTIGATE for a day after a new message comes in. ### hiber.modem.alarm.ModemAlarmSelection +Selection criteria for listing modem alarms in an organization. If no options are provided, all modem alarms +are valid. +If values are provided both for identifiers and search, then only alarms are selected that match both criteria. | Field | Type | Description | | ----- | ---- | ----------- | -| identifiers | [repeated string](#string) | none | +| identifiers | [repeated string](#string) | Selects alarms by the given list of alarm identifiers. | | search | [ string](#string) | Search for the given string in identifier, description, fields and values. | | owner_organizations | [repeated string](#string) | Only return alarms that were created by the given organizations. | -| only_owned_alarms | [ bool](#bool) | none | +| only_owned_alarms | [ bool](#bool) | Only list owned alarms. Alarms are considered owned if your current organization created them, and thus would be able to delete them. Alarms can also be inherited from parent organizations, in which case they are owned by that parent organization. | ### hiber.modem.alarm.TestModemAlarmTestParameters - +Test a set of parameters on a modem alarm, to see the result when they are applied during assignment. ### hiber.modem.alarm.TestModemAlarmTestParameters.Request @@ -3304,8 +3319,8 @@ inactive, lowering to INVESTIGATE for a day after a new message comes in. | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| parameters | [ google.protobuf.Struct](#googleprotobufstruct) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm on which to test parameters. | +| parameters | [ google.protobuf.Struct](#googleprotobufstruct) | The parameters of the alarm that are changed. | ### hiber.modem.alarm.TestModemAlarmTestParameters.Response @@ -3400,8 +3415,8 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The check to add to the Modem Alarm. Identifier must be unique within the alarm. | +| alarm_identifier | [ string](#string) | The identifier of the alarm to which the check is added. | +| check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The check to add to the Modem Alarm. Identifier of the check must be unique within the alarm. | ### hiber.modem.alarm.UpdateModemAlarmAddCheck.Response @@ -3413,7 +3428,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### hiber.modem.alarm.UpdateModemAlarmAvailability - +Update the modem alarm availability, specifying for which (child) organizations an alarm is available. ### hiber.modem.alarm.UpdateModemAlarmAvailability.Request @@ -3423,7 +3438,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm for which to update the modem availability. | | replace_apply_to_child_organizations | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | The new set of child organizations that this rule applies to. Replaces the original value! | ### hiber.modem.alarm.UpdateModemAlarmAvailability.Response @@ -3436,7 +3451,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### hiber.modem.alarm.UpdateModemAlarmRemoveCheck - +Remove a check from an alarm. ### hiber.modem.alarm.UpdateModemAlarmRemoveCheck.Request @@ -3446,8 +3461,8 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check_identifier | [ string](#string) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm from which to remove the check. | +| check_identifier | [ string](#string) | The identifier of the check to remove. | ### hiber.modem.alarm.UpdateModemAlarmRemoveCheck.Response @@ -3459,7 +3474,10 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### hiber.modem.alarm.UpdateModemAlarmUpdateCheck +Update a check of an alarm. +Only the values of a check can be updated, e.g., it is not possible to change an inactivity check to a location +check. ### hiber.modem.alarm.UpdateModemAlarmUpdateCheck.Request @@ -3469,9 +3487,9 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check_identifier | [ string](#string) | none | -| update_check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm of which to update the check. | +| check_identifier | [ string](#string) | The identifier of the check to update. | +| update_check | [ hiber.modem.alarm.ModemAlarm.Check](#hibermodemalarmmodemalarmcheck) | The new values for the check of this alarm. | | update_using_parameters | [map hiber.modem.alarm.UpdateModemAlarmUpdateCheck.Request.UpdateUsingParametersEntry](#hibermodemalarmupdatemodemalarmupdatecheckrequestupdateusingparametersentry) | Use parameters to update the check, as it would be when they were added when the alarm was assigned. | | test_parameters_only | [ bool](#bool) | If set, the update is not actually saved, but only applied and returned. This is a convenience to easily test parameters for a check similar to TestModemAlarmTestParameters. | @@ -5435,6 +5453,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -5472,6 +5508,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -5561,6 +5606,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/export.md b/docs/md/export.md index efc744c..32814c7 100644 --- a/docs/md/export.md +++ b/docs/md/export.md @@ -54,10 +54,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -67,6 +70,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -520,6 +527,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -557,6 +582,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -646,6 +680,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/field.md b/docs/md/field.md index ef77481..cf24e72 100644 --- a/docs/md/field.md +++ b/docs/md/field.md @@ -65,10 +65,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -78,6 +81,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -698,6 +705,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -735,6 +760,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -824,6 +858,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/field_service.md b/docs/md/field_service.md index 1ffb381..9bc8fc4 100644 --- a/docs/md/field_service.md +++ b/docs/md/field_service.md @@ -140,10 +140,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -153,6 +156,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -1608,6 +1615,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1645,6 +1670,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1734,6 +1768,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/health.md b/docs/md/health.md index 76fee28..dfd2dc2 100644 --- a/docs/md/health.md +++ b/docs/md/health.md @@ -46,10 +46,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -59,6 +62,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -488,6 +495,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -525,6 +550,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -614,6 +648,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/integration_mqtt.md b/docs/md/integration_mqtt.md index 096a695..d18da51 100644 --- a/docs/md/integration_mqtt.md +++ b/docs/md/integration_mqtt.md @@ -56,10 +56,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -69,6 +72,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -618,6 +625,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -655,6 +680,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -744,6 +778,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/integration_slack.md b/docs/md/integration_slack.md index b598239..c612084 100644 --- a/docs/md/integration_slack.md +++ b/docs/md/integration_slack.md @@ -54,10 +54,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -67,6 +70,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -575,6 +582,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -612,6 +637,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -701,6 +735,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/map.md b/docs/md/map.md index 8602b0f..dd7d4eb 100644 --- a/docs/md/map.md +++ b/docs/md/map.md @@ -105,10 +105,13 @@ a controlled amount of groups. - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -118,6 +121,10 @@ a controlled amount of groups. - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -700,6 +707,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -737,6 +762,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -826,6 +860,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/message.md b/docs/md/message.md index 8983ec8..c6c3f00 100644 --- a/docs/md/message.md +++ b/docs/md/message.md @@ -108,10 +108,13 @@ Message management. - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -121,6 +124,10 @@ Message management. - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -1203,6 +1210,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1240,6 +1265,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1329,6 +1363,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/modem.md b/docs/md/modem.md index af8fb41..4c076aa 100644 --- a/docs/md/modem.md +++ b/docs/md/modem.md @@ -128,10 +128,13 @@ used to identify them. - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -141,6 +144,10 @@ used to identify them. - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -1505,6 +1512,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1542,6 +1567,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1631,6 +1665,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/modem_alarm.md b/docs/md/modem_alarm.md index f48ebc8..250a31e 100644 --- a/docs/md/modem_alarm.md +++ b/docs/md/modem_alarm.md @@ -109,10 +109,13 @@ advanced use cases, like assigning to a tag. - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -122,6 +125,10 @@ advanced use cases, like assigning to a tag. - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -301,11 +308,11 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | -| created | [ ModemAlarm](#modemalarm) | none | +| created | [ ModemAlarm](#modemalarm) | The created modem alarm. | ### DeleteModemAlarm - +Delete an alarm. ### DeleteModemAlarm.Request @@ -315,7 +322,7 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| identifier | [ string](#string) | none | +| identifier | [ string](#string) | Identifier of the modem alarm to delete. | ### DeleteModemAlarm.Response @@ -324,7 +331,7 @@ This is a shortcut for creating an alarm and then adding checks, and as such can ### ListModemAlarms - +List modem alarms in an organization. ### ListModemAlarms.Request @@ -334,8 +341,8 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| selection | [ ModemAlarmSelection](#modemalarmselection) | none | -| pagination | [ hiber.Pagination](#hiberpagination) | none | +| selection | [ ModemAlarmSelection](#modemalarmselection) | Selection criteria for listing modem alarms. | +| pagination | [ hiber.Pagination](#hiberpagination) | Pagination for the returned alarms. | | apply_unit_preferences | [ bool](#bool) | Apply your UnitPreferences to the alarm checks. For example, if a temperature check is configured in kelvin, but your unit preferences specify celsius for temperature, the check value will be converted to celsius instead. | ### ListModemAlarms.Response @@ -344,9 +351,9 @@ This is a shortcut for creating an alarm and then adding checks, and as such can | Field | Type | Description | | ----- | ---- | ----------- | -| modem_alarms | [repeated ModemAlarm](#modemalarm) | none | -| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | none | -| request | [ ListModemAlarms.Request](#listmodemalarmsrequest) | none | +| modem_alarms | [repeated ModemAlarm](#modemalarm) | A list of modem alarms. | +| pagination | [ hiber.Pagination.Result](#hiberpaginationresult) | A pagination object, which can be used to go through the alarms. | +| request | [ ListModemAlarms.Request](#listmodemalarmsrequest) | The request made to list the given alarms. | ### MakeModemAlarmAvailableToChildOrganizationRequest @@ -381,7 +388,7 @@ This can be changed on assignment with the default_health_level parameter, to fi Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of your health levels, that level is used. Otherwise, the catch-all health level is used. -See the health definition for more information on the catch all health level (typically the most severe). +See the health definition for more information on the catch-all health level (typically the most severe). Note that the health level displayed here is the result of the steps above. When assigned to a (set of) modem(s), an alarm can be customized using its parameters. @@ -413,7 +420,7 @@ would have the following parameters: | available_to_child_organizations | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | Availability to child organizations. This alarm can be shared to child organizations, so it can be assigned to their modems, either directly or automatically over all selected child organizations. Only the owner organization is able to edit the alarm. | | trigger_condition | [ ModemAlarm.TriggerCondition](#modemalarmtriggercondition) | Condition determining when an alarm is triggered if it has multiple checks. | | default_health_level | [ string](#string) | The default health level for checks in this alarm, if they have no health_level configured. | -| health_level_after_resolved | [ ModemAlarm.HealthLevelAfterResolved](#modemalarmhealthlevelafterresolved) | Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. For example, when using an inactivity check, this would could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | +| health_level_after_resolved | [ ModemAlarm.HealthLevelAfterResolved](#modemalarmhealthlevelafterresolved) | Allow the alarm to cause a health level for the modem even after it has been resolved. By configuring this, you can specify the modem health should be affected for a longer period. For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | | checks | [repeated ModemAlarm.Check](#modemalarmcheck) | The checks in this alarm, that validate the state of the modem. | | alarm_parameters | [ google.protobuf.Struct](#googleprotobufstruct) | Parameters for this alarm. This field displays all the parameters that can be set for the alarm on assignment, with their current value. | @@ -428,13 +435,15 @@ The error message template is a string with parameters for the relevant data. The parameters are included as {parameter}, which gets replaced with the value. The supported parameters are different per check, but the parameters below are always supported: -- modem: the modem number. +- modem:name: the modem name. +- modem:number: the modem number. - message: the id of the message, if any. - expected: a shortcut for the expected value(s), depending on the check: - - equals check: expected value - - oneof check: expected values as [a, b, c] - - threshold check: expected range as minimum..maximum + - inactivity check: expected duration - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)] + - equals/minimum/maximum check: expected value + - oneof check (allowed/blocked): expected values as [a, b, c] + - threshold/delta check: expected range as minimum..maximum, extended with duration for delta check - actual: the invalid actual value(s) for this check. The checks below define other available parameters. @@ -461,10 +470,10 @@ Numeric values can be formatted with an extra postfix on the parameters | description | [ string](#string) | Longer description for this check (optional). | | health_level | [ string](#string) | The health level that this check would cause for a modem, when it fails. If not set, the alarm default is used. | | error_message_template | [ string](#string) | The error message template for this check, with parameters that will be filled in based on the check. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.location | [ ModemAlarm.Check.LocationCheck](#modemalarmchecklocationcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.field | [ ModemAlarm.Check.FieldCheck](#modemalarmcheckfieldcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.inactivity | [ ModemAlarm.Check.InactivityCheck](#modemalarmcheckinactivitycheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delay | [ ModemAlarm.Check.DelayCheck](#modemalarmcheckdelaycheck) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.location | [ ModemAlarm.Check.LocationCheck](#modemalarmchecklocationcheck) | Check whether the device is in a given location. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.field | [ ModemAlarm.Check.FieldCheck](#modemalarmcheckfieldcheck) | Check that a message body field has a specified value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.inactivity | [ ModemAlarm.Check.InactivityCheck](#modemalarmcheckinactivitycheck) | Check whether the device exceeds inactivity limits. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delay | [ ModemAlarm.Check.DelayCheck](#modemalarmcheckdelaycheck) | Check whether a message delay exceeds delay limits. | ### ModemAlarm.Check.DelayCheck @@ -499,7 +508,7 @@ to require that an array has a certain length. - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected -Note that this for the examples above, if they return an array, the entire array is used as the value +Note that for the examples above, if they return an array, the entire array is used as the value in the comparison for equals and oneof. A check of this type has the following parameters (matches the fields): @@ -509,8 +518,11 @@ A check of this type has the following parameters (matches the fields): For the equals check: - field.equals.expected: iff this is an equals check, replace the expected value -For the oneof check: -- field.oneof.expected: iff this is a oneof check, replace the expected values +For the allowed check: +- field.allowed.allowed: iff this is an allowed check, replace the expected values + +For the blocked check: +- field.blocked.blocked: iff this is a blocked check, replace the expected values For the threshold check: - field.threshold.expected: iff this is a threshold check, replace the expected range @@ -518,7 +530,7 @@ For the threshold check: - field.threshold.maximum: iff this is a threshold check, replace the expected maximum For the delta check: -- field.delta.period: +- field.delta.period: iff this is a delta check, replace the expected duration - field.delta.threshold.expected: iff this is a delta check, replace the expected range - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum @@ -535,13 +547,13 @@ The delta check also adds a few additional error message variables: | path | [ string](#string) | Select the field(s) that this check is applied to, using a json path. | | ignore_field_not_found | [ bool](#bool) | Whether to ignore this check if the field is not found. This can be useful if your path selects multiple values in an array, like my_array[*].value, and not all entries have the field, or when fields are omitted if they have a default value. | | unit | [ hiber.field.Field.Numeric.Unit](#hiberfieldfieldnumericunit) | The unit that this alarm check is using. The field's values will automatically be converted into this unit before the check is applied. Note: unit is not currently available in the alarm_parameters. | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.equals | [ ModemAlarm.Check.FieldCheck.EqualsCheck](#modemalarmcheckfieldcheckequalscheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.allowed | [ ModemAlarm.Check.FieldCheck.AllowedCheck](#modemalarmcheckfieldcheckallowedcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.blocked | [ ModemAlarm.Check.FieldCheck.BlockedCheck](#modemalarmcheckfieldcheckblockedcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.minimum | [ ModemAlarm.Check.FieldCheck.MinimumCheck](#modemalarmcheckfieldcheckminimumcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.maximum | [ ModemAlarm.Check.FieldCheck.MaximumCheck](#modemalarmcheckfieldcheckmaximumcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.threshold | [ ModemAlarm.Check.FieldCheck.ThresholdCheck](#modemalarmcheckfieldcheckthresholdcheck) | none | -| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delta | [ ModemAlarm.Check.FieldCheck.DeltaCheck](#modemalarmcheckfieldcheckdeltacheck) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.equals | [ ModemAlarm.Check.FieldCheck.EqualsCheck](#modemalarmcheckfieldcheckequalscheck) | Check that a field equals a value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.allowed | [ ModemAlarm.Check.FieldCheck.AllowedCheck](#modemalarmcheckfieldcheckallowedcheck) | Check that a field equals one of a set of values. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.blocked | [ ModemAlarm.Check.FieldCheck.BlockedCheck](#modemalarmcheckfieldcheckblockedcheck) | Check that a field does not equal one of a set of values. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.minimum | [ ModemAlarm.Check.FieldCheck.MinimumCheck](#modemalarmcheckfieldcheckminimumcheck) | Chech that a field is higher than the given value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.maximum | [ ModemAlarm.Check.FieldCheck.MaximumCheck](#modemalarmcheckfieldcheckmaximumcheck) | Check that a field is lower than the given value. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.threshold | [ ModemAlarm.Check.FieldCheck.ThresholdCheck](#modemalarmcheckfieldcheckthresholdcheck) | Check that a field is within a given numeric range. | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **check**.delta | [ ModemAlarm.Check.FieldCheck.DeltaCheck](#modemalarmcheckfieldcheckdeltacheck) | Check that a field's difference in value over a given period is within a specified numeric range. | ### ModemAlarm.Check.FieldCheck.AllowedCheck @@ -557,7 +569,7 @@ Check that the field is not in a set of blocked values. | Field | Type | Description | | ----- | ---- | ----------- | -| blocked | [repeated google.protobuf.Value](#googleprotobufvalue) | none | +| blocked | [repeated google.protobuf.Value](#googleprotobufvalue) | The list of blocked values; the field should not match any of them. | ### ModemAlarm.Check.FieldCheck.DeltaCheck @@ -576,7 +588,7 @@ Check that the field is equal to the given value. | Field | Type | Description | | ----- | ---- | ----------- | -| expected | [ google.protobuf.Value](#googleprotobufvalue) | none | +| expected | [ google.protobuf.Value](#googleprotobufvalue) | The expected value a field should have. | ### ModemAlarm.Check.FieldCheck.MaximumCheck @@ -635,7 +647,7 @@ Allow the alarm to cause a health level for the modem even after a new message h Typically, an alarm event only affects the modem health while it is from the last message from that modem. By configuring this, you can specify the modem health should be affected for a longer period. -For example, when using an inactivity check, this would could be used to configure modem health ERROR while +For example, when using an inactivity check, this could be used to configure modem health ERROR while inactive, lowering to INVESTIGATE for a day after a new message comes in. | Field | Type | Description | @@ -645,18 +657,21 @@ inactive, lowering to INVESTIGATE for a day after a new message comes in. ### ModemAlarmSelection +Selection criteria for listing modem alarms in an organization. If no options are provided, all modem alarms +are valid. +If values are provided both for identifiers and search, then only alarms are selected that match both criteria. | Field | Type | Description | | ----- | ---- | ----------- | -| identifiers | [repeated string](#string) | none | +| identifiers | [repeated string](#string) | Selects alarms by the given list of alarm identifiers. | | search | [ string](#string) | Search for the given string in identifier, description, fields and values. | | owner_organizations | [repeated string](#string) | Only return alarms that were created by the given organizations. | -| only_owned_alarms | [ bool](#bool) | none | +| only_owned_alarms | [ bool](#bool) | Only list owned alarms. Alarms are considered owned if your current organization created them, and thus would be able to delete them. Alarms can also be inherited from parent organizations, in which case they are owned by that parent organization. | ### TestModemAlarmTestParameters - +Test a set of parameters on a modem alarm, to see the result when they are applied during assignment. ### TestModemAlarmTestParameters.Request @@ -666,8 +681,8 @@ inactive, lowering to INVESTIGATE for a day after a new message comes in. | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| parameters | [ google.protobuf.Struct](#googleprotobufstruct) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm on which to test parameters. | +| parameters | [ google.protobuf.Struct](#googleprotobufstruct) | The parameters of the alarm that are changed. | ### TestModemAlarmTestParameters.Response @@ -762,8 +777,8 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check | [ ModemAlarm.Check](#modemalarmcheck) | The check to add to the Modem Alarm. Identifier must be unique within the alarm. | +| alarm_identifier | [ string](#string) | The identifier of the alarm to which the check is added. | +| check | [ ModemAlarm.Check](#modemalarmcheck) | The check to add to the Modem Alarm. Identifier of the check must be unique within the alarm. | ### UpdateModemAlarmAddCheck.Response @@ -775,7 +790,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### UpdateModemAlarmAvailability - +Update the modem alarm availability, specifying for which (child) organizations an alarm is available. ### UpdateModemAlarmAvailability.Request @@ -785,7 +800,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm for which to update the modem availability. | | replace_apply_to_child_organizations | [ hiber.Filter.ChildOrganizations](#hiberfilterchildorganizations) | The new set of child organizations that this rule applies to. Replaces the original value! | ### UpdateModemAlarmAvailability.Response @@ -798,7 +813,7 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### UpdateModemAlarmRemoveCheck - +Remove a check from an alarm. ### UpdateModemAlarmRemoveCheck.Request @@ -808,8 +823,8 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check_identifier | [ string](#string) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm from which to remove the check. | +| check_identifier | [ string](#string) | The identifier of the check to remove. | ### UpdateModemAlarmRemoveCheck.Response @@ -821,7 +836,10 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org ### UpdateModemAlarmUpdateCheck +Update a check of an alarm. +Only the values of a check can be updated, e.g., it is not possible to change an inactivity check to a location +check. ### UpdateModemAlarmUpdateCheck.Request @@ -831,9 +849,9 @@ Add a check to the alarm, iff you are the owner or can impersonate the owner org | Field | Type | Description | | ----- | ---- | ----------- | | organization | [ string](#string) | Pick the organization to use (/impersonate). If unset, your default organization is used. | -| alarm_identifier | [ string](#string) | none | -| check_identifier | [ string](#string) | none | -| update_check | [ ModemAlarm.Check](#modemalarmcheck) | none | +| alarm_identifier | [ string](#string) | The identifier of the alarm of which to update the check. | +| check_identifier | [ string](#string) | The identifier of the check to update. | +| update_check | [ ModemAlarm.Check](#modemalarmcheck) | The new values for the check of this alarm. | | update_using_parameters | [map UpdateModemAlarmUpdateCheck.Request.UpdateUsingParametersEntry](#updatemodemalarmupdatecheckrequestupdateusingparametersentry) | Use parameters to update the check, as it would be when they were added when the alarm was assigned. | | test_parameters_only | [ bool](#bool) | If set, the update is not actually saved, but only applied and returned. This is a convenience to easily test parameters for a check similar to TestModemAlarmTestParameters. | @@ -1271,6 +1289,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1308,6 +1344,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1397,6 +1442,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/modem_claim.md b/docs/md/modem_claim.md index d54c297..6c194ff 100644 --- a/docs/md/modem_claim.md +++ b/docs/md/modem_claim.md @@ -40,10 +40,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -53,6 +56,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -360,6 +367,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -397,6 +422,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -486,6 +520,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/modem_message_body_parser.md b/docs/md/modem_message_body_parser.md index b514ab4..2d9dd50 100644 --- a/docs/md/modem_message_body_parser.md +++ b/docs/md/modem_message_body_parser.md @@ -96,10 +96,13 @@ where you can find documentation, examples and a web IDE. - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -109,6 +112,10 @@ where you can find documentation, examples and a web IDE. - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -1049,6 +1056,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1086,6 +1111,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1175,6 +1209,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/modem_message_downlink.md b/docs/md/modem_message_downlink.md index 5017b1e..184a094 100644 --- a/docs/md/modem_message_downlink.md +++ b/docs/md/modem_message_downlink.md @@ -51,10 +51,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -64,6 +67,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -546,6 +553,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -583,6 +608,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -672,6 +706,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/modem_transfer.md b/docs/md/modem_transfer.md index e359e8b..6c15f4c 100644 --- a/docs/md/modem_transfer.md +++ b/docs/md/modem_transfer.md @@ -97,10 +97,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -110,6 +113,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -1095,6 +1102,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1132,6 +1157,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1221,6 +1255,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/named_location.md b/docs/md/named_location.md index 1cc16b2..6f2c854 100644 --- a/docs/md/named_location.md +++ b/docs/md/named_location.md @@ -44,10 +44,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -57,6 +60,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -438,6 +445,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -475,6 +500,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -564,6 +598,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/organization.md b/docs/md/organization.md index f47d767..8402d0b 100644 --- a/docs/md/organization.md +++ b/docs/md/organization.md @@ -50,10 +50,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -63,6 +66,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -546,6 +553,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -583,6 +608,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -672,6 +706,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/publisher.md b/docs/md/publisher.md index 8711a6f..247eb86 100644 --- a/docs/md/publisher.md +++ b/docs/md/publisher.md @@ -147,10 +147,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -160,6 +163,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -1585,6 +1592,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1622,6 +1647,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1711,6 +1745,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/satellite.md b/docs/md/satellite.md index 12de6e1..9fcfdd3 100644 --- a/docs/md/satellite.md +++ b/docs/md/satellite.md @@ -39,10 +39,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -52,6 +55,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -373,6 +380,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -410,6 +435,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -499,6 +533,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/simulation.md b/docs/md/simulation.md index 20b1be5..fdf4cf6 100644 --- a/docs/md/simulation.md +++ b/docs/md/simulation.md @@ -32,10 +32,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -45,6 +48,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -292,6 +299,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -329,6 +354,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -418,6 +452,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/simulation_service.md b/docs/md/simulation_service.md index 3d1ff6b..b07b5f0 100644 --- a/docs/md/simulation_service.md +++ b/docs/md/simulation_service.md @@ -57,10 +57,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -70,6 +73,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -592,6 +599,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -629,6 +654,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -718,6 +752,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/status.md b/docs/md/status.md index 88f3e89..8e37a98 100644 --- a/docs/md/status.md +++ b/docs/md/status.md @@ -53,10 +53,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -66,6 +69,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -532,6 +539,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -569,6 +594,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -658,6 +692,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/tag.md b/docs/md/tag.md index 477a062..b5d1340 100644 --- a/docs/md/tag.md +++ b/docs/md/tag.md @@ -39,10 +39,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -52,6 +55,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -375,6 +382,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -412,6 +437,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -501,6 +535,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/testing.md b/docs/md/testing.md index 69dfdaa..650bd3d 100644 --- a/docs/md/testing.md +++ b/docs/md/testing.md @@ -63,10 +63,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -76,6 +79,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -720,6 +727,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -757,6 +782,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -846,6 +880,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/token.md b/docs/md/token.md index 0d83017..4cdadcf 100644 --- a/docs/md/token.md +++ b/docs/md/token.md @@ -45,10 +45,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -58,6 +61,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -462,6 +469,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -499,6 +524,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -588,6 +622,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/user.md b/docs/md/user.md index fdc345d..bda7629 100644 --- a/docs/md/user.md +++ b/docs/md/user.md @@ -57,10 +57,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -70,6 +73,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -618,6 +625,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -655,6 +680,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -744,6 +778,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/value.md b/docs/md/value.md index 2dc898d..1186da9 100644 --- a/docs/md/value.md +++ b/docs/md/value.md @@ -56,10 +56,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -69,6 +72,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -595,6 +602,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -632,6 +657,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -721,6 +755,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/value_service.md b/docs/md/value_service.md index 73058e4..9903ee7 100644 --- a/docs/md/value_service.md +++ b/docs/md/value_service.md @@ -90,10 +90,13 @@ Messages are parsed to a number of values (depending on the parser), which can b - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -103,6 +106,10 @@ Messages are parsed to a number of values (depending on the parser), which can b - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -973,6 +980,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -1010,6 +1035,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -1099,6 +1133,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/docs/md/webhook.md b/docs/md/webhook.md index c84bca1..ef32665 100644 --- a/docs/md/webhook.md +++ b/docs/md/webhook.md @@ -70,10 +70,13 @@ - [hiber.Filter.Events](#hiberfilterevents) - [hiber.Filter.Events.Update](#hiberfiltereventsupdate) - [hiber.Filter.FieldEnumValues](#hiberfilterfieldenumvalues) + - [hiber.Filter.HealthLevels](#hiberfilterhealthlevels) + - [hiber.Filter.ModemIdentifiers](#hiberfiltermodemidentifiers) - [hiber.Filter.Modems](#hiberfiltermodems) - [hiber.Filter.Modems.Update](#hiberfiltermodemsupdate) - [hiber.Filter.OrganizationPermissions](#hiberfilterorganizationpermissions) - [hiber.Filter.Organizations](#hiberfilterorganizations) + - [hiber.Filter.Properties](#hiberfilterproperties) - [hiber.Filter.Publishers](#hiberfilterpublishers) - [hiber.Filter.SupportPermissions](#hiberfiltersupportpermissions) - [hiber.Filter.Tags](#hiberfiltertags) @@ -83,6 +86,10 @@ - [hiber.Filter.Webhooks](#hiberfilterwebhooks) - [hiber.Location](#hiberlocation) - [hiber.LocationSelection](#hiberlocationselection) + - [hiber.MapFilter](#hibermapfilter) + - [hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) + - [hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) + - [hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) - [hiber.NamedFile](#hibernamedfile) - [hiber.Pagination](#hiberpagination) - [hiber.Pagination.Result](#hiberpaginationresult) @@ -781,6 +788,24 @@ Update object to update a Filter.Events field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.HealthLevels + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + +### hiber.Filter.ModemIdentifiers + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include | [repeated string](#string) | none | +| exclude | [repeated string](#string) | none | + ### hiber.Filter.Modems @@ -818,6 +843,15 @@ Update object to update a Filter.Modems field. | include | [repeated string](#string) | none | | exclude | [repeated string](#string) | none | +### hiber.Filter.Properties + +Filter result on specific properties encoded in map-value pairs. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.properties | [ hiber.MapFilter](#hibermapfilter) | none | +| [**oneof**](https://developers.google.com/protocol-buffers/docs/proto3#oneof) **selection**.include_only_empty | [ bool](#bool) | When set to true, match only empty property-sets. | + ### hiber.Filter.Publishers @@ -907,6 +941,61 @@ for example | 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.MapFilter + +Some properties are stored as a name-value pair (e.g. bluetooth: 4.0, bluetooth: BLE). +This filter allows selecting a range of values for a specific name. +One could imagine wanting to include "all devices with bluetooth 4.0 or 4.1". + +To select for multiple versions of a property, +add the name of the property as a map-key and add a repeated list of versions as the map-value. + +For example: +- include { 'bluetooth' -> [ ] } + returns all items that have any version of bluetooth, +- include { 'bluetooth' -> [ '4.0', '5.0' ] } + will only return items that have bluetooth version 4.0 _or_ 5.0 (inclusive or), +- include { 'bluetooth' -> [ '' ] } + would only select bluetooth peripherals that don't have any version set, +- include { 'bluetooth' -> [ ], 'LoRaWAN' -> [ ] } + will only select items that have both bluetooth (any version) _and_ LoRaWAN (any version), +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ ] } + will return an empty list since exclude will take precedence, and +- include { 'bluetooth' -> [ ] }, exclude { 'bluetooth' -> [ '3.0' ] } + returns only items that have bluetooth, but not version 3.0. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| include_and | [map hiber.MapFilter.IncludeAndEntry](#hibermapfilterincludeandentry) | Filter to only include items with all of the given set of properties. | +| exclude | [map hiber.MapFilter.ExcludeEntry](#hibermapfilterexcludeentry) | Filter to exclude items with any of the given set of properties. | + +### hiber.MapFilter.ExcludeEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.IncludeAndEntry + + + +| Field | Type | Description | +| ----- | ---- | ----------- | +| key | [ string](#string) | none | +| value | [ hiber.MapFilter.OneOfValues](#hibermapfilteroneofvalues) | none | + +### hiber.MapFilter.OneOfValues + +Technical solution to make map into a map, +which is not possible in protobuf without trickery. + +| Field | Type | Description | +| ----- | ---- | ----------- | +| value | [repeated string](#string) | none | + ### hiber.NamedFile A NamedFile contains bytes with its mime-type and name. diff --git a/modem_alarm.proto b/modem_alarm.proto index 8b2afaf..b65ae54 100644 --- a/modem_alarm.proto +++ b/modem_alarm.proto @@ -74,7 +74,7 @@ service ModemAlarmService { * * Note, when an alarm is inherited the health levels may not match yours. If the health level matches one of * your health levels, that level is used. Otherwise, the catch-all health level is used. - * See the health definition for more information on the catch all health level (typically the most severe). + * See the health definition for more information on the catch-all health level (typically the most severe). * Note that the health level displayed here is the result of the steps above. * * When assigned to a (set of) modem(s), an alarm can be customized using its parameters. @@ -101,7 +101,6 @@ message ModemAlarm { * This identifier is globally unique, since the alarm can be shared to child organizations. */ string identifier = 1; - /* Short name for this alarm (optional). */ string name = 9; @@ -148,7 +147,7 @@ message ModemAlarm { /* Allow the alarm to cause a health level for the modem even after it has been resolved. * By configuring this, you can specify the modem health should be affected for a longer period. - * For example, when using an inactivity check, this would could be used to configure modem health ERROR while + * For example, when using an inactivity check, this could be used to configure modem health ERROR while * inactive, lowering to INVESTIGATE for a day after a new message comes in. */ HealthLevelAfterResolved health_level_after_resolved = 8; @@ -170,13 +169,15 @@ message ModemAlarm { * The parameters are included as {parameter}, which gets replaced with the value. * * The supported parameters are different per check, but the parameters below are always supported: - * - modem: the modem number. + * - modem:name: the modem name. + * - modem:number: the modem number. * - message: the id of the message, if any. * - expected: a shortcut for the expected value(s), depending on the check: - * - equals check: expected value - * - oneof check: expected values as [a, b, c] - * - threshold check: expected range as minimum..maximum + * - inactivity check: expected duration * - location check: expected area as [(bottom left), (top right)], and shape as [(point), (point), ..., (point)] + * - equals/minimum/maximum check: expected value + * - oneof check (allowed/blocked): expected values as [a, b, c] + * - threshold/delta check: expected range as minimum..maximum, extended with duration for delta check * - actual: the invalid actual value(s) for this check. * * The checks below define other available parameters. @@ -216,9 +217,13 @@ message ModemAlarm { string error_message_template = 3; oneof check { + /* Check whether the device is in a given location. */ LocationCheck location = 4; + /* Check that a message body field has a specified value. */ FieldCheck field = 5; + /* Check whether the device exceeds inactivity limits. */ InactivityCheck inactivity = 6; + /* Check whether a message delay exceeds delay limits. */ DelayCheck delay = 7; } @@ -276,7 +281,7 @@ message ModemAlarm { * - $.my_array..my_field: the array of my_field values (for all objects in my_array) is selected * - $.my_array[*].my_field: the array of my_field values (for all objects in my_array) is selected * - * Note that this for the examples above, if they return an array, the entire array is used as the value + * Note that for the examples above, if they return an array, the entire array is used as the value * in the comparison for equals and oneof. * * A check of this type has the following parameters (matches the fields): @@ -286,16 +291,19 @@ message ModemAlarm { * For the equals check: * - field.equals.expected: iff this is an equals check, replace the expected value * - * For the oneof check: - * - field.oneof.expected: iff this is a oneof check, replace the expected values + * For the allowed check: + * - field.allowed.allowed: iff this is an allowed check, replace the expected values * + * For the blocked check: + * - field.blocked.blocked: iff this is a blocked check, replace the expected values + * For the threshold check: * - field.threshold.expected: iff this is a threshold check, replace the expected range * - field.threshold.minimum: iff this is a threshold check, replace the expected minimum * - field.threshold.maximum: iff this is a threshold check, replace the expected maximum * * For the delta check: - * - field.delta.period: + * - field.delta.period: iff this is a delta check, replace the expected duration * - field.delta.threshold.expected: iff this is a delta check, replace the expected range * - field.delta.threshold.minimum: iff this is a delta check, replace the expected minimum * - field.delta.threshold.maximum: iff this is a delta check, replace the expected maximum @@ -324,17 +332,25 @@ message ModemAlarm { field.Field.Numeric.Unit unit = 9; oneof check { + /* Check that a field equals a value. */ EqualsCheck equals = 3; + /* Check that a field equals one of a set of values. */ AllowedCheck allowed = 4; + /* Check that a field does not equal one of a set of values. */ BlockedCheck blocked = 10; + /* Chech that a field is higher than the given value. */ MinimumCheck minimum = 7; + /* Check that a field is lower than the given value. */ MaximumCheck maximum = 8; + /* Check that a field is within a given numeric range. */ ThresholdCheck threshold = 5; + /* Check that a field's difference in value over a given period is within a specified numeric range. */ DeltaCheck delta = 6; } /* Check that the field is equal to the given value. */ message EqualsCheck { + /* The expected value a field should have. */ google.protobuf.Value expected = 1; } @@ -346,6 +362,7 @@ message ModemAlarm { /* Check that the field is not in a set of blocked values. */ message BlockedCheck { + /* The list of blocked values; the field should not match any of them. */ repeated google.protobuf.Value blocked = 1; } @@ -401,7 +418,7 @@ message ModemAlarm { * Typically, an alarm event only affects the modem health while it is from the last message from that modem. * By configuring this, you can specify the modem health should be affected for a longer period. * - * For example, when using an inactivity check, this would could be used to configure modem health ERROR while + * For example, when using an inactivity check, this could be used to configure modem health ERROR while * inactive, lowering to INVESTIGATE for a day after a new message comes in. */ message HealthLevelAfterResolved { @@ -413,7 +430,14 @@ message ModemAlarm { } } +/* + * Selection criteria for listing modem alarms in an organization. If no options are provided, all modem alarms + * are valid. + * + * If values are provided both for identifiers and search, then only alarms are selected that match both criteria. + */ message ModemAlarmSelection { + /* Selects alarms by the given list of alarm identifiers. */ repeated string identifiers = 1; /* Search for the given string in identifier, description, fields and values. */ @@ -422,15 +446,24 @@ message ModemAlarmSelection { /* Only return alarms that were created by the given organizations. */ repeated string owner_organizations = 3; + /* Only list owned alarms. Alarms are considered owned if your current organization created them, and thus would + * be able to delete them. Alarms can also be inherited from parent organizations, in which case they are owned + * by that parent organization. + */ bool only_owned_alarms = 4; } +/* + * List modem alarms in an organization. + */ message ListModemAlarms { message Request { /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ string organization = 1; + /* Selection criteria for listing modem alarms. */ ModemAlarmSelection selection = 2; + /* Pagination for the returned alarms. */ Pagination pagination = 3; /* Apply your UnitPreferences to the alarm checks. @@ -440,8 +473,11 @@ message ListModemAlarms { bool apply_unit_preferences = 4; } message Response { + /* A list of modem alarms. */ repeated ModemAlarm modem_alarms = 1; + /* A pagination object, which can be used to go through the alarms. */ Pagination.Result pagination = 2; + /* The request made to list the given alarms. */ Request request = 3; } } @@ -479,6 +515,7 @@ message CreateModemAlarm { ModemAlarm.HealthLevelAfterResolved health_level_after_resolved = 6; } message Response { + /* The created modem alarm. */ ModemAlarm created = 1; } } @@ -536,9 +573,10 @@ message UpdateModemAlarmAddCheck { message Request { /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ string organization = 1; + /* The identifier of the alarm to which the check is added. */ string alarm_identifier = 2; - /* The check to add to the Modem Alarm. Identifier must be unique within the alarm. */ + /* The check to add to the Modem Alarm. Identifier of the check must be unique within the alarm. */ ModemAlarm.Check check = 3; } message Response { @@ -546,12 +584,20 @@ message UpdateModemAlarmAddCheck { } } +/* Update a check of an alarm. + * + * Only the values of a check can be updated, e.g., it is not possible to change an inactivity check to a location + * check. +*/ message UpdateModemAlarmUpdateCheck { message Request { /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ string organization = 1; + /* The identifier of the alarm of which to update the check. */ string alarm_identifier = 2; + /* The identifier of the check to update. */ string check_identifier = 3; + /* The new values for the check of this alarm. */ ModemAlarm.Check update_check = 4; /* Use parameters to update the check, as it would be when they were added when the alarm was assigned. */ @@ -567,11 +613,14 @@ message UpdateModemAlarmUpdateCheck { } } +/* Remove a check from an alarm. */ message UpdateModemAlarmRemoveCheck { message Request { /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ string organization = 1; + /* The identifier of the alarm from which to remove the check. */ string alarm_identifier = 2; + /* The identifier of the check to remove. */ string check_identifier = 3; } message Response { @@ -579,21 +628,26 @@ message UpdateModemAlarmRemoveCheck { } } +/* Delete an alarm. */ message DeleteModemAlarm { message Request { /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ string organization = 1; + /* Identifier of the modem alarm to delete. */ string identifier = 2; } message Response { } } +/* Test a set of parameters on a modem alarm, to see the result when they are applied during assignment. */ message TestModemAlarmTestParameters { message Request { /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ string organization = 1; + /* The identifier of the alarm on which to test parameters. */ string alarm_identifier = 2; + /* The parameters of the alarm that are changed. */ google.protobuf.Struct parameters = 3; } message Response { @@ -601,10 +655,12 @@ message TestModemAlarmTestParameters { } } +/* Update the modem alarm availability, specifying for which (child) organizations an alarm is available. */ message UpdateModemAlarmAvailability { message Request { /* Pick the organization to use (/impersonate). If unset, your default organization is used. */ string organization = 1; + /* The identifier of the alarm for which to update the modem availability. */ string alarm_identifier = 2; /* The new set of child organizations that this rule applies to.