blob: 9a48d180a1cb99ab41159bd7bfd92de724606276 [file] [log] [blame]
/*
* 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 {}