:py:mod:`viam.proto.app.data` ============================= .. py:module:: viam.proto.app.data .. autoapi-nested-parse:: @generated by Viam. Do not edit manually! Package Contents ---------------- Classes ~~~~~~~ .. autoapisummary:: viam.proto.app.data.DataServiceBase viam.proto.app.data.DataServiceStub viam.proto.app.data.UnimplementedDataServiceBase viam.proto.app.data.AddBinaryDataToDatasetByIDsRequest viam.proto.app.data.AddBinaryDataToDatasetByIDsResponse viam.proto.app.data.AddBoundingBoxToImageByIDRequest viam.proto.app.data.AddBoundingBoxToImageByIDResponse viam.proto.app.data.AddTagsToBinaryDataByFilterRequest viam.proto.app.data.AddTagsToBinaryDataByFilterResponse viam.proto.app.data.AddTagsToBinaryDataByIDsRequest viam.proto.app.data.AddTagsToBinaryDataByIDsResponse viam.proto.app.data.Annotations viam.proto.app.data.BinaryData viam.proto.app.data.BinaryDataByFilterRequest viam.proto.app.data.BinaryDataByFilterResponse viam.proto.app.data.BinaryDataByIDsRequest viam.proto.app.data.BinaryDataByIDsResponse viam.proto.app.data.BinaryID viam.proto.app.data.BinaryMetadata viam.proto.app.data.BoundingBox viam.proto.app.data.BoundingBoxLabelsByFilterRequest viam.proto.app.data.BoundingBoxLabelsByFilterResponse viam.proto.app.data.CaptureInterval viam.proto.app.data.CaptureMetadata viam.proto.app.data.ConfigureDatabaseUserRequest viam.proto.app.data.ConfigureDatabaseUserResponse viam.proto.app.data.DataRequest viam.proto.app.data.DeleteBinaryDataByFilterRequest viam.proto.app.data.DeleteBinaryDataByFilterResponse viam.proto.app.data.DeleteBinaryDataByIDsRequest viam.proto.app.data.DeleteBinaryDataByIDsResponse viam.proto.app.data.DeleteTabularDataRequest viam.proto.app.data.DeleteTabularDataResponse viam.proto.app.data.Filter viam.proto.app.data.GetDatabaseConnectionRequest viam.proto.app.data.GetDatabaseConnectionResponse viam.proto.app.data.Order viam.proto.app.data.RemoveBinaryDataFromDatasetByIDsRequest viam.proto.app.data.RemoveBinaryDataFromDatasetByIDsResponse viam.proto.app.data.RemoveBoundingBoxFromImageByIDRequest viam.proto.app.data.RemoveBoundingBoxFromImageByIDResponse viam.proto.app.data.RemoveTagsFromBinaryDataByFilterRequest viam.proto.app.data.RemoveTagsFromBinaryDataByFilterResponse viam.proto.app.data.RemoveTagsFromBinaryDataByIDsRequest viam.proto.app.data.RemoveTagsFromBinaryDataByIDsResponse viam.proto.app.data.TabularData viam.proto.app.data.TabularDataByFilterRequest viam.proto.app.data.TabularDataByFilterResponse viam.proto.app.data.TabularDataByMQLRequest viam.proto.app.data.TabularDataByMQLResponse viam.proto.app.data.TabularDataBySQLRequest viam.proto.app.data.TabularDataBySQLResponse viam.proto.app.data.TagsByFilterRequest viam.proto.app.data.TagsByFilterResponse viam.proto.app.data.TagsFilter viam.proto.app.data.TagsFilterType .. py:class:: DataServiceBase Bases: :py:obj:`abc.ABC` Helper class that provides a standard way to create an ABC using inheritance. .. py:method:: TabularDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.TabularDataByFilterRequest, app.data.v1.data_pb2.TabularDataByFilterResponse]) -> None :abstractmethod: :async: .. py:method:: TabularDataBySQL(stream: grpclib.server.Stream[app.data.v1.data_pb2.TabularDataBySQLRequest, app.data.v1.data_pb2.TabularDataBySQLResponse]) -> None :abstractmethod: :async: .. py:method:: TabularDataByMQL(stream: grpclib.server.Stream[app.data.v1.data_pb2.TabularDataByMQLRequest, app.data.v1.data_pb2.TabularDataByMQLResponse]) -> None :abstractmethod: :async: .. py:method:: BinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.BinaryDataByFilterRequest, app.data.v1.data_pb2.BinaryDataByFilterResponse]) -> None :abstractmethod: :async: .. py:method:: BinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.BinaryDataByIDsRequest, app.data.v1.data_pb2.BinaryDataByIDsResponse]) -> None :abstractmethod: :async: .. py:method:: DeleteTabularData(stream: grpclib.server.Stream[app.data.v1.data_pb2.DeleteTabularDataRequest, app.data.v1.data_pb2.DeleteTabularDataResponse]) -> None :abstractmethod: :async: .. py:method:: DeleteBinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.DeleteBinaryDataByFilterRequest, app.data.v1.data_pb2.DeleteBinaryDataByFilterResponse]) -> None :abstractmethod: :async: .. py:method:: DeleteBinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.DeleteBinaryDataByIDsRequest, app.data.v1.data_pb2.DeleteBinaryDataByIDsResponse]) -> None :abstractmethod: :async: .. py:method:: AddTagsToBinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddTagsToBinaryDataByIDsRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByIDsResponse]) -> None :abstractmethod: :async: .. py:method:: AddTagsToBinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddTagsToBinaryDataByFilterRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByFilterResponse]) -> None :abstractmethod: :async: .. py:method:: RemoveTagsFromBinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsResponse]) -> None :abstractmethod: :async: .. py:method:: RemoveTagsFromBinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterResponse]) -> None :abstractmethod: :async: .. py:method:: TagsByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.TagsByFilterRequest, app.data.v1.data_pb2.TagsByFilterResponse]) -> None :abstractmethod: :async: .. py:method:: AddBoundingBoxToImageByID(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddBoundingBoxToImageByIDRequest, app.data.v1.data_pb2.AddBoundingBoxToImageByIDResponse]) -> None :abstractmethod: :async: .. py:method:: RemoveBoundingBoxFromImageByID(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDRequest, app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDResponse]) -> None :abstractmethod: :async: .. py:method:: BoundingBoxLabelsByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.BoundingBoxLabelsByFilterRequest, app.data.v1.data_pb2.BoundingBoxLabelsByFilterResponse]) -> None :abstractmethod: :async: .. py:method:: GetDatabaseConnection(stream: grpclib.server.Stream[app.data.v1.data_pb2.GetDatabaseConnectionRequest, app.data.v1.data_pb2.GetDatabaseConnectionResponse]) -> None :abstractmethod: :async: .. py:method:: ConfigureDatabaseUser(stream: grpclib.server.Stream[app.data.v1.data_pb2.ConfigureDatabaseUserRequest, app.data.v1.data_pb2.ConfigureDatabaseUserResponse]) -> None :abstractmethod: :async: .. py:method:: AddBinaryDataToDatasetByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsRequest, app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsResponse]) -> None :abstractmethod: :async: .. py:method:: RemoveBinaryDataFromDatasetByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse]) -> None :abstractmethod: :async: .. py:method:: __mapping__() -> Dict[str, grpclib.const.Handler] .. py:class:: DataServiceStub(channel: grpclib.client.Channel) .. py:class:: UnimplementedDataServiceBase Bases: :py:obj:`DataServiceBase` Helper class that provides a standard way to create an ABC using inheritance. .. py:method:: TabularDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.TabularDataByFilterRequest, app.data.v1.data_pb2.TabularDataByFilterResponse]) -> None :async: .. py:method:: TabularDataBySQL(stream: grpclib.server.Stream[app.data.v1.data_pb2.TabularDataBySQLRequest, app.data.v1.data_pb2.TabularDataBySQLResponse]) -> None :async: .. py:method:: TabularDataByMQL(stream: grpclib.server.Stream[app.data.v1.data_pb2.TabularDataByMQLRequest, app.data.v1.data_pb2.TabularDataByMQLResponse]) -> None :async: .. py:method:: BinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.BinaryDataByFilterRequest, app.data.v1.data_pb2.BinaryDataByFilterResponse]) -> None :async: .. py:method:: BinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.BinaryDataByIDsRequest, app.data.v1.data_pb2.BinaryDataByIDsResponse]) -> None :async: .. py:method:: DeleteTabularData(stream: grpclib.server.Stream[app.data.v1.data_pb2.DeleteTabularDataRequest, app.data.v1.data_pb2.DeleteTabularDataResponse]) -> None :async: .. py:method:: DeleteBinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.DeleteBinaryDataByFilterRequest, app.data.v1.data_pb2.DeleteBinaryDataByFilterResponse]) -> None :async: .. py:method:: DeleteBinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.DeleteBinaryDataByIDsRequest, app.data.v1.data_pb2.DeleteBinaryDataByIDsResponse]) -> None :async: .. py:method:: AddTagsToBinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddTagsToBinaryDataByIDsRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByIDsResponse]) -> None :async: .. py:method:: AddTagsToBinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddTagsToBinaryDataByFilterRequest, app.data.v1.data_pb2.AddTagsToBinaryDataByFilterResponse]) -> None :async: .. py:method:: RemoveTagsFromBinaryDataByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByIDsResponse]) -> None :async: .. py:method:: RemoveTagsFromBinaryDataByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterRequest, app.data.v1.data_pb2.RemoveTagsFromBinaryDataByFilterResponse]) -> None :async: .. py:method:: TagsByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.TagsByFilterRequest, app.data.v1.data_pb2.TagsByFilterResponse]) -> None :async: .. py:method:: AddBoundingBoxToImageByID(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddBoundingBoxToImageByIDRequest, app.data.v1.data_pb2.AddBoundingBoxToImageByIDResponse]) -> None :async: .. py:method:: RemoveBoundingBoxFromImageByID(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDRequest, app.data.v1.data_pb2.RemoveBoundingBoxFromImageByIDResponse]) -> None :async: .. py:method:: BoundingBoxLabelsByFilter(stream: grpclib.server.Stream[app.data.v1.data_pb2.BoundingBoxLabelsByFilterRequest, app.data.v1.data_pb2.BoundingBoxLabelsByFilterResponse]) -> None :async: .. py:method:: GetDatabaseConnection(stream: grpclib.server.Stream[app.data.v1.data_pb2.GetDatabaseConnectionRequest, app.data.v1.data_pb2.GetDatabaseConnectionResponse]) -> None :async: .. py:method:: ConfigureDatabaseUser(stream: grpclib.server.Stream[app.data.v1.data_pb2.ConfigureDatabaseUserRequest, app.data.v1.data_pb2.ConfigureDatabaseUserResponse]) -> None :async: .. py:method:: AddBinaryDataToDatasetByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsRequest, app.data.v1.data_pb2.AddBinaryDataToDatasetByIDsResponse]) -> None :async: .. py:method:: RemoveBinaryDataFromDatasetByIDs(stream: grpclib.server.Stream[app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsRequest, app.data.v1.data_pb2.RemoveBinaryDataFromDatasetByIDsResponse]) -> None :async: .. py:class:: AddBinaryDataToDatasetByIDsRequest(*, binary_ids: collections.abc.Iterable[global___BinaryID] | None = ..., dataset_id: str = ...) Bases: :py:obj:`google.protobuf.message.Message` AddBinaryDataToDatasetByIDsRequest adds the binary data with the given binary IDs to a dataset with dataset_id. .. py:property:: binary_ids :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID] .. py:attribute:: dataset_id :type: str .. py:class:: AddBinaryDataToDatasetByIDsResponse Bases: :py:obj:`google.protobuf.message.Message` Abstract base class for protocol messages. Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below. .. py:class:: AddBoundingBoxToImageByIDRequest(*, binary_id: global___BinaryID | None = ..., label: str = ..., x_min_normalized: float = ..., y_min_normalized: float = ..., x_max_normalized: float = ..., y_max_normalized: float = ...) Bases: :py:obj:`google.protobuf.message.Message` AddBoundingBoxToImageByIDRequest specifies the binary ID to which a bounding box with the associated label and position in normalized coordinates will be added. .. py:property:: binary_id :type: global___BinaryID .. py:attribute:: label :type: str .. py:attribute:: x_min_normalized :type: float .. py:attribute:: y_min_normalized :type: float .. py:attribute:: x_max_normalized :type: float .. py:attribute:: y_max_normalized :type: float .. py:method:: HasField(field_name: Literal[binary_id, b'binary_id']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: AddBoundingBoxToImageByIDResponse(*, bbox_id: str = ...) Bases: :py:obj:`google.protobuf.message.Message` AddBoundingBoxToImageByIDResponse returns the bounding box ID of the successfully added bounding box. .. py:attribute:: bbox_id :type: str .. py:class:: AddTagsToBinaryDataByFilterRequest(*, filter: global___Filter | None = ..., tags: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` AddTagsToBinaryDataByFilterRequest requests adding all specified tags to each of the files when a filter is provided. .. py:property:: filter :type: global___Filter .. py:property:: tags :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:method:: HasField(field_name: Literal[filter, b'filter']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: AddTagsToBinaryDataByFilterResponse Bases: :py:obj:`google.protobuf.message.Message` Abstract base class for protocol messages. Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below. .. py:class:: AddTagsToBinaryDataByIDsRequest(*, binary_ids: collections.abc.Iterable[global___BinaryID] | None = ..., tags: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` AddTagsToBinaryDataByIDsRequest requests adding all specified tags to each of the files when binary ids are provided. .. py:property:: binary_ids :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID] .. py:property:: tags :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:class:: AddTagsToBinaryDataByIDsResponse Bases: :py:obj:`google.protobuf.message.Message` Abstract base class for protocol messages. Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below. .. py:class:: Annotations(*, bboxes: collections.abc.Iterable[global___BoundingBox] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` Annotations are data annotations used for machine learning. .. py:property:: bboxes :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BoundingBox] .. py:class:: BinaryData(*, binary: bytes = ..., metadata: global___BinaryMetadata | None = ...) Bases: :py:obj:`google.protobuf.message.Message` BinaryData contains data and metadata associated with binary data. .. py:property:: metadata :type: global___BinaryMetadata .. py:attribute:: binary :type: bytes .. py:method:: HasField(field_name: Literal[metadata, b'metadata']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: BinaryDataByFilterRequest(*, data_request: global___DataRequest | None = ..., include_binary: bool = ..., count_only: bool = ..., include_internal_data: bool = ...) Bases: :py:obj:`google.protobuf.message.Message` BinaryDataByFilterRequest requests the data and metadata of binary (image + file) data when a filter is provided. .. py:property:: data_request :type: global___DataRequest .. py:attribute:: include_binary :type: bool .. py:attribute:: count_only :type: bool .. py:attribute:: include_internal_data :type: bool .. py:method:: HasField(field_name: Literal[data_request, b'data_request']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: BinaryDataByFilterResponse(*, data: collections.abc.Iterable[global___BinaryData] | None = ..., count: int = ..., last: str = ..., total_size_bytes: int = ...) Bases: :py:obj:`google.protobuf.message.Message` BinaryDataByFilterResponse provides the data and metadata of binary (image + file) data when a filter is provided. .. py:property:: data :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryData] .. py:attribute:: count :type: int .. py:attribute:: last :type: str .. py:attribute:: total_size_bytes :type: int .. py:class:: BinaryDataByIDsRequest(*, include_binary: bool = ..., binary_ids: collections.abc.Iterable[global___BinaryID] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` BinaryDataByFilterRequest requests the data and metadata of binary (image + file) data by binary ids. .. py:property:: binary_ids :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID] .. py:attribute:: include_binary :type: bool .. py:class:: BinaryDataByIDsResponse(*, data: collections.abc.Iterable[global___BinaryData] | None = ..., count: int = ...) Bases: :py:obj:`google.protobuf.message.Message` BinaryDataByIDsResponse provides the data and metadata of binary (image + file) data when a filter is provided. .. py:property:: data :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryData] .. py:attribute:: count :type: int .. py:class:: BinaryID(*, file_id: str = ..., organization_id: str = ..., location_id: str = ...) Bases: :py:obj:`google.protobuf.message.Message` BinaryID is the unique identifier for a file that one can request to be retrieved or modified. .. py:attribute:: file_id :type: str .. py:attribute:: organization_id :type: str .. py:attribute:: location_id :type: str .. py:class:: BinaryMetadata(*, id: str = ..., capture_metadata: global___CaptureMetadata | None = ..., time_requested: google.protobuf.timestamp_pb2.Timestamp | None = ..., time_received: google.protobuf.timestamp_pb2.Timestamp | None = ..., file_name: str = ..., file_ext: str = ..., uri: str = ..., annotations: global___Annotations | None = ..., dataset_ids: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` BinaryMetadata is the metadata associated with binary data. .. py:property:: capture_metadata :type: global___CaptureMetadata .. py:property:: time_requested :type: google.protobuf.timestamp_pb2.Timestamp .. py:property:: time_received :type: google.protobuf.timestamp_pb2.Timestamp .. py:property:: annotations :type: global___Annotations .. py:property:: dataset_ids :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:attribute:: id :type: str .. py:attribute:: file_name :type: str .. py:attribute:: file_ext :type: str .. py:attribute:: uri :type: str .. py:method:: HasField(field_name: Literal[annotations, b'annotations', capture_metadata, b'capture_metadata', time_received, b'time_received', time_requested, b'time_requested']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: BoundingBox(*, id: str = ..., label: str = ..., x_min_normalized: float = ..., y_min_normalized: float = ..., x_max_normalized: float = ..., y_max_normalized: float = ...) Bases: :py:obj:`google.protobuf.message.Message` BoundingBox represents a labeled bounding box on an image. x and y values are normalized ratios between 0 and 1. .. py:attribute:: id :type: str .. py:attribute:: label :type: str .. py:attribute:: x_min_normalized :type: float .. py:attribute:: y_min_normalized :type: float .. py:attribute:: x_max_normalized :type: float .. py:attribute:: y_max_normalized :type: float .. py:class:: BoundingBoxLabelsByFilterRequest(*, filter: global___Filter | None = ...) Bases: :py:obj:`google.protobuf.message.Message` BoundingBoxLabelsByFilterRequest requests all the labels of the bounding boxes from files from a given filter. .. py:property:: filter :type: global___Filter .. py:method:: HasField(field_name: Literal[filter, b'filter']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: BoundingBoxLabelsByFilterResponse(*, labels: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` BoundingBoxLabelsByFilterRequest returns all the labels of the bounding boxes from files from a given filter. .. py:property:: labels :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:class:: CaptureInterval(*, start: google.protobuf.timestamp_pb2.Timestamp | None = ..., end: google.protobuf.timestamp_pb2.Timestamp | None = ...) Bases: :py:obj:`google.protobuf.message.Message` CaptureInterval describes the start and end time of the capture in this file. .. py:property:: start :type: google.protobuf.timestamp_pb2.Timestamp .. py:property:: end :type: google.protobuf.timestamp_pb2.Timestamp .. py:method:: HasField(field_name: Literal[end, b'end', start, b'start']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: CaptureMetadata(*, organization_id: str = ..., location_id: str = ..., robot_name: str = ..., robot_id: str = ..., part_name: str = ..., part_id: str = ..., component_type: str = ..., component_name: str = ..., method_name: str = ..., method_parameters: collections.abc.Mapping[str, google.protobuf.any_pb2.Any] | None = ..., tags: collections.abc.Iterable[str] | None = ..., mime_type: str = ...) Bases: :py:obj:`google.protobuf.message.Message` CaptureMetadata contains information on the settings used for the data capture. .. py:class:: MethodParametersEntry(*, key: str = ..., value: google.protobuf.any_pb2.Any | None = ...) Bases: :py:obj:`google.protobuf.message.Message` Abstract base class for protocol messages. Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below. .. py:property:: value :type: google.protobuf.any_pb2.Any .. py:attribute:: key :type: str .. py:method:: HasField(field_name: Literal[value, b'value']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:property:: method_parameters :type: google.protobuf.internal.containers.MessageMap[str, google.protobuf.any_pb2.Any] .. py:property:: tags :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:attribute:: organization_id :type: str .. py:attribute:: location_id :type: str .. py:attribute:: robot_name :type: str .. py:attribute:: robot_id :type: str .. py:attribute:: part_name :type: str .. py:attribute:: part_id :type: str .. py:attribute:: component_type :type: str .. py:attribute:: component_name :type: str .. py:attribute:: method_name :type: str .. py:attribute:: mime_type :type: str .. py:class:: ConfigureDatabaseUserRequest(*, organization_id: str = ..., password: str = ...) Bases: :py:obj:`google.protobuf.message.Message` ConfigureDatabaseUserRequest accepts a Viam organization ID and a password for the database user being configured. Viam uses gRPC over TLS, so the entire request will be encrypted while in flight, including the password. .. py:attribute:: organization_id :type: str .. py:attribute:: password :type: str .. py:class:: ConfigureDatabaseUserResponse Bases: :py:obj:`google.protobuf.message.Message` Abstract base class for protocol messages. Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below. .. py:class:: DataRequest(*, filter: global___Filter | None = ..., limit: int = ..., last: str = ..., sort_order: global___Order = ...) Bases: :py:obj:`google.protobuf.message.Message` DataRequest encapsulates the filter for the data, a limit on the maximum results returned, a last string associated with the last returned document, and the sorting order by time. last is returned in the responses TabularDataByFilterResponse and BinaryDataByFilterResponse from the API calls TabularDataByFilter and BinaryDataByFilter, respectively. We can then use the last string from the previous API calls in the subsequent request to get the next set of ordered documents. .. py:property:: filter :type: global___Filter .. py:attribute:: limit :type: int .. py:attribute:: last :type: str .. py:attribute:: sort_order :type: global___Order .. py:method:: HasField(field_name: Literal[filter, b'filter']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: DeleteBinaryDataByFilterRequest(*, filter: global___Filter | None = ..., include_internal_data: bool = ...) Bases: :py:obj:`google.protobuf.message.Message` DeleteBinaryDataByFilterRequest deletes the data and metadata of binary data when a filter is provided. .. py:property:: filter :type: global___Filter .. py:attribute:: include_internal_data :type: bool .. py:method:: HasField(field_name: Literal[filter, b'filter']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: DeleteBinaryDataByFilterResponse(*, deleted_count: int = ...) Bases: :py:obj:`google.protobuf.message.Message` DeleteBinaryDataByFilterResponse returns the number of binary files deleted when a filter is provided. .. py:attribute:: deleted_count :type: int .. py:class:: DeleteBinaryDataByIDsRequest(*, binary_ids: collections.abc.Iterable[global___BinaryID] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` DeleteBinaryDataByIDsRequest deletes the data and metadata of binary data when binary ids are provided. .. py:property:: binary_ids :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID] .. py:class:: DeleteBinaryDataByIDsResponse(*, deleted_count: int = ...) Bases: :py:obj:`google.protobuf.message.Message` DeleteBinaryDataByIDsResponse returns the number of binary files deleted when binary ids are provided. .. py:attribute:: deleted_count :type: int .. py:class:: DeleteTabularDataRequest(*, organization_id: str = ..., delete_older_than_days: int = ...) Bases: :py:obj:`google.protobuf.message.Message` DeleteTabularDataRequest deletes the data from the organization that is older than `delete_older_than_days`. For example if `delete_older_than_days` is 10, this deletes any data that was captured up to 10 days ago. If it is 0, all existing data is deleted. .. py:attribute:: organization_id :type: str .. py:attribute:: delete_older_than_days :type: int .. py:class:: DeleteTabularDataResponse(*, deleted_count: int = ...) Bases: :py:obj:`google.protobuf.message.Message` DeleteBinaryDataResponse returns the number of tabular datapoints deleted. .. py:attribute:: deleted_count :type: int .. py:class:: Filter(*, component_name: str = ..., component_type: str = ..., method: str = ..., robot_name: str = ..., robot_id: str = ..., part_name: str = ..., part_id: str = ..., location_ids: collections.abc.Iterable[str] | None = ..., organization_ids: collections.abc.Iterable[str] | None = ..., mime_type: collections.abc.Iterable[str] | None = ..., interval: global___CaptureInterval | None = ..., tags_filter: global___TagsFilter | None = ..., bbox_labels: collections.abc.Iterable[str] | None = ..., dataset_id: str = ...) Bases: :py:obj:`google.protobuf.message.Message` Filter defines the fields over which we can filter data using a logic AND. For example, if component_type and robot_id are specified, only data from that `robot_id` of type `component_type` is returned. However, we logical OR over the specified tags and bounding box labels, such that if component_type, robot_id, tagA, tagB are specified, we return data from that `robot_id` of type `component_type` with `tagA` or `tagB`. .. py:property:: location_ids :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:property:: organization_ids :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:property:: mime_type :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:property:: interval :type: global___CaptureInterval .. py:property:: tags_filter :type: global___TagsFilter .. py:property:: bbox_labels :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] bbox_labels are used to match documents with the specified bounding box labels (using logical OR). .. py:attribute:: component_name :type: str .. py:attribute:: component_type :type: str .. py:attribute:: method :type: str .. py:attribute:: robot_name :type: str .. py:attribute:: robot_id :type: str .. py:attribute:: part_name :type: str .. py:attribute:: part_id :type: str .. py:attribute:: dataset_id :type: str .. py:method:: HasField(field_name: Literal[interval, b'interval', tags_filter, b'tags_filter']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: GetDatabaseConnectionRequest(*, organization_id: str = ...) Bases: :py:obj:`google.protobuf.message.Message` GetDatabaseConnectionRequest requests the database connection hostname. .. py:attribute:: organization_id :type: str .. py:class:: GetDatabaseConnectionResponse(*, hostname: str = ..., mongodb_uri: str = ..., has_database_user: bool = ...) Bases: :py:obj:`google.protobuf.message.Message` GetDatabaseConnectionResponse returns the database connection hostname endpoint. It also returns a URI that can be used to connect to the database instance through MongoDB clients, as well as information on whether the Viam organization has a database user configured. .. py:attribute:: hostname :type: str .. py:attribute:: mongodb_uri :type: str .. py:attribute:: has_database_user :type: bool .. py:class:: Order Bases: :py:obj:`_Order` Order specifies the order in which data is returned. .. py:class:: RemoveBinaryDataFromDatasetByIDsRequest(*, binary_ids: collections.abc.Iterable[global___BinaryID] | None = ..., dataset_id: str = ...) Bases: :py:obj:`google.protobuf.message.Message` RemoveBinaryDataFromDatasetByIDsRequest removes the specified binary IDs from a dataset with dataset_id. .. py:property:: binary_ids :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID] .. py:attribute:: dataset_id :type: str .. py:class:: RemoveBinaryDataFromDatasetByIDsResponse Bases: :py:obj:`google.protobuf.message.Message` Abstract base class for protocol messages. Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below. .. py:class:: RemoveBoundingBoxFromImageByIDRequest(*, binary_id: global___BinaryID | None = ..., bbox_id: str = ...) Bases: :py:obj:`google.protobuf.message.Message` RemoveBoundingBoxFromImageByIDRequest removes the bounding box with specified bbox ID for the file represented by the binary id. .. py:property:: binary_id :type: global___BinaryID .. py:attribute:: bbox_id :type: str .. py:method:: HasField(field_name: Literal[binary_id, b'binary_id']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: RemoveBoundingBoxFromImageByIDResponse Bases: :py:obj:`google.protobuf.message.Message` Abstract base class for protocol messages. Protocol message classes are almost always generated by the protocol compiler. These generated types subclass Message and implement the methods shown below. .. py:class:: RemoveTagsFromBinaryDataByFilterRequest(*, filter: global___Filter | None = ..., tags: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` RemoveTagsFromBinaryDataByFilterRequest requests removing the given tags value from each file when a filter is provided. .. py:property:: filter :type: global___Filter .. py:property:: tags :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:method:: HasField(field_name: Literal[filter, b'filter']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: RemoveTagsFromBinaryDataByFilterResponse(*, deleted_count: int = ...) Bases: :py:obj:`google.protobuf.message.Message` RemoveTagsFromBinaryDataByFilterResponse returns the number of binary files which had tags removed. .. py:attribute:: deleted_count :type: int .. py:class:: RemoveTagsFromBinaryDataByIDsRequest(*, binary_ids: collections.abc.Iterable[global___BinaryID] | None = ..., tags: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` RemoveTagsFromBinaryDataByIDsRequest requests removing the given tags value from each file when binary ids are provided. .. py:property:: binary_ids :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___BinaryID] .. py:property:: tags :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:class:: RemoveTagsFromBinaryDataByIDsResponse(*, deleted_count: int = ...) Bases: :py:obj:`google.protobuf.message.Message` RemoveTagsFromBinaryDataByIDsResponse returns the number of binary files which had tags removed .. py:attribute:: deleted_count :type: int .. py:class:: TabularData(*, data: google.protobuf.struct_pb2.Struct | None = ..., metadata_index: int = ..., time_requested: google.protobuf.timestamp_pb2.Timestamp | None = ..., time_received: google.protobuf.timestamp_pb2.Timestamp | None = ...) Bases: :py:obj:`google.protobuf.message.Message` TabularData contains data and metadata associated with tabular data. .. py:property:: data :type: google.protobuf.struct_pb2.Struct .. py:property:: time_requested :type: google.protobuf.timestamp_pb2.Timestamp .. py:property:: time_received :type: google.protobuf.timestamp_pb2.Timestamp .. py:attribute:: metadata_index :type: int .. py:method:: HasField(field_name: Literal[data, b'data', time_received, b'time_received', time_requested, b'time_requested']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: TabularDataByFilterRequest(*, data_request: global___DataRequest | None = ..., count_only: bool = ..., include_internal_data: bool = ...) Bases: :py:obj:`google.protobuf.message.Message` TabularDataByFilterRequest requests tabular data based on filter values. .. py:property:: data_request :type: global___DataRequest .. py:attribute:: count_only :type: bool .. py:attribute:: include_internal_data :type: bool .. py:method:: HasField(field_name: Literal[data_request, b'data_request']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: TabularDataByFilterResponse(*, metadata: collections.abc.Iterable[global___CaptureMetadata] | None = ..., data: collections.abc.Iterable[global___TabularData] | None = ..., count: int = ..., last: str = ..., total_size_bytes: int = ...) Bases: :py:obj:`google.protobuf.message.Message` TabularDataByFilterResponse provides the data and metadata of tabular data. .. py:property:: metadata :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___CaptureMetadata] .. py:property:: data :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TabularData] .. py:attribute:: count :type: int .. py:attribute:: last :type: str .. py:attribute:: total_size_bytes :type: int .. py:class:: TabularDataByMQLRequest(*, organization_id: str = ..., mql_binary: collections.abc.Iterable[bytes] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` TabularDataByMQLRequest requests tabular data using an MQL query. .. py:property:: mql_binary :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[bytes] mql_binary accepts a MongoDB aggregation pipeline as a list of BSON documents, where each document is one stage in the pipeline. The pipeline is run on the "sensorData.readings" namespace, which holds the Viam organization's tabular data. .. py:attribute:: organization_id :type: str .. py:class:: TabularDataByMQLResponse(*, data: collections.abc.Iterable[google.protobuf.struct_pb2.Struct] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` TabularDataByMQLResponse provides unified tabular data and metadata, queried with MQL. .. py:property:: data :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[google.protobuf.struct_pb2.Struct] .. py:class:: TabularDataBySQLRequest(*, organization_id: str = ..., sql_query: str = ...) Bases: :py:obj:`google.protobuf.message.Message` TabularDataBySQLRequest requests tabular data using a SQL query. .. py:attribute:: organization_id :type: str .. py:attribute:: sql_query :type: str sql_query accepts any valid SQL SELECT statement. Tabular data is held in a database called "sensorData" and a table called readings, so queries should select from "readings" or "sensorData.readings". .. py:class:: TabularDataBySQLResponse(*, data: collections.abc.Iterable[google.protobuf.struct_pb2.Struct] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` TabularDataBySQLResponse provides unified tabular data and metadata, queried with SQL. .. py:property:: data :type: google.protobuf.internal.containers.RepeatedCompositeFieldContainer[google.protobuf.struct_pb2.Struct] .. py:class:: TagsByFilterRequest(*, filter: global___Filter | None = ...) Bases: :py:obj:`google.protobuf.message.Message` TagsByFilterRequest requests the unique tags from data based on given filter. .. py:property:: filter :type: global___Filter .. py:method:: HasField(field_name: Literal[filter, b'filter']) -> bool Checks if a certain field is set for the message. For a oneof group, checks if any field inside is set. Note that if the field_name is not defined in the message descriptor, :exc:`ValueError` will be raised. :param field_name: The name of the field to check for presence. :type field_name: str :returns: Whether a value has been set for the named field. :rtype: bool :raises ValueError: if the `field_name` is not a member of this message. .. py:class:: TagsByFilterResponse(*, tags: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` TagsByFilterResponse returns the unique tags from data based on given filter. .. py:property:: tags :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] .. py:class:: TagsFilter(*, type: global___TagsFilterType = ..., tags: collections.abc.Iterable[str] | None = ...) Bases: :py:obj:`google.protobuf.message.Message` TagsFilter defines the type of filtering and, if applicable, over which tags to perform a logical OR. .. py:property:: tags :type: google.protobuf.internal.containers.RepeatedScalarFieldContainer[str] Tags are used to match documents if `type` is UNSPECIFIED or MATCH_BY_OR. .. py:attribute:: type :type: global___TagsFilterType .. py:class:: TagsFilterType Bases: :py:obj:`_TagsFilterType` TagsFilterType specifies how data can be filtered based on tags.