/resources/customer_sk_ad_network_conversion_value_schema.proto

--- v16/resources/customer_sk_ad_network_conversion_value_schema.proto  2024-02-22 08:40:46.000000000 +0000
+++ v16-1/resources/customer_sk_ad_network_conversion_value_schema.proto    2024-04-18 15:49:00.000000000 +0000
@@ -1,163 +1,221 @@
 // Copyright 2023 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 google.ads.googleads.v16.resources;

+import "google/ads/googleads/v16/enums/sk_ad_network_coarse_conversion_value.proto";
 import "google/api/field_behavior.proto";
 import "google/api/resource.proto";

 option csharp_namespace = "Google.Ads.GoogleAds.V16.Resources";
 option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v16/resources;resources";
 option java_multiple_files = true;
 option java_outer_classname = "CustomerSkAdNetworkConversionValueSchemaProto";
 option java_package = "com.google.ads.googleads.v16.resources";
 option objc_class_prefix = "GAA";
 option php_namespace = "Google\\Ads\\GoogleAds\\V16\\Resources";
 option ruby_package = "Google::Ads::GoogleAds::V16::Resources";

 // Proto file describing the SkAdNetworkConversionVauleSchema resource.

 // A CustomerSkAdNetworkConversionValueSchema.
 message CustomerSkAdNetworkConversionValueSchema {
   option (google.api.resource) = {
     type: "googleads.googleapis.com/CustomerSkAdNetworkConversionValueSchema"
     pattern: "customers/{customer_id}/customerSkAdNetworkConversionValueSchemas/{account_link_id}"
   };

   // The CustomerLink specific SkAdNetworkConversionValueSchema.
   message SkAdNetworkConversionValueSchema {
     // Mappings for fine grained conversion value.
     message FineGrainedConversionValueMappings {
       // Output only. Fine grained conversion value. Valid values are in the
       // inclusive range [0,63].
       int32 fine_grained_conversion_value = 1
           [(google.api.field_behavior) = OUTPUT_ONLY];

       // Output only. Conversion events the fine grained conversion value maps
       // to.
       ConversionValueMapping conversion_value_mapping = 2
           [(google.api.field_behavior) = OUTPUT_ONLY];
     }

+    // Mappings for each postback in multiple conversion windows.
+    message PostbackMapping {
+      // Output only. 0-based index that indicates the order of postback. Valid
+      // values are in the inclusive range [0,2].
+      int32 postback_sequence_index = 1
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+
+      // Output only. Conversion value mappings for all coarse grained
+      // conversion values.
+      CoarseGrainedConversionValueMappings
+          coarse_grained_conversion_value_mappings = 2
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+
+      // Event or conversion value used for locking conversion window.
+      oneof lock_window_trigger {
+        // Output only. Coarse grained conversion value that triggers conversion
+        // window lock.
+        google.ads.googleads.v16.enums.SkAdNetworkCoarseConversionValueEnum
+            .SkAdNetworkCoarseConversionValue
+                lock_window_coarse_conversion_value = 3
+            [(google.api.field_behavior) = OUTPUT_ONLY];
+
+        // Output only. Fine grained conversion value that triggers conversion
+        // window lock.
+        int32 lock_window_fine_conversion_value = 4
+            [(google.api.field_behavior) = OUTPUT_ONLY];
+
+        // Output only. Event name that triggers conversion window lock.
+        string lock_window_event = 5
+            [(google.api.field_behavior) = OUTPUT_ONLY];
+      }
+    }
+
+    // Mappings for coarse grained conversion values.
+    message CoarseGrainedConversionValueMappings {
+      // Output only. Mapping for "low" coarse conversion value.
+      ConversionValueMapping low_conversion_value_mapping = 1
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+
+      // Output only. Mapping for "medium" coarse conversion value.
+      ConversionValueMapping medium_conversion_value_mapping = 2
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+
+      // Output only. Mapping for "high" coarse conversion value.
+      ConversionValueMapping high_conversion_value_mapping = 3
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+    }
+
     // Represents mapping from one conversion value to one or more conversion
     // events.
     message ConversionValueMapping {
       // Output only. The minimum of the time range in which a user was last
       // active during the measurement window.
       int64 min_time_post_install_hours = 1
           [(google.api.field_behavior) = OUTPUT_ONLY];

       // Output only. The maximum of the time range in which a user was last
       // active during the measurement window.
       int64 max_time_post_install_hours = 2
           [(google.api.field_behavior) = OUTPUT_ONLY];

       // Output only. The conversion value may be mapped to multiple events with
       // various attributes.
       repeated Event mapped_events = 3
           [(google.api.field_behavior) = OUTPUT_ONLY];
     }

     // Defines a Google conversion event that the conversion value is mapped to.
     message Event {
       // Defines a range for revenue values.
       message RevenueRange {
         // Output only. For revenue ranges, the minimum value in `currency_code`
         // for which this conversion value would be updated. A value of 0 will
         // be treated as unset.
         double min_event_revenue = 3
             [(google.api.field_behavior) = OUTPUT_ONLY];

         // Output only. For revenue ranges, the maximum value in `currency_code`
         // for which this conversion value would be updated. A value of 0 will
         // be treated as unset.
         double max_event_revenue = 4
             [(google.api.field_behavior) = OUTPUT_ONLY];
       }

       // Defines a range for event counter values.
       message EventOccurrenceRange {
         // Output only. For event counter ranges, the minimum of the defined
         // range. A value of 0 will be treated as unset.
         int64 min_event_count = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

         // Output only. For event counter ranges, the maximum of the defined
         // range. A value of 0 will be treated as unset.
         int64 max_event_count = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
       }

       // Output only. Google event name represented by this conversion value.
       string mapped_event_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];

       // Output only. The reported currency for the event_revenue. ISO 4217
       // three-letter currency code, for example, "USD"
       string currency_code = 2 [(google.api.field_behavior) = OUTPUT_ONLY];

       // Either a range or specific value for event revenue.
       oneof revenue_rate {
         // Output only. The event revenue range.
         RevenueRange event_revenue_range = 3
             [(google.api.field_behavior) = OUTPUT_ONLY];

         // Output only. The specific event revenue value.
         double event_revenue_value = 4
             [(google.api.field_behavior) = OUTPUT_ONLY];
       }

       // Either a range or specific value for event counter.
       oneof event_rate {
         // Output only. The event counter range.
         EventOccurrenceRange event_occurrence_range = 5
             [(google.api.field_behavior) = OUTPUT_ONLY];

         // Output only. For specific event counter values.
         int64 event_counter = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
       }
     }

     // Required. Output only. Apple App Store app ID.
     string app_id = 1 [
       (google.api.field_behavior) = REQUIRED,
       (google.api.field_behavior) = OUTPUT_ONLY
     ];

     // Output only. A time window (measured in hours) post-install, after which
     // the App Attribution Partner or advertiser stops calling
     // [updateConversionValue]
     // (https://developer.apple.com/documentation/storekit/skadnetwork/3566697-updateconversionvalue).
     int32 measurement_window_hours = 2
         [(google.api.field_behavior) = OUTPUT_ONLY];

     // Output only. Fine grained conversion value mappings.
+    // For SkAdNetwork versions >= 4.0 that support multiple conversion
+    // windows, fine grained conversion value mappings are only applicable to
+    // the first postback.
     repeated FineGrainedConversionValueMappings
         fine_grained_conversion_value_mappings = 3
         [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Per-postback conversion value mappings for postbacks in
+    // multiple conversion windows. Only applicable for SkAdNetwork versions
+    // >= 4.0.
+    repeated PostbackMapping postback_mappings = 4
+        [(google.api.field_behavior) = OUTPUT_ONLY];
   }

   // Output only. The resource name of the schema.
   // CustomerSkAdNetworkConversionValueSchema resource names have the form:
   // customers/{customer_id}/customerSkAdNetworkConversionValueSchemas/{account_link_id}
   string resource_name = 1 [
     (google.api.field_behavior) = OUTPUT_ONLY,
     (google.api.resource_reference) = {
       type: "googleads.googleapis.com/CustomerSkAdNetworkConversionValueSchema"
     }
   ];

   // Output only. The schema for the specified resource.
   SkAdNetworkConversionValueSchema schema = 2
       [(google.api.field_behavior) = OUTPUT_ONLY];
 }