xref: /aosp_15_r20/external/federated-compute/fcp/protos/ondevicepersonalization/task_assignments.proto (revision 14675a029014e728ec732f129a32e299b2da0601)
1*14675a02SAndroid Build Coastguard Worker/**
2*14675a02SAndroid Build Coastguard Worker * Copyright 2023 Google LLC
3*14675a02SAndroid Build Coastguard Worker *
4*14675a02SAndroid Build Coastguard Worker * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may
5*14675a02SAndroid Build Coastguard Worker * not use this file except in compliance with the License. You may obtain a
6*14675a02SAndroid Build Coastguard Worker * copy of the License at
7*14675a02SAndroid Build Coastguard Worker *
8*14675a02SAndroid Build Coastguard Worker * <p>http://www.apache.org/licenses/LICENSE-2.0
9*14675a02SAndroid Build Coastguard Worker *
10*14675a02SAndroid Build Coastguard Worker * <p>Unless required by applicable law or agreed to in writing, software
11*14675a02SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12*14675a02SAndroid Build Coastguard Worker * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13*14675a02SAndroid Build Coastguard Worker * License for the specific language governing permissions and limitations under
14*14675a02SAndroid Build Coastguard Worker * the License.
15*14675a02SAndroid Build Coastguard Worker */
16*14675a02SAndroid Build Coastguard Workersyntax = "proto3";
17*14675a02SAndroid Build Coastguard Worker
18*14675a02SAndroid Build Coastguard Workerpackage google.ondevicepersonalization.federatedcompute.proto;
19*14675a02SAndroid Build Coastguard Worker
20*14675a02SAndroid Build Coastguard Workerimport "fcp/protos/federatedcompute/common.proto";
21*14675a02SAndroid Build Coastguard Workerimport "fcp/protos/plan.proto";
22*14675a02SAndroid Build Coastguard Workerimport "fcp/protos/ondevicepersonalization/eligibility_spec.proto";
23*14675a02SAndroid Build Coastguard Workerimport "fcp/protos/ondevicepersonalization/common.proto";
24*14675a02SAndroid Build Coastguard Worker
25*14675a02SAndroid Build Coastguard Workeroption java_package = "com.google.ondevicepersonalization.federatedcompute.proto";
26*14675a02SAndroid Build Coastguard Workeroption java_multiple_files = true;
27*14675a02SAndroid Build Coastguard Worker
28*14675a02SAndroid Build Coastguard Worker// Create task assignment request.
29*14675a02SAndroid Build Coastguard Worker// The url to create task assignment under v1 API is:
30*14675a02SAndroid Build Coastguard Worker// https://{host}/taskassignment/v1/population/{populationName}:create-task-assignment
31*14675a02SAndroid Build Coastguard Worker// Next Id: 3
32*14675a02SAndroid Build Coastguard Workermessage CreateTaskAssignmentRequest {
33*14675a02SAndroid Build Coastguard Worker  google.internal.federatedcompute.v1.ClientVersion client_version = 1;
34*14675a02SAndroid Build Coastguard Worker
35*14675a02SAndroid Build Coastguard Worker  // The client's capabilities when downloading and processing resources.
36*14675a02SAndroid Build Coastguard Worker  google.internal.federatedcompute.v1.ResourceCapabilities resource_capabilities = 2;
37*14675a02SAndroid Build Coastguard Worker}
38*14675a02SAndroid Build Coastguard Worker
39*14675a02SAndroid Build Coastguard Worker// Create task assignment response.
40*14675a02SAndroid Build Coastguard Worker// Next Id: 3
41*14675a02SAndroid Build Coastguard Workermessage CreateTaskAssignmentResponse {
42*14675a02SAndroid Build Coastguard Worker  // One of two outcomes, depending on server's decision on participation of the
43*14675a02SAndroid Build Coastguard Worker  // client.
44*14675a02SAndroid Build Coastguard Worker  oneof result {
45*14675a02SAndroid Build Coastguard Worker    // If the client joined the task with this call, information on how to
46*14675a02SAndroid Build Coastguard Worker    // proceed.
47*14675a02SAndroid Build Coastguard Worker    TaskAssignment task_assignment = 1;
48*14675a02SAndroid Build Coastguard Worker
49*14675a02SAndroid Build Coastguard Worker    // If the client was not accepted, information how to proceed.
50*14675a02SAndroid Build Coastguard Worker    google.internal.federatedcompute.v1.RejectionInfo rejection_info = 2;
51*14675a02SAndroid Build Coastguard Worker  }
52*14675a02SAndroid Build Coastguard Worker}
53*14675a02SAndroid Build Coastguard Worker
54*14675a02SAndroid Build Coastguard Worker// When client (device) is accepted for the current task, this data structure
55*14675a02SAndroid Build Coastguard Worker// carries information necessary to begin task execution.
56*14675a02SAndroid Build Coastguard Worker// Next Id: 12
57*14675a02SAndroid Build Coastguard Workermessage TaskAssignment {
58*14675a02SAndroid Build Coastguard Worker  // population name.
59*14675a02SAndroid Build Coastguard Worker  string population_name = 1;
60*14675a02SAndroid Build Coastguard Worker
61*14675a02SAndroid Build Coastguard Worker  // the task id
62*14675a02SAndroid Build Coastguard Worker  string task_id = 2;
63*14675a02SAndroid Build Coastguard Worker
64*14675a02SAndroid Build Coastguard Worker  // The opaque id of the aggregation session the client has joined. This is a
65*14675a02SAndroid Build Coastguard Worker  // string generated by the server and MUST NOT contain any information that
66*14675a02SAndroid Build Coastguard Worker  // could be used to identify a specific device.
67*14675a02SAndroid Build Coastguard Worker  string aggregation_id = 3;
68*14675a02SAndroid Build Coastguard Worker
69*14675a02SAndroid Build Coastguard Worker  // assignment id
70*14675a02SAndroid Build Coastguard Worker  string assignment_id = 4;
71*14675a02SAndroid Build Coastguard Worker
72*14675a02SAndroid Build Coastguard Worker  // The identifier of the task that was assigned. It's better to use the combination of
73*14675a02SAndroid Build Coastguard Worker  // `population_name` and `task_id` to identify a task.
74*14675a02SAndroid Build Coastguard Worker  string task_name = 5;
75*14675a02SAndroid Build Coastguard Worker
76*14675a02SAndroid Build Coastguard Worker  // The checkpoint from which to start execution.
77*14675a02SAndroid Build Coastguard Worker  google.internal.federatedcompute.v1.Resource init_checkpoint = 6;
78*14675a02SAndroid Build Coastguard Worker
79*14675a02SAndroid Build Coastguard Worker  // The plan to be used for execution.
80*14675a02SAndroid Build Coastguard Worker  google.internal.federatedcompute.v1.Resource plan = 7;
81*14675a02SAndroid Build Coastguard Worker
82*14675a02SAndroid Build Coastguard Worker  // self uri
83*14675a02SAndroid Build Coastguard Worker  string self_uri = 8;
84*14675a02SAndroid Build Coastguard Worker
85*14675a02SAndroid Build Coastguard Worker  // The eligibility of the task. Device need to run this eligibility task
86*14675a02SAndroid Build Coastguard Worker  // to check if it's qualified to start the job before execute real task.
87*14675a02SAndroid Build Coastguard Worker  EligibilityTaskInfo eligibility_task_info = 9;
88*14675a02SAndroid Build Coastguard Worker
89*14675a02SAndroid Build Coastguard Worker  // The signature of eligibility task.
90*14675a02SAndroid Build Coastguard Worker  Signature eligibility_task_info_signature = 10;
91*14675a02SAndroid Build Coastguard Worker
92*14675a02SAndroid Build Coastguard Worker  // Specifies an example selection procedure. Can be used by model versioning.
93*14675a02SAndroid Build Coastguard Worker  google.internal.federated.plan.ExampleSelector example_selector = 11;
94*14675a02SAndroid Build Coastguard Worker}
95*14675a02SAndroid Build Coastguard Worker
96*14675a02SAndroid Build Coastguard Worker// The signature information. Device can verify the signature to check integrity of
97*14675a02SAndroid Build Coastguard Worker// the content.
98*14675a02SAndroid Build Coastguard Workermessage Signature {}
99*14675a02SAndroid Build Coastguard Worker
100*14675a02SAndroid Build Coastguard Worker// Report result request.
101*14675a02SAndroid Build Coastguard Worker// The url to report result under v1 API is:
102*14675a02SAndroid Build Coastguard Worker// https://{host}/taskassignment/v1/population/{populationName}/task/{taskId}/aggregation/{aggregationId}/task-assignment/{assignmentId}:report-result
103*14675a02SAndroid Build Coastguard Worker// Next Id: 3
104*14675a02SAndroid Build Coastguard Workermessage ReportResultRequest {
105*14675a02SAndroid Build Coastguard Worker  enum Result {
106*14675a02SAndroid Build Coastguard Worker    // Unknown
107*14675a02SAndroid Build Coastguard Worker    UNKNOWN = 0;
108*14675a02SAndroid Build Coastguard Worker
109*14675a02SAndroid Build Coastguard Worker    // Completed
110*14675a02SAndroid Build Coastguard Worker    COMPLETED = 1;
111*14675a02SAndroid Build Coastguard Worker
112*14675a02SAndroid Build Coastguard Worker    // Failed.
113*14675a02SAndroid Build Coastguard Worker    FAILED = 2;
114*14675a02SAndroid Build Coastguard Worker
115*14675a02SAndroid Build Coastguard Worker    // Failed due to eligibility task is not qualified.
116*14675a02SAndroid Build Coastguard Worker    NOT_ELIGIBLE = 3;
117*14675a02SAndroid Build Coastguard Worker
118*14675a02SAndroid Build Coastguard Worker    // Failed due to example generation failure
119*14675a02SAndroid Build Coastguard Worker    FAILED_EXAMPLE_GENERATION = 4;
120*14675a02SAndroid Build Coastguard Worker
121*14675a02SAndroid Build Coastguard Worker    // Failed due to model computation error
122*14675a02SAndroid Build Coastguard Worker    FAILED_MODEL_COMPUTATION = 5;
123*14675a02SAndroid Build Coastguard Worker
124*14675a02SAndroid Build Coastguard Worker    // Failed due to model ops error
125*14675a02SAndroid Build Coastguard Worker    FAILED_OPS_ERROR = 6;
126*14675a02SAndroid Build Coastguard Worker  }
127*14675a02SAndroid Build Coastguard Worker
128*14675a02SAndroid Build Coastguard Worker  Result result = 1;
129*14675a02SAndroid Build Coastguard Worker
130*14675a02SAndroid Build Coastguard Worker  // The client's capabilities when uploading result.
131*14675a02SAndroid Build Coastguard Worker  google.internal.federatedcompute.v1.ResourceCapabilities resource_capabilities = 2;
132*14675a02SAndroid Build Coastguard Worker}
133*14675a02SAndroid Build Coastguard Worker
134*14675a02SAndroid Build Coastguard Worker// Report result response.
135*14675a02SAndroid Build Coastguard Workermessage ReportResultResponse {
136*14675a02SAndroid Build Coastguard Worker  // Upload result instruction on succeeded.
137*14675a02SAndroid Build Coastguard Worker  UploadInstruction upload_instruction = 1;
138*14675a02SAndroid Build Coastguard Worker
139*14675a02SAndroid Build Coastguard Worker  // Rejection reason.
140*14675a02SAndroid Build Coastguard Worker  google.internal.federatedcompute.v1.RejectionInfo rejection_info = 2;
141*14675a02SAndroid Build Coastguard Worker}
142