| // Copyright 2021 The Chromium OS Authors. All rights reserved. Use |
| // of this source code is governed by a BSD-style license that can |
| // be found in the LICENSE file. |
| |
| syntax = "proto2"; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| package reporting; |
| |
| import "record_constants.proto"; |
| import "record.proto"; |
| import "status.proto"; |
| |
| // ------------ CLIENT/USER REQUEST AND RESPONSES ----------------- |
| // EnqueueRecordRequest enqueues records for encryption, |
| // storage, and upload. |
| message EnqueueRecordRequest { |
| // Record the user wants to enqueue. |
| optional Record record = 1; |
| |
| // Priority from |
| // //chrome/cros/reporting/api/proto/record_constants.proto |
| // indicates what priority queue the record should be included in. |
| optional Priority priority = 2; |
| } |
| |
| // EnqueueRecordResponse indicates the enqueue success or |
| // failure. |
| message EnqueueRecordResponse { |
| // Indicates success or failure of EnqueueRecordRequest. |
| // Specific error codes indicate if a retry is appropriate. |
| // Expected errors: |
| // FAILED_PRECONDITION: |
| // "The daemon is unable to locate the public key for record encryption." |
| // - Not Retryable |
| // FAILED_PRECONDITION: |
| // "The daemon has insufficient permissions to read/write from/to disk" |
| // - Not Retryable |
| // FAILED_PRECONDITION: |
| // "Policy controlling daemon is either unset or off." |
| // - Not Retryable |
| // UNAVAILABLE: |
| // "The daemon is still starting." |
| // - Retryable |
| // RESOURCE_EXHAUSTED: |
| // "The daemon has no available threads for processing" |
| // - Retryable |
| optional StatusProto status = 1; |
| } |
| |
| // FlushPriorityRequest requests that the indicated priority |
| // queue is flushed (records are uploaded to the server). |
| message FlushPriorityRequest { |
| // Priority of the desired queue. Defaults to MANUAL_BATCH. |
| optional Priority priority = 1 [default = MANUAL_BATCH]; |
| } |
| |
| // FlushPriorityResponse indicates success or failure of |
| // processing FlushPriorityRequest. |
| message FlushPriorityResponse { |
| // Indicates success or failure of FlushPriorityRequest. |
| // Specific error codes indicate if a retry is appropriate. |
| // Expected errors: |
| // FAILED_PRECONDITION: |
| // "The daemon is unable to locate the public key for record encryption." |
| // - Not Retryable |
| // FAILED_PRECONDITION: |
| // "The daemon has insufficient permissions to read/write from/to disk" |
| // - Not Retryable |
| // FAILED_PRECONDITION: |
| // "Policy controlling daemon is either unset or off." |
| // - Not Retryable |
| // UNAVAILABLE: |
| // "The daemon is still starting." |
| // - Retryable |
| optional StatusProto status = 1; |
| } |
| |
| // --------------- CHROME CALLS AND RESPONSES ------------------- |
| // Daemon DBus call to Chrome for uploading records. The Daemon sends a |
| // batch of records, and the Upload Service accepts as many (but at least |
| // one) as it can for upload. Records not sent for upload can be sent again |
| // at a later time. |
| message UploadEncryptedRecordRequest { |
| repeated EncryptedRecord encrypted_record = 1; |
| |
| // If true, server should send the encryption keys with the next response. |
| optional bool need_encryption_keys = 2; |
| } |
| |
| message UploadEncryptedRecordResponse { |
| // Status indicates if the records will be uploaded. |
| // Expected Errors: |
| // UNAVAILABLE: |
| // "No internet connection. Unable to upload records at this time." |
| // - Retryable |
| // FAILED_PRECONDITION: |
| // "Policy controlling reporting upload is unset or off." |
| // - Not Retryable |
| optional StatusProto status = 1; |
| } |
| |
| // ConfirmRecordUploadRequest is expected to only come from |
| // Chrome and indicates the record with the provided |
| // SequencingInformation successfully uploaded. It is |
| // only sent by Chrome after a successful upload. |
| message ConfirmRecordUploadRequest { |
| // SequencingInformation of the successfully uploaded record. |
| // SequencingInformation is part of the UploadEncryptedRecordRequest |
| // sent to Chrome. |
| optional SequencingInformation sequencing_information = 1; |
| |
| // If true, daemon should update to the provided sequencing_information |
| // regardless of its current state. |
| optional bool force_confirm = 2; |
| } |
| |
| // ConfirmRecordUploadResponse indicates that the request was |
| // successfully resolved. In the event that the daemon is unable |
| // to process the ConfirmRecordUploadeRequest it is safe to drop it. |
| // On the next upload, the server will ignore all records with |
| // SequencingInformation lower than the highest it has processed. |
| // The next ConfirmRecordUploadRequest will ensure that they are |
| // deleted from disk. Some data transmission will be repeated, but |
| // data will not be lost. |
| message ConfirmRecordUploadResponse { |
| // Indicates success or failure of ConfirmRecordUploadRequest. |
| // Specific error codes indicate if a retry is appropriate. |
| // Expected errors: |
| // FAILED_PRECONDITION: |
| // "The daemon has insufficient permissions to read/write from/to disk" |
| // - Not Retryable |
| // FAILED_PRECONDITION: |
| // "Policy controlling daemon is either unset or off." |
| // - Not Retryable |
| // UNAVAILABLE: |
| // "The daemon is still starting." |
| // - Retryable |
| optional StatusProto status = 1; |
| } |
| |
| // UpdateEncryptionKeyRequest sends a SignedEncryptionInfo to the daemon. |
| message UpdateEncryptionKeyRequest { |
| optional SignedEncryptionInfo signed_encryption_info = 1; |
| } |
| |
| message UpdateEncryptionKeyResponse { |
| // Indicates success or failure of UpdateEncryptionKeyRequest. |
| // Specific error codes indicate if a retry is appropriate. |
| // Expected errors: |
| // FAILED_PRECONDITION: |
| // "The daemon has insufficient permissions to read/write from/to disk" |
| // - Not Retryable |
| // FAILED_PRECONDITION: |
| // "Policy controlling daemon is either unset or off." |
| // - Not Retryable |
| // UNAVAILABLE: |
| // "The daemon is still starting." |
| // - Retryable |
| optional StatusProto status = 1; |
| } |