| /* |
| * Copyright (C) 2023 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| syntax = "proto3"; |
| |
| package com.android.federatedcompute.proto; |
| |
| import "common.proto"; |
| |
| option java_package = "com.android.federatedcompute.proto"; |
| option java_multiple_files = true; |
| |
| service Aggregations { |
| // A request sent by the client after completing local (on-device) task |
| // execution to notify the server that it has Aggregation data to upload. The |
| // server responds with the location at which to upload the data. If a |
| // client's result is no longer needed (e.g. the reporting goal was already |
| // reached for the task), the server will respond with an ABORTED error in the |
| // operation status. |
| rpc StartAggregationDataUpload(StartAggregationDataUploadRequest) |
| returns (StartAggregationDataUploadResponse) {} |
| |
| // A request sent by the client indicating the successful completion of the |
| // client's aggregation session. If a client's result is not needed for the |
| // aggregation (e.g. the reporting goal was already reached for the task), the |
| // server will respond with an ABORTED error. |
| // |
| // Clients should use the `ForwardingInfo` from the |
| // `StartAggregationDataUploadResponse.aggregation_protocol_forwarding_info` |
| // response field to construct the URI for this request. |
| rpc SubmitAggregationResult(SubmitAggregationResultRequest) |
| returns (SubmitAggregationResultResponse) {} |
| |
| // A request sent by the client indicating the client's aggregation session |
| // should be aborted. |
| // |
| // Clients must only call this if they've previously called |
| // `StartAggregationDataUpload`. |
| // |
| // Clients should not call this if one of the requests returned an Aborted |
| // status. |
| // |
| // If clients have already received a `StartAggregationDataUploadResponse` |
| // they should use the `ForwardingInfo` from the |
| // `StartAggregationDataUploadResponse.aggregation_protocol_forwarding_info` |
| // response field to construct the URI for this request. Otherwise, clients |
| // should use the same `ForwardingInfo` as was used to construct the |
| // `StartAggregationDataUpload` request URI. |
| rpc AbortAggregation(AbortAggregationRequest) |
| returns (AbortAggregationResponse) {} |
| } |
| |
| message StartAggregationDataUploadRequest { |
| // The id of the aggregation session this client participates in. This value |
| // was returned by the server when the client was assigned a task. |
| // |
| // Note that HTTP clients set this value in the request URL instead of the |
| // request body. |
| string aggregation_id = 1; |
| |
| // The authorization token returned by the server when the client was assigned |
| // a task. |
| // |
| // Note that HTTP clients set this value in the request URL instead of the |
| // request body. |
| string authorization_token = 2; |
| } |
| |
| message StartAggregationDataUploadResponse { |
| // Information to construct the URI to use for continuing the aggregation |
| // protocol after the data is uploaded. |
| ForwardingInfo aggregation_protocol_forwarding_info = 1; |
| |
| // Information about where to upload aggregation result data. |
| ByteStreamResource resource = 2; |
| |
| // Unique token that the client must include in the subsequent protocol |
| // requests. |
| string client_token = 3; |
| } |
| |
| message SubmitAggregationResultRequest { |
| // The id of the aggregation session this client participates in. This value |
| // was returned by the server when the client was assigned a task. |
| // |
| // Note that HTTP clients set this value in the request URL instead of the |
| // request body. |
| string aggregation_id = 1; |
| |
| // The client token returned by the server when the client was assigned a |
| // task. |
| // |
| // Note that HTTP clients set this value in the request URL instead of the |
| // request body. |
| string client_token = 2; |
| |
| // Name of the resource to which the aggregration result was uploaded. |
| string resource_name = 3; |
| } |
| |
| message SubmitAggregationResultResponse {} |
| |
| message AbortAggregationRequest { |
| // The id of the aggregation session this client participates in. This value |
| // was returned by the server when the client was assigned a task. |
| // |
| // Note that HTTP clients set this value in the request URL instead of the |
| // request body. |
| string aggregation_id = 1; |
| |
| // The client token returned by the server when the client was assigned a |
| // task. |
| // |
| // Note that HTTP clients set this value in the request URL instead of the |
| // request body. |
| string client_token = 2; |
| |
| // Status code and optional message for why the aggregation was aborted. |
| Status status = 3; |
| } |
| |
| message AbortAggregationResponse {} |