diff --git a/.github/workflows/buf.yaml b/.github/workflows/buf.yaml index f2d13c1..8ede800 100644 --- a/.github/workflows/buf.yaml +++ b/.github/workflows/buf.yaml @@ -5,6 +5,7 @@ on: push: branches: [main] pull_request: + types: [ opened, synchronize, reopened, labeled, unlabeled ] merge_group: branches: ["**"] diff --git a/apis/datasets/v1/collections.proto b/apis/datasets/v1/collections.proto index 7a8cc07..562b856 100644 --- a/apis/datasets/v1/collections.proto +++ b/apis/datasets/v1/collections.proto @@ -6,13 +6,14 @@ package datasets.v1; import "datasets/v1/core.proto"; import "google/protobuf/go_features.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; // CreateCollectionRequest is used to create a new collection. message CreateCollectionRequest { - ID dataset_id = 1; // The dataset id where the collection should be created. + tilebox.v1.ID dataset_id = 1; // The dataset id where the collection should be created. string name = 2; // The name of the collection to create. } @@ -21,13 +22,13 @@ message GetCollectionByNameRequest { string collection_name = 1; // The name of the collection to retrieve. bool with_availability = 2; // If true, the response will include the availability interval. bool with_count = 3; // If true, the response will include the number of entries. - ID dataset_id = 4; // The dataset id. + tilebox.v1.ID dataset_id = 4; // The dataset id. } // DeleteCollectionRequest contains the request parameters for deleting a single collection. message DeleteCollectionRequest { - ID collection_id = 1; // The id of the collection to delete. - ID dataset_id = 2; // The dataset id. + tilebox.v1.ID collection_id = 1; // The id of the collection to delete. + tilebox.v1.ID dataset_id = 2; // The dataset id. } // DeleteCollectionResponse is the response to DeleteCollectionRequest. @@ -36,7 +37,7 @@ message DeleteCollectionResponse {} // ListCollectionsRequest contains the request parameters // for retrieving a list of all available collections for a given dataset. message ListCollectionsRequest { - ID dataset_id = 1; // The dataset id. + tilebox.v1.ID dataset_id = 1; // The dataset id. bool with_availability = 2; // If true, the response will include the availability interval. bool with_count = 3; // If true, the response will include the number of entries. } diff --git a/apis/datasets/v1/core.proto b/apis/datasets/v1/core.proto index 2297063..a96ad13 100644 --- a/apis/datasets/v1/core.proto +++ b/apis/datasets/v1/core.proto @@ -20,17 +20,11 @@ import "datasets/v1/dataset_type.proto"; import "google/protobuf/go_features.proto"; // https://protobuf.dev/reference/protobuf/google.protobuf/#timestamp import "google/protobuf/timestamp.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; -/* - * General, multi purpose messages - */ -message ID { - bytes uuid = 1; -} - // A time interval message TimeInterval { google.protobuf.Timestamp start_time = 1; // Start time of the interval. @@ -46,8 +40,8 @@ message TimeInterval { // A datapoint interval message DatapointInterval { - ID start_id = 1; // The id of the first data point in the interval. - ID end_id = 2; // The id of the last data point in the interval. + tilebox.v1.ID start_id = 1; // The id of the first data point in the interval. + tilebox.v1.ID end_id = 2; // The id of the last data point in the interval. // We use exclusive for start and inclusive for end, because that way when both are false // we have a half-open interval [start, end) which is the default behaviour we want to achieve. @@ -74,7 +68,7 @@ message Pagination { int64 limit = 1 [features.field_presence = EXPLICIT]; // Return entries starting after this entry. // This is the id of the last entry returned in the previous page as the next parameter in each paginated query. - ID starting_after = 2 [features.field_presence = EXPLICIT]; + tilebox.v1.ID starting_after = 2 [features.field_presence = EXPLICIT]; } // Any is a message that can hold any other message as bytes. @@ -128,7 +122,7 @@ message Datapoint { message Collection { string legacy_id = 1; // Here for backwards compatibility, to be removed in the future. string name = 2; - ID id = 3; + tilebox.v1.ID id = 3; } // CollectionInfo contains information about the data available in a dataset collection @@ -146,9 +140,9 @@ message CollectionInfos { // Dataset contains information about a single dataset message Dataset { // dataset id - ID id = 1; + tilebox.v1.ID id = 1; // the dataset group to which this dataset belongs - ID group_id = 2; + tilebox.v1.ID group_id = 2; // the type of the dataset AnnotatedType type = 3; // normalized snake case name of the dataset, which can be used as a valid code identifier @@ -190,9 +184,9 @@ enum Visibility { // DatasetGroup represent a dataset group message DatasetGroup { // group id - ID id = 1; + tilebox.v1.ID id = 1; // optional parent group id - ID parent_id = 2; + tilebox.v1.ID parent_id = 2; // normalized snake case name of the dataset group, which can be used as a valid code identifier string code_name = 3; // display name of the group diff --git a/apis/datasets/v1/data_access.proto b/apis/datasets/v1/data_access.proto index 470f792..8800728 100644 --- a/apis/datasets/v1/data_access.proto +++ b/apis/datasets/v1/data_access.proto @@ -7,6 +7,7 @@ package datasets.v1; import "datasets/v1/core.proto"; import "datasets/v1/well_known_types.proto"; import "google/protobuf/go_features.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; @@ -38,8 +39,8 @@ message GetDatapointByIdRequest { // QueryByIDRequest contains the request parameters for retrieving a single data point by its id. message QueryByIDRequest { - repeated ID collection_ids = 1; // collection ids to query. - ID id = 2; // The id of the requested data point. + repeated tilebox.v1.ID collection_ids = 1; // collection ids to query. + tilebox.v1.ID id = 2; // The id of the requested data point. bool skip_data = 3; // If true, only the datapoint metadata is returned. } @@ -78,7 +79,7 @@ message SpatialFilter { // QueryRequest contains the request parameters for retrieving data from a Tilebox dataset. message QueryRequest { - repeated ID collection_ids = 1; // collection ids to query. + repeated tilebox.v1.ID collection_ids = 1; // collection ids to query. QueryFilters filters = 2; // Filters to apply to the query. Pagination page = 3 [features.field_presence = EXPLICIT]; // The pagination parameters for this request. diff --git a/apis/datasets/v1/data_ingestion.proto b/apis/datasets/v1/data_ingestion.proto index 002eb2d..857a6ac 100644 --- a/apis/datasets/v1/data_ingestion.proto +++ b/apis/datasets/v1/data_ingestion.proto @@ -6,6 +6,7 @@ package datasets.v1; import "datasets/v1/core.proto"; import "google/protobuf/go_features.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; @@ -13,7 +14,7 @@ option features.field_presence = IMPLICIT; // Legacy ingest request // IngestDatapointsRequest is used to ingest one or multiple datapoints into a collection. message IngestDatapointsRequest { - ID collection_id = 1; // The collection to insert the datapoints into. + tilebox.v1.ID collection_id = 1; // The collection to insert the datapoints into. Datapoints datapoints = 2; @@ -26,7 +27,7 @@ message IngestDatapointsRequest { // IngestRequest is used to ingest one or multiple datapoints into a collection. message IngestRequest { - ID collection_id = 1; // The collection to insert the datapoints into. + tilebox.v1.ID collection_id = 1; // The collection to insert the datapoints into. // The datapoints to insert. The values here are encoded protobuf messages. The type of the message is determined // by the type of the dataset that the specified collection belongs to. @@ -44,13 +45,13 @@ message IngestRequest { message IngestResponse { int64 num_created = 1; // The number of datapoints that were created. int64 num_existing = 2; // The number of datapoints that were ignored because they already existed. - repeated ID datapoint_ids = 3; // The ids of the datapoints in the same order as the datapoints in the request. + repeated tilebox.v1.ID datapoint_ids = 3; // The ids of the datapoints in the same order as the datapoints in the request. } // DeleteRequest is used to delete multiple datapoints from a collection. message DeleteRequest { - ID collection_id = 1; - repeated ID datapoint_ids = 2; + tilebox.v1.ID collection_id = 1; + repeated tilebox.v1.ID datapoint_ids = 2; } // DeleteResponse is used to indicate that multiple datapoints were deleted. diff --git a/apis/datasets/v1/dataset_type.proto b/apis/datasets/v1/dataset_type.proto index 7988a9f..da9c6c7 100644 --- a/apis/datasets/v1/dataset_type.proto +++ b/apis/datasets/v1/dataset_type.proto @@ -8,6 +8,7 @@ import "datasets/v1/well_known_types.proto"; import "google/protobuf/descriptor.proto"; import "google/protobuf/go_features.proto"; import "google/protobuf/timestamp.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; @@ -69,7 +70,7 @@ message AnnotatedType { // message types that are Temporal Datasets. message TemporalDatapoint { google.protobuf.Timestamp time = 1; // The timestamp associated with ach data point. - UUID id = 2; // A universally unique identifier (UUID) that uniquely identifies each data point. + tilebox.v1.ID id = 2; // A universally unique identifier (UUID) that uniquely identifies each data point. google.protobuf.Timestamp ingestion_time = 3; // The time the data point was ingested into the Tilebox API. } @@ -77,7 +78,7 @@ message TemporalDatapoint { // message types that are spatiotemporal Datasets. message SpatioTemporalDatapoint { google.protobuf.Timestamp time = 1; // The timestamp associated with each data point. - UUID id = 2; // A universally unique identifier (UUID) that uniquely identifies each data point. + tilebox.v1.ID id = 2; // A universally unique identifier (UUID) that uniquely identifies each data point. google.protobuf.Timestamp ingestion_time = 3; // The time the data point was ingested into the Tilebox API. Geometry geometry = 4; // The geometry associated with each data point. } diff --git a/apis/datasets/v1/datasets.proto b/apis/datasets/v1/datasets.proto index 45caba2..a787479 100644 --- a/apis/datasets/v1/datasets.proto +++ b/apis/datasets/v1/datasets.proto @@ -7,6 +7,7 @@ package datasets.v1; import "datasets/v1/core.proto"; import "datasets/v1/dataset_type.proto"; import "google/protobuf/go_features.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; @@ -28,13 +29,13 @@ message GetDatasetRequest { // slug of the dataset to be returned, e.g. "open_data.copernicus.sentinel1_sar" string slug = 1; // or alternatively a dataset id - ID id = 2; + tilebox.v1.ID id = 2; } // UpdateDatasetRequest is used to update a dataset. message UpdateDatasetRequest { // id of the dataset to update. - ID id = 1; + tilebox.v1.ID id = 1; // updated name of the dataset. string name = 2; // updated type of the dataset. @@ -64,7 +65,7 @@ message Package { // UpdateDatasetDescriptionRequest is used to update a dataset description message UpdateDatasetDescriptionRequest { // dataset id - ID id = 1; + tilebox.v1.ID id = 1; // description of the dataset, in markdown format string description = 2; } @@ -72,7 +73,7 @@ message UpdateDatasetDescriptionRequest { // DeleteDatasetRequest is used to delete a dataset message DeleteDatasetRequest { // id of the dataset to delete. - ID id = 1; + tilebox.v1.ID id = 1; } // DeleteDatasetResponse is the response to DeleteDatasetRequest diff --git a/apis/datasets/v1/timeseries.proto b/apis/datasets/v1/timeseries.proto index 607ec7f..607ca20 100644 --- a/apis/datasets/v1/timeseries.proto +++ b/apis/datasets/v1/timeseries.proto @@ -7,6 +7,7 @@ package datasets.v1; import "datasets/v1/core.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/go_features.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; @@ -14,8 +15,8 @@ option features.field_presence = IMPLICIT; // TimeseriesDatasetChunk is a message that represents a chunk of a timeseries dataset. // used by workflow tasks that are executed once for each datapoint in a timeseries dataset message TimeseriesDatasetChunk { - ID dataset_id = 1; - ID collection_id = 2; + tilebox.v1.ID dataset_id = 1; + tilebox.v1.ID collection_id = 2; TimeInterval time_interval = 3; DatapointInterval datapoint_interval = 4; int32 branch_factor = 5; diff --git a/apis/tilebox/v1/id.proto b/apis/tilebox/v1/id.proto new file mode 100644 index 0000000..cfdedc1 --- /dev/null +++ b/apis/tilebox/v1/id.proto @@ -0,0 +1,13 @@ +edition = "2023"; + +package tilebox.v1; + +import "google/protobuf/go_features.proto"; + +option features.(pb.go).api_level = API_OPAQUE; +option features.field_presence = IMPLICIT; + +// Bytes field (in message) +message ID { + bytes uuid = 1; +} diff --git a/apis/workflows/v1/automation.proto b/apis/workflows/v1/automation.proto index 8e34ff8..fc1c843 100644 --- a/apis/workflows/v1/automation.proto +++ b/apis/workflows/v1/automation.proto @@ -7,6 +7,7 @@ package workflows.v1; import "google/protobuf/empty.proto"; import "google/protobuf/go_features.proto"; import "google/protobuf/timestamp.proto"; +import "tilebox/v1/id.proto"; import "workflows/v1/core.proto"; option features.(pb.go).api_level = API_OPAQUE; @@ -22,7 +23,7 @@ enum StorageType { // Storage location is some kind of storage that can contain data files or objects and be used as a trigger source. message StorageLocation { - UUID id = 1; // Unique identifier for the storage location + tilebox.v1.ID id = 1; // Unique identifier for the storage location string location = 2; // A unique identifier for the storage location in the storage system StorageType type = 3; // The type of the storage location, e.g. GCS, S3, FS } @@ -35,7 +36,7 @@ message StorageLocations { // AutomationPrototype is a task prototype that can result in many submitted tasks. Task submissions are triggered by // NRT triggers, such as bucket triggers or cron triggers. message AutomationPrototype { - UUID id = 1; // Unique identifier for the trigger + tilebox.v1.ID id = 1; // Unique identifier for the trigger string name = 2; // A human-readable name for the trigger TaskSubmission prototype = 3; // The task submission to trigger @@ -51,14 +52,14 @@ message Automations { // StorageEventTrigger is a trigger that will trigger a task submission when an object matching the glob pattern is // created in a storage location. message StorageEventTrigger { - UUID id = 1; // Unique identifier for the trigger + tilebox.v1.ID id = 1; // Unique identifier for the trigger StorageLocation storage_location = 2; // The storage location to watch for events string glob_pattern = 3; // A glob pattern to match objects/files in the storage location } // CronTrigger is a trigger that will trigger a task submission on a schedule. message CronTrigger { - UUID id = 1; // Unique identifier for the trigger + tilebox.v1.ID id = 1; // Unique identifier for the trigger string schedule = 2; // A cron schedule for the trigger, e.g. "0 0 * * *" (every day at midnight) } @@ -79,7 +80,7 @@ enum StorageEventType { // TriggeredStorageEvent contains the details of the concrete event that triggered a storage event trigger. message TriggeredStorageEvent { - UUID storage_location_id = 1; // The storage location that triggered the task + tilebox.v1.ID storage_location_id = 1; // The storage location that triggered the task StorageEventType type = 2; // The type of the storage event, e.g. created // The object that triggered the task, e.g. a file name in a directory or object name in a bucket string location = 3; @@ -93,7 +94,7 @@ message TriggeredCronEvent { // DeleteAutomationRequest requests the deletion of an automation. message DeleteAutomationRequest { // The ID of the automation to delete. - UUID automation_id = 1; + tilebox.v1.ID automation_id = 1; // Whether to cancel all jobs that have been created by this automation. bool cancel_jobs = 2; } @@ -105,16 +106,16 @@ service AutomationService { // ListStorageLocations lists all the storage buckets that are available for use as bucket triggers. rpc ListStorageLocations(google.protobuf.Empty) returns (StorageLocations); // GetStorageLocation gets a storage location by its ID. - rpc GetStorageLocation(UUID) returns (StorageLocation); + rpc GetStorageLocation(tilebox.v1.ID) returns (StorageLocation); // CreateStorageLocation creates a new storage bucket. rpc CreateStorageLocation(StorageLocation) returns (StorageLocation); // DeleteStorageLocation deletes a storage location. - rpc DeleteStorageLocation(UUID) returns (google.protobuf.Empty); + rpc DeleteStorageLocation(tilebox.v1.ID) returns (google.protobuf.Empty); // ListAutomations lists all the automations that are currently registered in a namespace. rpc ListAutomations(google.protobuf.Empty) returns (Automations); // GetAutomation gets an automation by its ID. - rpc GetAutomation(UUID) returns (AutomationPrototype); + rpc GetAutomation(tilebox.v1.ID) returns (AutomationPrototype); // CreateAutomation creates a new automation in a namespace. rpc CreateAutomation(AutomationPrototype) returns (AutomationPrototype); // UpdateAutomation updates an automation in a namespace. diff --git a/apis/workflows/v1/core.proto b/apis/workflows/v1/core.proto index 89ceb95..533bcd9 100644 --- a/apis/workflows/v1/core.proto +++ b/apis/workflows/v1/core.proto @@ -7,6 +7,7 @@ package workflows.v1; import "google/protobuf/duration.proto"; import "google/protobuf/go_features.proto"; import "google/protobuf/timestamp.proto"; +import "tilebox/v1/id.proto"; option features.(pb.go).api_level = API_OPAQUE; option features.field_presence = IMPLICIT; @@ -21,7 +22,7 @@ message Cluster { // A job is a logical grouping of tasks that are related. message Job { - UUID id = 1; + tilebox.v1.ID id = 1; string name = 2; string trace_parent = 3; reserved 4; @@ -30,7 +31,7 @@ message Job { google.protobuf.Timestamp submitted_at = 7; // The time the job was submitted. google.protobuf.Timestamp started_at = 8; // The time the job started running. repeated TaskSummary task_summaries = 9; // The task' summaries of the job. - UUID automation_id = 10; // The automation that submitted the job. + tilebox.v1.ID automation_id = 10; // The automation that submitted the job. } // The state of a job. @@ -46,10 +47,10 @@ enum JobState { // A summary of a task. Mainly used in the Console. message TaskSummary { - UUID id = 1; + tilebox.v1.ID id = 1; string display = 2; TaskState state = 3; - UUID parent_id = 4; + tilebox.v1.ID parent_id = 4; reserved 5; // depends_on in case we want to add that in the future google.protobuf.Timestamp started_at = 6; google.protobuf.Timestamp stopped_at = 7; @@ -57,7 +58,7 @@ message TaskSummary { // A task is a single unit of work. message Task { - UUID id = 1; // The id of the task instance. Contains the submission timestamp as the time part of the ULID. + tilebox.v1.ID id = 1; // The id of the task instance. Contains the submission timestamp as the time part of the ULID. // Unique identifier for the task. Used by runners to match tasks to specific functions. TaskIdentifier identifier = 2; TaskState state = 3; // The current state of the task. @@ -65,8 +66,8 @@ message Task { // Display is a human readable representation of the Task used for printing or visualizations string display = 5 [features.field_presence = EXPLICIT]; Job job = 6; // The job that this task belongs to. - UUID parent_id = 7; // The id of the parent task. - repeated UUID depends_on = 8; // The ids of the tasks that this task depends on. + tilebox.v1.ID parent_id = 7; // The id of the parent task. + repeated tilebox.v1.ID depends_on = 8; // The ids of the tasks that this task depends on. TaskLease lease = 9; // The lease of the task. int64 retry_count = 10; // The number of times this task has been retried. } @@ -109,11 +110,6 @@ message TaskSubmission { int64 max_retries = 6; // The maximum number of retries for this task. } -// Bytes field (in message) -message UUID { - bytes uuid = 1; -} - // A lease for a task. message TaskLease { google.protobuf.Duration lease = 1; @@ -135,8 +131,8 @@ message TimeInterval { // An ID interval message IDInterval { - UUID start_id = 1; // The id of the first data point in the interval. - UUID end_id = 2; // The id of the last data point in the interval. + tilebox.v1.ID start_id = 1; // The id of the first data point in the interval. + tilebox.v1.ID end_id = 2; // The id of the last data point in the interval. // We use exclusive for start and inclusive for end, because that way when both are false // we have a half-open interval [start, end) which is the default behaviour we want to achieve. @@ -154,5 +150,5 @@ message Pagination { int64 limit = 1 [features.field_presence = EXPLICIT]; // Return entries starting after this entry. // This is the id of the last entry returned in the previous page as the next parameter in each paginated query. - UUID starting_after = 2 [features.field_presence = EXPLICIT]; + tilebox.v1.ID starting_after = 2 [features.field_presence = EXPLICIT]; } diff --git a/apis/workflows/v1/job.proto b/apis/workflows/v1/job.proto index 638960e..fb87e33 100644 --- a/apis/workflows/v1/job.proto +++ b/apis/workflows/v1/job.proto @@ -5,6 +5,7 @@ edition = "2023"; package workflows.v1; import "google/protobuf/go_features.proto"; +import "tilebox/v1/id.proto"; import "workflows/v1/core.proto"; import "workflows/v1/diagram.proto"; @@ -20,19 +21,19 @@ message SubmitJobRequest { // Tracing information for the job. This is used to propagate tracing information to the workers that execute the job. string trace_parent = 3; // Optional. The ID of the automation that submits this job. - UUID automation_id = 4; + tilebox.v1.ID automation_id = 4; } // GetJobRequest requests details for a job. message GetJobRequest { // The ID of the job to get details for. - UUID job_id = 1; + tilebox.v1.ID job_id = 1; } // RetryJobRequest requests a retry of a job that has failed. message RetryJobRequest { // The job to retry. - UUID job_id = 1; + tilebox.v1.ID job_id = 1; } // RetryJobResponse is the response to a RetryJobRequest. @@ -44,7 +45,7 @@ message RetryJobResponse { // CancelJobRequest requests a cancel of a job. message CancelJobRequest { // The job to cancel. - UUID job_id = 1; + tilebox.v1.ID job_id = 1; } // CancelJobResponse is the response to a CancelJobRequest. @@ -64,7 +65,7 @@ enum WorkflowDiagramTheme { // VisualizeJobRequest requests a visualization of a job. message VisualizeJobRequest { // The job to visualize. - UUID job_id = 1; + tilebox.v1.ID job_id = 1; // The options for rendering the diagram RenderOptions render_options = 2; @@ -85,7 +86,7 @@ message QueryFilters { } // Filter jobs by automation id. - UUID automation_id = 3 [features.field_presence = EXPLICIT]; + tilebox.v1.ID automation_id = 3 [features.field_presence = EXPLICIT]; } // QueryJobsRequest requests a list of jobs. @@ -107,7 +108,7 @@ message QueryJobsResponse { // GetJobPrototypeRequest requests a clone prototype of a job. message GetJobPrototypeRequest { // The ID of the job to get a clone prototype for. - UUID job_id = 1; + tilebox.v1.ID job_id = 1; } // A clone prototype of a job. @@ -121,7 +122,7 @@ message GetJobPrototypeResponse { // CloneJobRequest requests a clone of a job. message CloneJobRequest { // The ID of the job to clone. - UUID job_id = 1; + tilebox.v1.ID job_id = 1; // The updated root tasks of the job. repeated TaskSubmission root_tasks_overrides = 2; // The name of the job. diff --git a/apis/workflows/v1/task.proto b/apis/workflows/v1/task.proto index 680453a..c3fab7f 100644 --- a/apis/workflows/v1/task.proto +++ b/apis/workflows/v1/task.proto @@ -6,6 +6,7 @@ package workflows.v1; import "google/protobuf/duration.proto"; import "google/protobuf/go_features.proto"; +import "tilebox/v1/id.proto"; import "workflows/v1/core.proto"; option features.(pb.go).api_level = API_OPAQUE; @@ -28,7 +29,7 @@ message NextTaskToRun { // ComputedTask is a message specifying a task that has been computed by the task runner. message ComputedTask { - UUID id = 1; // The id of the task that has been computed. + tilebox.v1.ID id = 1; // The id of the task that has been computed. // A display name for the task that has been computed for visualization purposes. // If not set, the display message specified upon task submission will be kept. string display = 2; @@ -43,7 +44,7 @@ message NextTaskResponse { // TaskFailedRequest is the request for marking a task as failed. message TaskFailedRequest { - UUID task_id = 1; + tilebox.v1.ID task_id = 1; string display = 2; bool cancel_job = 3; } @@ -56,7 +57,7 @@ message TaskStateResponse { // TaskLease is a message specifying the new lease expiration time of a task. message TaskLeaseRequest { - UUID task_id = 1; + tilebox.v1.ID task_id = 1; google.protobuf.Duration requested_lease = 2 [features.field_presence = EXPLICIT]; }