Get desktop application:
View/edit binary Protocol Buffers messages
Alpha services are deprecated. Please use SearchV1
for custom schema deletion This is alpha version of this api and doesn't synchronize across apiserver instances. apiserver restart is needed to get updated schema information from hbase.
you know, for search...
SearchSubscribe allows the client to request a live stream of updates based on client search request
for search with aggregation
SearchWithAggregationStream sends the protobuf-serialized form of AggrResponse as in a stream of byteArrays. Receiver needs to append the "bytearrays", and protobuf-deserialize to obtain the result. Intended for messages exceeding the grpc size limit
for custom schema configuration
CreateDataset from a given Dataset wrapped in a CreateDatasetRequest
CreateSession creates session for user
CreateSessionRequest is used to create session for user
CreateSessionResponse returns the issued JWT token
GetPermissionSet returns the set of all permissions present for the datasets specified in the 'query'(s) of the GetRequest.
A PermissionSet can be represented as a list of SetPermissionRequests
SetPassword sets the password for a user.
SetPasswordRequest is used to set the password for a dataset.
SetPermission sets a permission for a dataset using a SetPermissionRequest.
Enroll is called by client passing Certificate Signing Request (CSR) containing its personal certificate to be signed. The server returns back the certificate (CRT) to authenticate into IngestGateway or Router.
Reenroll is called by client passing Certificate Signing Request (CSR) when it wants to renew its personal certificate. The server returns a new certificate (CRT).
Cluster service gives some descriptions about the cluster where the service is running.
timestamp represent the server's current time.
Neat encoded values for the arguments to the stmt query
Get is used to request notifications for a given path over a specified time range. Wildcards are supported with Get requests, but when given a range of time the server will resolve all wildcard paths at the starting timestamp of the given range, so any pointers and/or paths that are created after the given start timestamp will not be accounted for during wildcard resolution. The client may receive duplicate notifications.
GetAndSubscribe allows the client to issue one request to do both Get and Subscribe requests. The server will first send a mix of subscribe and get batches, and there's no distinction between which batches are subscribe or get batches. Then the server will send a sync signal signaling that the Get stream has finished. After that, server will stream out only subscribe batches. There's no order guarantee for batches received by client. The end of get stream sync signal will be in the Metadata field in the NotificationBatch, as 1 key, value pair: [GetRequest:EOF]. If there are batches returned from Get request, this metadata will be in the last Get batch; if there's no results from Get, it will be sent in an empty NotificationBatch with only the Metadata field.
(Optional) Lower bound (inclusive) of time range to retrieve, in nanoseconds since the Epoch. If `start` is set, the returned results will correspond to a time range query (from `start` to `end` or now, depending on whether `end` is set or not). If `start` is not set, this request will execute a "limit" query based on `versions`. The value 0 corresponds to an unset field.
(Optional) Maximum number of versions to retrieve. If `start` is set, this value is ignored. Otherwise, will return at most (`versions` + 1) past versions.
(Optional) Whether to return the initial state of the requested paths at time `start`. The "initial state" is the set of notifications that fully specify the state of the path at that time. It includes all relevant notifications before (and up to) `start`. If `start` is not set, this is ignored.
(Optional) Number of client instances, id of the client making the request, and sharding method for the implementation of horizontal scaling. If not set, no filtering will happen.
(Optional) Specifies wildcard expansion strategy when time range is specified. This option has no effect when time range (start/end) is not used.
DatasetsRequest
Publish is used to send notifications to Cloudvision. They will be saved into the storage and sent to all the clients subscribing to the same device/path. * Publish guarantees atomicity of the data saved per {timestamp+path+key}. For Notification => For one Notification having multiple keys, each key is ensured to be saved atomically but atomicity is not guaranteed for the entire notification. For NotificationBatch => if Notif[1] and Notif[5] both have updates for a {timestamp+path+key} either the update of Notif[1] will be saved, or the update of Notif[5] will be saved. The value will be one or the other, not a corrupted combination of both requests. * There is no guarantee for write order within a single publish request. When sending multiple notifications where multiple notification will have the same timestamp, path and keys, Publish does not guarantee that Notif[1] will be processed before Notif[5] This means that for two notifications in the same Publish call having the same {timestamp+path+key}, the result is undefined and will randomly vary (i.e. the first notif data will be saved, or the second one). The client must send two synchronous Publish requests to guarantee the write order at which the requests are processed. * Publish is asynchronous by default: When the call to Publish ends without error, it means the data has been correctly received by Cloudvision but not stored yet. So, if a "get" call is done right after the Publish call, the get might not return the data just published. When the "sync" field is set to true in PublishRequest, the Publish will be synchronous: When the call to Publish ends without error, it means the data has been correctly received AND stored by Cloudvision. So, if a "get" call is done right after the synchronous Publish call, the get will return the data just published (unless someone else stored more recent data of course). * Client-side and Server-side timestamping: The notification object has a timestamp that can be populated by the client. In case the Client sends a notification with a "null" timestamp as the Notification.timestamp field, the server will populate the timestamp with the current time of the node with the server process is running. This "current time" will be queried once at the beginning of the Publish request and will be used as the Notification.timestamp for all the notification having this field as null.
PublishRequest
The batch of notification sent to Cloudvision
Used to have a synchronous or asynchronous write to the Cloudvision storage
If provided, the batch notification will be stored only if one of the following conditions are true: a) compare.value matches the current value stored for field compare.key b) compare.value is not provided and the compare.key field does not exist in the specified dataset path The comparison and storage operations are guaranteed to occur atomically per notification, so only one notification is expected in the batch. This parameter can be encoded using EncodeNotificationUpdate or EncodeNotificationUpdateKey for conditions a) and b), respectively.
Subscribe allows the client to request a live stream of updates (V1: either based on regexp or exact match, V2: based on exact match) There is no order guarantee for batches received by subscribers. It means that two batches A and B published synchronously (B is published after A) the subscribers can receive batch A first or B second, OR batch B first and A second. This is also true for notifications within a batch. The backend can decide to split a batch and reorder notifications so subscribers might receive notifications within a batch in a different order that they were published.
SubscribeRequest defines the stream subset the client is subscribing to. V1: The filtering is done first by dataset: - if Query.Dataset.Name == "<name>" and Query.Dataset.Typ == "<type>", matching notificaitons from dataset "<type>:<name>" that are returned. - if Query.Dataset.Name == "" and Query.Dataset.Typ == "<type>", matching notifications from datasets with type "<type>" are returned. - if Query.Dataset.Name == "" and Query.Dataset.Typ == "", matching notifications from all datasets are returned. TODO: for now the above rules only work if Path.regexp_path is specified. Path.exact_path expects Query.Dataset.Name and Query.Dataset.Typ to be non-empty If a notification matches any of the rules above, next it's matched against Query.Paths. The shardedsub field contains the information relative to horizontal scaling (number of instances, ID of the subscribing instance, and dispatching method) V2: If path elements are not provided: Uses V1 logic. If path elements are provided: Notification filtering is done by queries. For each query, the dataset name and type must be non-empty. Notifications that match the query paths are streamed to the client. The sharded sub field contains information relating to horizontal scaling (i.e. number of instances, ID of the subscribing instance, and dispatching method).
Search provides methods to query CloudVision using the Search service.
for custom schema deletion This is alpha version of this api and doesn't synchronize across apiserver instances. apiserver restart is needed to get updated schema information from hbase.
you know, for search...
SearchSubscribe allows the client to request a live stream of updates based on client search request
for search with aggregation
SearchWithAggregationStream sends the protobuf-serialized form of AggrResponse as in a stream of byteArrays. Receiver needs to append the "bytearrays", and protobuf-deserialize to obtain the result. Intended for messages exceeding the grpc size limit
for custom schema configuration
Used in:
key of the bucket
count of matching document
aggr_name has name of the aggregation to which these buckets belong to this is useful when there are multiple top level aggregations Name is formed by prepending aggregation type to the field name for term aggreation with field ["a","b","c"] name would be termabc
Numeric fields in this bucket
Sub buckets within this bucket
Used in: ,
Name of the field Name is formed by prepending aggregation type to the field name. SUM for field ["a","b","c"] would be SUMabc
Field value
Used as response type in: Alpha.SearchWithAggregation, Search.SearchWithAggregation
Buckets in aggregation response
Numeric fields in aggregation response
Used in:
Type of aggregation being requested
Field on which aggregation operation needs to be applied Nested field like a.b.c needs to specified as ["a","b","c"]. It is not possible to combine fields only for aggregation operation. All the combinations need to be predecided at schema creation time only.
For sorting on aggregated outcome. Applicable only for numeric aggregation.
For specifying sub aggregation, like sum aggregation inside bucket aggregation.
Aggregation type specific additional options
Option for term aggregation
Option for histogram aggregation
Used in:
Type of bucket aggregation where different buckets are created based on field values
SUM aggregation where numeric summation is calculated on field values
AVG aggregation where numeric average is calculated on field values
MAX aggregation where numeric maximum is returned amongst the field values
MIN aggregation where numeric minimum is returned amongst the field values
histogram bucketing/aggregation on numeric field value
Used as response type in: Alpha.SearchWithAggregationStream, Search.SearchWithAggregationStream
Message is an array of bytes
Used as response type in: CertificateAuthority.Enroll, CertificateAuthority.Reenroll
Used as request type in: CertificateAuthority.Enroll, CertificateAuthority.Reenroll
Used in:
delete_after_days is requested days after which data should get deleted
inuse_delete_after_days is what is actually in use. This is guaranteed to be atleast delete_after_days. delete_after_days may get modified based on index rotation policy by Cloudvision
Used as request type in: Alpha.SetCustomSchema, Search.SetCustomSchema
Used as request type in: Alpha.DeleteCustomSchema, Search.DeleteCustomSchema
if delete_data is set, then all the data along with schema defintion is deleted. Data deletion is non recoverable operation !
Used in: , , , , , , ,
field name and filter value
Used in:
nested_field to support nested fields. a.b.c needs to specified as ["a","b","c"].
sub_filters to specify complex predicate using logical operators. Complex predicates are specified as recursive definition of filters. Different levels are used to resemble abstract syntaxt tree like structure.
Used in:
Used in:
Used in:
equal to
not equal to
greater than
greater than or equal to
less than
less than or equal to
regex
not regex
in
not in
substring (prefix substring)
wildcard query (for custom index only)
filter on bitmask bit(s) are set. Only applicable for integer fields
Logical OR operator to be used between two filters
Logical AND operator to be used between two filters
Value, normalized
Used in: ,
Used as request type in: Auth.GetPermissionSet, RouterV1.Get
V1: NOTE: Query.Path.Type = REGEXP is not supported for GetRequest.
(Optional) Lower bound (inclusive) of time range to retrieve, in nanoseconds since the Epoch. If `start` is set, the returned results will correspond to a time range query (from `start` to `end` or now, depending on whether `end` is set or not). If `start` is not set, this request will execute a "limit" query based on `versions`. The value 0 corresponds to an unset field.
(Optional) Maximum number of versions to retrieve. If `start` is set, this value is ignored. Otherwise, will return at most (`versions` + 1) past versions.
(Optional) Upper bound (inclusive) of time range to retrieve, in nanoseconds since the Epoch. The value 0 corresponds to an unset field. Defaults to the largest valid timestamp.
(Optional) Whether to return the initial state of the requested paths at time `start`. The "initial state" is the set of notifications that fully specify the state of the path at that time. It includes all relevant notifications before (and up to) `start`. If `start` is not set, this is ignored.
(Optional) Number of client instances, id of the client making the request, and sharding method for the implementation of horizontal scaling. If not set, no filtering will happen.
(Optional) Specifies wildcard expansion strategy when time range is specified. This option has no effect when time range (start/end) is not used.
Used in:
Used in:
Used in:
Timestamp in nanoseconds resolution.
Deprecated
encoded
encoded
encoded
Used in: ,
encoded
encoded
Used as response type in: Alpha.Search, Alpha.SearchSubscribe, RouterV1.Get, RouterV1.GetAndSubscribe, RouterV1.Subscribe, Search.Search, Search.SearchSubscribe
Used as field type in: ,
TODO: deprecate, for now just assume that type is "device"
Path defines a path matcher for a Query.
Used in: ,
V2: DEPRECATED
V2: DEPRECATED
Keys (V1: BSDN, V2: NEAT) can be optionally provided to narrow the set of notification keys included in the result.
PathElements (V2: NEAT) are a list of keys representing a path.
V2: DEPRECATED
Used in:
EXACT means that the "path" will be matched exactly
REGEXP means that the "path" will be treated as regexp
Used in: ,
WILDCARD_EXPAND_LEGACY falls back to default behavior
WILDCARD_EXPAND_LATEST means that only latest path pointers will be considered
WILDCARD_EXPAND_EXACT_RANGE means that path pointers satisfying given start/end will be considered
WILDCARD_EXPAND_RELAXED_RANGE means that path pointers satisfying 0 to end will be considered
Used in: , , , , ,
ReplicationState represent the level of replication we want to apply on a notification. By default there is no replication. If CACHE_REPLICATE is used then that notification will be replicated to all the other clusters connected to the one where that notification is currently published, and the caches of the components running in these clusters will be synced together. REPLICATE is like CACHE_REPLICATE but without the cache synchronization.
Used in:
Metadata, usually returned with the first response. But it could return some metadata on any subsequent response, including the last one. The message can contain partial data (for instance, columns will be only in the first answer)
Used in:
Name of the columns for the query result returned Returned only in the first response message.
Used in:
NEAT encoded values for one row
Used as request type in: Alpha.Search, Alpha.SearchSubscribe, Search.Search, Search.SearchSubscribe
Used as field type in:
A search string
The type of value that's being searched.
Filter on specific datasets and paths.
Start and end time of the notifications returned, inclusive.
Return only the number of results
Complex fields search These are applicable for CUSTOM type as well
Sort criteria
(Optional) Whether to return the initial state of the requested paths at time `start`. The "initial state" is the set of notifications that fully specify the state of the path at that time. It includes all relevant notifications before (and up to) `start`. If `start` is not set, this is ignored.
(Optional) Set NumParentShards field >= 1 to enable multi-tenant search
(Optional) whether search exact term or not, useful for string search
Total number of notification to get back in the response
Numeric offset as starting point for next page of result
cursor based pagination
Used in:
STRING means that Key/Value string fields will be searched
MAC means that Key/Value mac fields will be searched
IP means that Key/Value ip fields will be searched
COMPLEX means that a complex key or value will be searched
CUSTOM means that custom schema is used. Path prefix is mandatory in query.
Used as request type in: Alpha.SearchWithAggregation, Alpha.SearchWithAggregationStream, Search.SearchWithAggregation, Search.SearchWithAggregationStream
Search criteria within aggregation request
Aggregation clauses
SetPermissionRequest encompasses requests to create/update/delete permissions of each type. A PATH_PERMISSION must contain a set of path<->permission tuples. The INHERIT_PERMISSION only requires the @dataset and @other args. ADMIN_PERMISSION reuses @path but only looks at the @perm field of the first element. Updates require the the client to pass `oldPerm` to avoid race conditions.
Used as request type in: Auth.SetPermission
Used as field type in:
Used in:
Used in:
Used in:
Sharding contains the information for horizontal scaling of subscriptions and get requests. Multitenancy, i.e., matching notifications across multiple parent datasets, is enabled by setting numParentShards >= 1. Dataset/Path sharding must be configured orthogonally to Parent sharding. This makes it possible to map an entire org to a single client instance. Examples: {numShards = 1, numParentShards = M} => distributes notifs among M shards preserving org grouping {numShards = N, numParentShards = 1} => distributes among N shards without preserving org grouping {numShards = N, numParentShards = M} => means that there will be N*M shards in total where the notification from a single org will be sharded into N bins based on the ShardingFunction.
Used in: , , , ,
shard is the unique ID of the client instance for horizontal scaling
numShards is the number of instances of the client for horizontal scaling
shardingFunc defines which sharding function to use for horizontal scaling
parentShard is the unique ID of the client instance if multitenant is enabled
numParentShards is the number of client instances for parent dataset sharding
Used in:
DATASETANDPATH shards by the association of dataset and path
DATASET shards by dataset
PATH shards by path
Used in:
fields to support nesting. a.b.c needs to specified as ["a","b","c"].
type of sort
Used in: ,
Descending order sort
Ascending order sort
Used in:
mandatory
optional
specify bounding box beyond min/max returned from query, together with allow_empty
Used in:
Used in:
For controlling maximum number of buckets
For providing type hint
Used in: