/resources/customer.proto

--- v13/resources/customer.proto    2023-06-07 19:38:56.000000000 +0000
+++ v14/resources/customer.proto    2023-06-07 19:39:02.000000000 +0000
@@ -159,6 +171,10 @@
   // image in yyyy-MM-dd HH:mm:ss format.
   optional string image_asset_auto_migration_done_date_time = 41
       [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Offline conversion upload diagnostics.
+  repeated OfflineConversionClientSummary offline_conversion_client_summaries =
+      43 [(google.api.field_behavior) = OUTPUT_ONLY];
 }

 // Call reporting setting for a customer. Only mutable in an `update` operation.
@@ -229,3 +245,124 @@
   optional string google_global_site_tag = 2
       [(google.api.field_behavior) = OUTPUT_ONLY];
 }
+
+// Offline conversion upload diagnostic summarized by client. This proto
+// contains general information, breakdown by date/job and alerts for offline
+// conversion upload results.
+// Next tag: 10
+message OfflineConversionClientSummary {
+  // Output only. Client type of the upload event.
+  google.ads.googleads.v14.enums.OfflineEventUploadClientEnum
+      .OfflineEventUploadClient client = 1
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Overall status for offline conversion client summary. Status
+  // is generated from most recent calendar day with upload stats.
+  google.ads.googleads.v14.enums.OfflineConversionDiagnosticStatusEnum
+      .OfflineConversionDiagnosticStatus status = 2
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Total count of uploaded events.
+  int64 total_event_count = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Total count of successful uploaded events.
+  int64 successful_event_count = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Successful rate.
+  double success_rate = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Date for the latest upload batch.
+  string last_upload_date_time = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Summary of history stats by last N days.
+  repeated OfflineConversionUploadSummary daily_summaries = 7
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Summary of history stats by last N jobs.
+  repeated OfflineConversionUploadSummary job_summaries = 8
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Details for each error code. Alerts are generated from most
+  // recent calendar day with upload stats.
+  repeated OfflineConversionUploadAlert alerts = 9
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// Historical upload summary, grouped by upload date or job.
+// Next tag: 5
+message OfflineConversionUploadSummary {
+  // Output only. Total count of successful event.
+  int64 successful_count = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Total count of failed event.
+  int64 failed_count = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Dimension key for summary.
+  oneof dimension_key {
+    // Output only. Dimension key for last N jobs.
+    int64 job_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Dimension key for last N days.
+    string upload_date = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+  }
+}
+
+// Alert for offline conversion client summary.
+// Next tag: 3
+message OfflineConversionUploadAlert {
+  // Output only. Error for offline conversion client alert.
+  OfflineConversionUploadError error = 1
+      [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Output only. Percentage of the error.
+  double error_percentage = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// Possible errors for offline conversion client summary.
+//  Next tag: 11
+message OfflineConversionUploadError {
+  // Error with description.
+  oneof error_code {
+    // Output only. Collection size error.
+    google.ads.googleads.v14.errors.CollectionSizeErrorEnum.CollectionSizeError
+        collection_size_error = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Conversion adjustment upload error.
+    google.ads.googleads.v14.errors.ConversionAdjustmentUploadErrorEnum
+        .ConversionAdjustmentUploadError conversion_adjustment_upload_error = 2
+        [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Conversion upload error.
+    google.ads.googleads.v14.errors.ConversionUploadErrorEnum
+        .ConversionUploadError conversion_upload_error = 3
+        [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Date error.
+    google.ads.googleads.v14.errors.DateErrorEnum.DateError date_error = 4
+        [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Distinct error.
+    google.ads.googleads.v14.errors.DistinctErrorEnum.DistinctError
+        distinct_error = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Field error.
+    google.ads.googleads.v14.errors.FieldErrorEnum.FieldError field_error = 6
+        [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Mutate error.
+    google.ads.googleads.v14.errors.MutateErrorEnum.MutateError mutate_error = 7
+        [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. Not allowlisted error.
+    google.ads.googleads.v14.errors.NotAllowlistedErrorEnum.NotAllowlistedError
+        not_allowlisted_error = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. String format error.
+    google.ads.googleads.v14.errors.StringFormatErrorEnum.StringFormatError
+        string_format_error = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+    // Output only. String length error.
+    google.ads.googleads.v14.errors.StringLengthErrorEnum.StringLengthError
+        string_length_error = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
+  }
+}