| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Protos for persisting Private Aggregation API contribution budgets. |
| |
| syntax = "proto3"; |
| |
| package content.proto; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| // Represents the budget used by an origin in a particular hour-long window. |
| // This window must begin and end 'on the hour' in UTC. |
| message PrivateAggregationBudgetPerHour { |
| // The time that the hour began in microseconds since the Windows epoch |
| // (1601-01-01 00:00:00 UTC). It must be a multiple of kMicrosecondsPerHour |
| // (i.e. 3.6 billion). |
| int64 hour_start_timestamp = 1; |
| |
| // Should always be positive. |
| int32 budget_used = 2; |
| } |
| |
| message PrivateAggregationBudgets { |
| // The budgets for the 24 latest windows (including the current one) are |
| // maintained. Older budgets should be cleared before adding new elements. If |
| // a window is not present, the budget used is inferred to be zero. For each |
| // API (separately), the sum of budget_used should never be greater than |
| // PrivateAggregationBudgeter::kMaxDailyBudget. |
| repeated PrivateAggregationBudgetPerHour fledge_budgets = 1; |
| repeated PrivateAggregationBudgetPerHour shared_storage_budgets = 2; |
| } |