Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DOCS-2544: Add backlinks to docs #235

Merged
merged 3 commits into from
Jul 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 140 additions & 0 deletions lib/src/app/app.dart

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions lib/src/app/billing.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,40 @@ import 'package:viam_sdk/protos/app/billing.dart';
/// gRPC client for connecting to Viam's Billing Service
///
/// All calls must be authenticated.
///
/// For more information, see [Billing Client API](https://docs.viam.com/appendix/apis/billing-client/).
class BillingClient {
final BillingServiceClient _client;

BillingClient(this._client);

/// Get a detailed breakdown of current month's costs
///
/// For more information, see [Billing Client API](https://docs.viam.com/appendix/apis/billing-client/).
Future<GetCurrentMonthUsageResponse> getCurrentMonthUsage(String orgId) async {
final request = GetCurrentMonthUsageRequest()..orgId = orgId;
return await _client.getCurrentMonthUsage(request);
}

/// Org-level information (like billing email and payment details)
///
/// For more information, see [Billing Client API](https://docs.viam.com/appendix/apis/billing-client/).
Future<GetOrgBillingInformationResponse> getOrgBillingInformation(String orgId) async {
final request = GetOrgBillingInformationRequest()..orgId = orgId;
return await _client.getOrgBillingInformation(request);
}

/// Total outstanding balance and previous invoices
///
/// For more information, see [Billing Client API](https://docs.viam.com/appendix/apis/billing-client/).
Future<GetInvoicesSummaryResponse> getInvoicesSummary(String orgId) async {
final request = GetInvoicesSummaryRequest()..orgId = orgId;
return await _client.getInvoicesSummary(request);
}

/// Download a PDF invoice
///
/// For more information, see [Billing Client API](https://docs.viam.com/appendix/apis/billing-client/).
Stream<List<int>> getInvoicePdf(String orgId, String id) {
final request = GetInvoicePdfRequest()
..id = id
Expand Down
62 changes: 62 additions & 0 deletions lib/src/app/data.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ typedef DatabaseConnection = GetDatabaseConnectionResponse;
/// gRPC client used for retrieving, uploading, and modifying stored data from app.viam.com.
///
/// All calls must be authenticated.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
class DataClient {
final DataServiceClient _dataClient;
final DataSyncServiceClient _dataSyncClient;
Expand All @@ -43,6 +45,8 @@ class DataClient {

/// Filter and download tabular data. The data will be paginated into pages of `limit` items, and the last ID will be included in
/// the returned response.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<TabularDataByFilterResponse> tabularDataByFilter(
{Filter? filter, int? limit, Order? sortOrder, String? last, countOnly = false}) async {
final dataRequest = _makeDataRequest(filter, limit, last, sortOrder);
Expand All @@ -54,6 +58,8 @@ class DataClient {

/// Filter and download binary data. The data will be paginated into pages of `limit` items, and the last ID will be included in the
/// returned response.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<BinaryDataByFilterResponse> binaryDataByFilter(
{Filter? filter, int? limit, Order? sortOrder, String? last, countOnly = false}) async {
final dataRequest = _makeDataRequest(filter, limit, last, sortOrder);
Expand All @@ -64,13 +70,17 @@ class DataClient {
}

/// Retrieve binary data by IDs
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<List<BinaryData>> binaryDataByIds(List<BinaryID> binaryIds) async {
final request = BinaryDataByIDsRequest()..binaryIds.addAll(binaryIds);
final response = await _dataClient.binaryDataByIDs(request);
return response.data;
}

/// Obtain unified tabular data and metadata, queried with SQL.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<List<Map<String, dynamic>>> tabularDataBySql(String organizationId, String query) async {
final request = TabularDataBySQLRequest()
..organizationId = organizationId
Expand All @@ -80,6 +90,8 @@ class DataClient {
}

/// Obtain unified tabular data and metadata, queried with MQL.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<List<Map<String, dynamic>>> tabularDataByMql(String organizationId, List<Uint8List> query) async {
final request = TabularDataByMQLRequest()
..organizationId = organizationId
Expand All @@ -91,6 +103,8 @@ class DataClient {
/// Delete tabular data older than a provided number of days from an organization.
///
/// Returns the number of pieces of data that were deleted.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<int> deleteTabularData(String organizationId, int olderThanDays) async {
final request = DeleteTabularDataRequest()
..organizationId = organizationId
Expand All @@ -103,6 +117,8 @@ class DataClient {
/// If a [filter] is not provided, all data will be deleted.
///
/// Returns the number of pieces of data that were deleted.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<int> deleteBinaryDataByFilter(Filter? filter, {bool includeInternalData = false}) async {
final request = DeleteBinaryDataByFilterRequest()
..includeInternalData = includeInternalData
Expand All @@ -114,13 +130,17 @@ class DataClient {
/// Delete binary data based on data ID.
///
/// Returns the number of pieces of data that were deleted.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<int> deleteBinaryDataByIds(List<BinaryID> binaryIds) async {
final request = DeleteBinaryDataByIDsRequest()..binaryIds.addAll(binaryIds);
final response = await _dataClient.deleteBinaryDataByIDs(request);
return response.deletedCount.toInt();
}

/// Adds tags to binary data based on IDs.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> addTagsToBinaryDataByIds(List<String> tags, List<BinaryID> binaryIds) async {
final request = AddTagsToBinaryDataByIDsRequest()
..tags.addAll(tags)
Expand All @@ -130,6 +150,8 @@ class DataClient {

/// Adds tags to binary data based on a filter.
/// If no [filter] is provided, all binary data will be tagged.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> addTagsToBinaryDataByFilter(List<String> tags, Filter? filter) async {
final request = AddTagsToBinaryDataByFilterRequest()
..tags.addAll(tags)
Expand All @@ -141,6 +163,8 @@ class DataClient {
/// If a [filter] is not provided, the tags will be removed from all data.
///
/// Returns the number of tags deleted.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<int> removeTagsFromBinaryDataByFilter(List<String> tags, Filter? filter) async {
final request = RemoveTagsFromBinaryDataByFilterRequest()
..tags.addAll(tags)
Expand All @@ -152,6 +176,8 @@ class DataClient {
/// Remove tags from binary data based on IDs.
///
/// Returns the number of tags deleted.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<int> removeTagsFromBinaryDataByIds(List<String> tags, List<BinaryID> binaryIds) async {
final request = RemoveTagsFromBinaryDataByIDsRequest()
..tags.addAll(tags)
Expand All @@ -163,6 +189,8 @@ class DataClient {
/// Add a bounding box to an image by ID, with x and y coordinates normalized from 0 to 1.
///
/// Returns the bounding box ID.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<String> addBoundingBoxToImageById(
String label, BinaryID binaryId, double xMinNormalized, double yMinNormalized, double xMaxNormalized, double yMaxNormalized) async {
final request = AddBoundingBoxToImageByIDRequest()
Expand All @@ -177,6 +205,8 @@ class DataClient {
}

/// Removes a bounding box from an image based on bbox ID and image ID.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> removeBoundingBoxFromImageById(String bboxId, BinaryID binaryId) async {
final request = RemoveBoundingBoxFromImageByIDRequest()
..bboxId = bboxId
Expand All @@ -186,6 +216,8 @@ class DataClient {

/// Returns a list of tags based on a filter.
/// If no [filter] is provided, all tags will be returned.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<List<String>> tagsByFilter(Filter? filter) async {
final request = TagsByFilterRequest()..filter = filter ?? Filter();
final response = await _dataClient.tagsByFilter(request);
Expand All @@ -194,19 +226,25 @@ class DataClient {

/// Returns a list of bounding box labels based on a filter.
/// If no [filter] is provided, all labels will be returned.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<List<String>> boundingBoxLabelsByFilter(Filter? filter) async {
final request = BoundingBoxLabelsByFilterRequest()..filter = filter ?? Filter();
final response = await _dataClient.boundingBoxLabelsByFilter(request);
return response.labels;
}

/// Returns a database connection to access a MongoDB Atlas Data Federation instance.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<DatabaseConnection> getDatabaseConnection(String organizationId) async {
final request = GetDatabaseConnectionRequest()..organizationId = organizationId;
return await _dataClient.getDatabaseConnection(request);
}

/// Configures a database user for Viam's MongoDB Atlas Data Federation instance.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> configureDatabaseUser(String organizationId, String password) async {
final request = ConfigureDatabaseUserRequest()
..password = password
Expand All @@ -215,6 +253,8 @@ class DataClient {
}

/// Adds binary data to a dataset based on IDs.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> addBinaryDataToDatasetByIds(List<BinaryID> binaryIds, String datasetId) async {
final request = AddBinaryDataToDatasetByIDsRequest()
..binaryIds.addAll(binaryIds)
Expand All @@ -223,6 +263,8 @@ class DataClient {
}

/// Removes binary data from a dataset based on IDs.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> removeBinaryDataFromDatasetByIds(List<BinaryID> binaryIds, String datasetId) async {
final request = RemoveBinaryDataFromDatasetByIDsRequest()
..binaryIds.addAll(binaryIds)
Expand All @@ -233,6 +275,8 @@ class DataClient {
/// Upload an image to Viam's Data Manager
///
/// If no name is provided, the current timestamp will be used as the filename.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<String> uploadImage(ViamImage image, String partId,
{String? fileName,
String? componentType,
Expand Down Expand Up @@ -263,6 +307,8 @@ class DataClient {
/// Upload a file from its path to Viam's Data Manager
///
/// The file name can be overridden by providing the [fileName] parameter.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<String> uploadFile(String path, String partId,
{String? fileName,
String? componentType,
Expand Down Expand Up @@ -307,6 +353,8 @@ class DataClient {
/// Upload binary sensor data to Viam's Data Manager
///
/// Returns the data's file ID.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<String> binaryDataCaptureUpload(List<int> binaryData, String partId, String fileExtension,
{String? componentType,
String? componentName,
Expand Down Expand Up @@ -349,6 +397,8 @@ class DataClient {
/// Upload tabular sensor data to Viam's Data Manager
///
/// Returns the data's file ID.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<String> tabularDataCaptureUpload(List<Map<String, dynamic>> tabularData, String partId,
{String? componentType,
String? componentName,
Expand Down Expand Up @@ -392,6 +442,8 @@ class DataClient {
/// Uploads the metadata and contents of streaming binary data
///
/// Returns the data's file ID.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<String> streamingDataCaptureUpload(List<int> bytes, String partId, String fileExtension,
{String? componentType,
String? componentName,
Expand Down Expand Up @@ -433,6 +485,8 @@ class DataClient {
}

/// Creates a new dataset, returning the new dataset's ID.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<String> createDataset(String orgId, String name) async {
final request = CreateDatasetRequest()
..organizationId = orgId
Expand All @@ -442,12 +496,16 @@ class DataClient {
}

/// Deletes a dataset.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> deleteDataset(String id) async {
final request = DeleteDatasetRequest()..id = id;
await _datasetClient.deleteDataset(request);
}

/// Renames a dataset by ID.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<void> renameDataset(String id, String name) async {
final request = RenameDatasetRequest()
..id = id
Expand All @@ -456,13 +514,17 @@ class DataClient {
}

/// Returns a list of datasets within a given organization.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<List<Dataset>> listDatasetsByOrganizationID(String orgId) async {
final request = ListDatasetsByOrganizationIDRequest()..organizationId = orgId;
final response = await _datasetClient.listDatasetsByOrganizationID(request);
return response.datasets;
}

/// Looks up and returns a list of datasets by their IDs.
///
/// For more information, see [Data Client API](https://docs.viam.com/appendix/apis/data-client/).
Future<List<Dataset>> listDatasetsByIDs(List<String> ids) async {
final request = ListDatasetsByIDsRequest()..ids.addAll(ids);
final response = await _datasetClient.listDatasetsByIDs(request);
Expand Down
14 changes: 14 additions & 0 deletions lib/src/app/ml_training.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import 'package:viam_sdk/protos/app/ml_training.dart';
/// gRPC client used for working with ML training jobs.
///
/// All calls must be authenticated.
///
/// For more information, see [ML Training Client API](https://docs.viam.com/appendix/apis/ml-training-client/).
class MLTrainingClient {
final MLTrainingServiceClient _mlTrainingClient;

Expand All @@ -11,6 +13,8 @@ class MLTrainingClient {
/// Submits a training job request.
///
/// Returns the new job's ID.
///
/// For more information, see [ML Training Client API](https://docs.viam.com/appendix/apis/ml-training-client/).
Future<String> submitTrainingJob(
String orgId, String datasetId, String modelName, String modelVersion, ModelType modelType, List<String> tags) async {
final request = SubmitTrainingJobRequest()
Expand All @@ -27,6 +31,8 @@ class MLTrainingClient {
/// Submits a custom training job request.
///
/// Returns the new job's ID.
///
/// For more information, see [ML Training Client API](https://docs.viam.com/appendix/apis/ml-training-client/).
Future<String> submitCustomTrainingJob(
String orgId, String datasetId, String modelName, String modelVersion, String registryItemId) async {
final request = SubmitCustomTrainingJobRequest()
Expand All @@ -40,6 +46,8 @@ class MLTrainingClient {
}

/// Retrieves a training job by its ID.
///
/// For more information, see [ML Training Client API](https://docs.viam.com/appendix/apis/ml-training-client/).
Future<TrainingJobMetadata> getTrainingJob(String id) async {
final request = GetTrainingJobRequest()..id = id;
final response = await _mlTrainingClient.getTrainingJob(request);
Expand All @@ -48,6 +56,8 @@ class MLTrainingClient {

/// Lists training jobs for a given orgarnization ID and training status.
/// if [status] is not provided, all training jobs will be returned.
///
/// For more information, see [ML Training Client API](https://docs.viam.com/appendix/apis/ml-training-client/).
Future<List<TrainingJobMetadata>> listTrainingJobs(String orgId,
{TrainingStatus status = TrainingStatus.TRAINING_STATUS_UNSPECIFIED}) async {
final request = ListTrainingJobsRequest()
Expand All @@ -58,12 +68,16 @@ class MLTrainingClient {
}

/// Cancels a training job that has not yet completed.
///
/// For more information, see [ML Training Client API](https://docs.viam.com/appendix/apis/ml-training-client/).
Future<void> cancelTrainingJob(String id) async {
final request = CancelTrainingJobRequest()..id = id;
await _mlTrainingClient.cancelTrainingJob(request);
}

/// Removes a completed training job from the database, whether it has succeeded or failed.
///
/// For more information, see [ML Training Client API](https://docs.viam.com/appendix/apis/ml-training-client/).
Future<void> deleteCompletedTrainingJob(String id) async {
final request = DeleteCompletedTrainingJobRequest()..id = id;
await _mlTrainingClient.deleteCompletedTrainingJob(request);
Expand Down
Loading
Loading