summaryrefslogtreecommitdiff
path: root/adservices/service-core/proto/seller_frontend_service.proto
diff options
context:
space:
mode:
Diffstat (limited to 'adservices/service-core/proto/seller_frontend_service.proto')
-rw-r--r--adservices/service-core/proto/seller_frontend_service.proto245
1 files changed, 245 insertions, 0 deletions
diff --git a/adservices/service-core/proto/seller_frontend_service.proto b/adservices/service-core/proto/seller_frontend_service.proto
new file mode 100644
index 000000000..0fdb608ad
--- /dev/null
+++ b/adservices/service-core/proto/seller_frontend_service.proto
@@ -0,0 +1,245 @@
+// Copyright 2022 Google LLC
+//
+// 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.adservices.service.proto;
+
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+
+// Seller's FrontEnd service.
+service SellerFrontEnd {
+ // Selects a winning ad for the Publisher ad slot that would be
+ // rendered on the user's device.
+ // TODO(b/237817698): Add rpc timeout
+ rpc SelectWinningAd(SelectWinningAdRequest)
+ returns (SelectWinningAdResponse) {}
+}
+
+// SelectWinningAdRequest is sent from user's device to the
+// SellerFrontEnd Service.
+message SelectWinningAdRequest {
+ // Unencrypted request.
+ message SelectWinningAdRawRequest {
+ enum ClientType {
+ UNKNOWN = 0;
+
+ // An Android device with Google Mobile Services (GMS).
+ // Note: This covers apps on Android and browsers on Android.
+ ANDROID = 1;
+
+ // An Android device without Google Mobile Services (GMS).
+ ANDROID_NON_GMS = 2;
+
+ // Any browser.
+ BROWSER = 3;
+ }
+
+ // AuctionConfig required by the seller for ad auction.
+ // The auction config includes contextual signals and other data required
+ // for auction. This config is passed from client to SellerFrontEnd service
+ // in the umbrella request (SelectWinningAdRequest).
+ message AuctionConfig {
+ // Custom seller inputs for advertising on Android.
+ message CustomSellerInputsForAndroid {
+ // To be updated later if any custom fields are required to support
+ // Android.
+ }
+
+ // Custom seller inputs for advertising on web.
+ message CustomSellerInputsForBrowser {
+ // This timeout can be specified to restrict the runtime (in
+ // milliseconds) of the seller's scoreAd() script for auction.
+ float seller_timeout_ms = 1;
+
+ // Optional. Component auction configuration can contain additional
+ // auction configurations for each seller's "component auction".
+ google.protobuf.Struct component_auctions = 2;
+
+ // The Id is specified by the seller to support coordinated experiments
+ // with the seller's Key/Value services.
+ int32 experiment_group_id = 3;
+ }
+
+ // Optional. Custom seller inputs.
+ oneof CustomSellerInputs {
+ CustomSellerInputsForAndroid custom_seller_inputs_android = 1;
+
+ CustomSellerInputsForBrowser custom_seller_inputs_browser = 2;
+ }
+
+ /*..........................Contextual Signals.........................*/
+ // Contextual Signals refer to seller_signals and auction_signals
+ // derived contextually.
+
+ // Seller specific signals that include information about the context
+ // (e.g. Category blocks Publisher has chosen and so on). This can
+ // not be fetched real-time from Key-Value Server.
+ // Represents a JSON object.
+ google.protobuf.Struct seller_signals = 3;
+
+ // Information about auction (ad format, size).
+ // This information is required for both bidding and auction.
+ // Represents a JSON object.
+ google.protobuf.Struct auction_signals = 4;
+ }
+
+ // Optional. Required by Android to identify an ad selection request.
+ int64 ad_selection_request_id = 1;
+
+ // Encrypted BuyerInput per buyer.
+ // The key in the map corresponds to buyer Id that can identify a buyer
+ // participating in the auction. Buyer Id can be eTLD+1; i.e. domain address
+ // (ETLD+1) of the global load balancer of Buyer Frontend Service.
+ // The value corresponds to BuyerInput ciphertext that will be ingested by
+ // the buyer for bidding.
+ map<string, bytes> encrypted_input_per_buyer = 2;
+
+ // Includes configuration data required in Remarketing ad auction.
+ // Some of the data in AuctionConfig is passed to BuyerFrontEnd.
+ AuctionConfig auction_config = 3;
+
+ // Signals about device.
+ // Required for both bidding and auction.
+ oneof DeviceSignals {
+ // A JSON object constructed by Android containing contextual
+ // information that SDK or app knows about and that adtech's bidding
+ // and auction code can ingest.
+ google.protobuf.Struct android_signals = 4;
+
+ // A JSON object constructed by the browser, containing information that
+ // the browser knows about and that adtech's bidding and auction code
+ // can ingest.
+ google.protobuf.Struct browser_signals = 5;
+ }
+
+ // Type of end user's device / client, that would help in validating the
+ // integrity of an attested client.
+ // Note: Not all types of clients will be attested.
+ ClientType client_type = 6;
+
+ // Raw (unencrypted) version of the encrypted_input_per_buyer field above.
+ // See encrypted_input_per_buyer for details.
+ // TODO(b/239242947): Remove this field and reserve, after encryption is
+ // incorporated.
+ map<string, BuyerInput> raw_buyer_input = 7;
+
+ // Field representing client attestation data will be added later.
+ }
+
+ // Encrypted SelectWinningAdRawRequest.
+ bytes request_ciphertext = 1;
+
+ // Version of the public key used for request encryption. The service
+ // needs use private keys corresponding to same key_id to decrypt
+ // 'request_ciphertext'.
+ string key_id = 2;
+
+ // Unencrypted form of the SelectWinningAdRawRequest to be used until
+ // encryption is incorporated in the client/server communication.
+ // TODO(b/239242947): Remove this field and reserve, after request
+ // encryption / decryption is complete.
+ SelectWinningAdRawRequest raw_request = 3;
+}
+
+message SelectWinningAdResponse {
+ // Unencrypted response.
+ message SelectWinningAdRawResponse {
+ // The ad that will be rendered on the end user's device. This url is
+ // validated on the client side to ensure that it actually belongs to
+ // Custom Audience (a.k.a Interest Group).
+ // Note: This could be an int32 instead given an ad can be uniquely identified
+ // by the Buyer. In that case, the device would keep the mapping of the ad
+ // identifier to ad_render_url.
+ string ad_render_url = 1;
+
+ // Score of the winning ad.
+ float score = 2;
+
+ // Custom Audience (a.k.a Interest Group) name.
+ string custom_audience_name = 3;
+
+ // Bid for the winning ad candidate, generated by a buyer participating in
+ // the auction.
+ float bid_price = 4;
+
+ // The version of the binary running on the server and Guest OS of Secure
+ // Virtual Machine. The client may validate that with the version
+ // available in open source repo.
+ string server_binary_version = 5;
+ }
+
+ // Encrypted SelectWinningAdRawResponse.
+ bytes response_ciphertext = 1;
+
+ // TODO(b/239076127): Remove this field and reserve, after request
+ // encryption / decryption is incorporated.
+ SelectWinningAdRawResponse raw_response = 2;
+}
+
+// A BuyerInput includes data that a buyer (DSP) requires to generate bids.
+message BuyerInput {
+ // CustomAudience (a.k.a InterestGroup) includes name, the set of ads
+ // corresponding to this audience, Buyer Key Value lookup keys, user bidding
+ // signals and other optional fields.
+ message CustomAudience {
+ // Name or tag of Custom Audience (a.k.a Interest Group).
+ string name = 1;
+
+ // Keys to lookup from Buyer Key/Value service.
+ // NOTE: CA name would be another lookup key besides the keys in this field.
+ repeated string bidding_signals_keys = 2;
+
+ // Buyer Key Value shard url.
+ string bidding_signals_url = 3;
+
+ // User bidding signals for storing additional metadata that the Buyer can
+ // use during bidding.
+ // NOTE: This can be passed from device or fetched from Buyer Key Value service.
+ google.protobuf.Struct user_bidding_signals = 4;
+ }
+
+ // The Custom Audiences (a.k.a Interest Groups) corresponding to the buyer.
+ repeated CustomAudience custom_audiences = 1;
+
+ // Buyer may provide additional contextual information that could help in
+ // generating bids. Not fetched real-time.
+ // Represents a JSON object.
+ google.protobuf.Struct buyer_signals = 2;
+
+ // Custom buyer inputs for advertising on Android.
+ message CustomBuyerInputsForAndroid {
+ // To be updated later if any custom fields are required to support Android.
+ }
+
+ // Custom buyer inputs for advertising on browsers.
+ message CustomBuyerInputsForBrowser {
+ // This timeout can be specified to restrict the runtime (in milliseconds)
+ // of the buyer's generateBid() scripts for bidding. This can also be a
+ // default value if timeout is unspecified for the buyer.
+ float buyer_timeout_ms = 1;
+
+ // The Id is specified by the buyer to support coordinated experiments with
+ // the buyer's Key/Value services.
+ int32 experiment_group_id = 2;
+ }
+
+ // Optional. Custom buyer input for app or web advertising.
+ oneof CustomBuyerInputs {
+ CustomBuyerInputsForAndroid custom_buyer_inputs_android = 3;
+
+ CustomBuyerInputsForBrowser custom_buyer_inputs_browser = 4;
+ }
+}