/*
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

    https://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 sapagent.protos.backint;

import "google/protobuf/wrappers.proto";


option go_package = "github.com/GoogleCloudPlatform/sapagent/protos/backint";

message BackintConfiguration {
  string bucket = 1;
  int64 retries = 2;
  int64 parallel_streams = 3;
  int64 threads = 4;
  int64 buffer_size_mb = 5;
  string encryption_key = 6 ;
  bool compress = 7;
  string kms_key = 8;
  string service_account_key = 9;
  int64 rate_limit_mb = 10;
  int64 file_read_timeout_ms = 11;
  bool dump_data = 12;
  LogLevel log_level = 13;
  string user_id = 14;
  Function function = 15;
  string input_file = 16;
  string output_file = 17;
  string param_file = 18;
  string backup_id = 19;
  int64 database_object_count = 20;
  string backup_level = 21;
  int64 log_delay_sec = 22;
  google.protobuf.BoolValue log_to_cloud = 23;
  string recovery_bucket = 24;
  int64 retry_backoff_initial = 25;
  int64 retry_backoff_max = 26;
  float retry_backoff_multiplier = 27;
  string client_endpoint = 28;
  string folder_prefix = 29;
  string recovery_folder_prefix = 30;
  bool xml_multipart_upload = 31;
  StorageClass storage_class = 32;
  map<string, string> metadata = 33;
  int64 diagnose_file_max_size_gb = 34;
  google.protobuf.BoolValue send_metrics_to_monitoring = 35;
  bool shorten_folder_path = 36;
  string diagnose_tmp_directory = 37;
  string custom_time =
      38;  // This updates the customTime metadata entry (Reference:
           // https://cloud.google.com/storage/docs/metadata#custom-time):
           // Accepted values:
           //   1. A specific timestamp in Format: RFC 3339 format -
           //   "YYYY-MM-DD'T'HH:MM:SS.SS'Z'" or "YYYY-MM-DD'T'HH:MM:SS'Z'".
           //   Example: "2024-06-25T13:25:00Z"
           //   2. A value of "UTCNow" will set the customTime to the current
           //   UTC time.
           //   3. A value of "UTCNow+<INT>d" will set the customTime to the
           //   current UTC time plus INT days. INT is any positive integer.
           //   Example: "UTCNow+1d"
  int64 parallel_recovery_streams = 39;
  string object_retention_mode = 40;
  string object_retention_time =
      41;  // This updates the object retain-until time (Reference:
           // https://cloud.google.com/storage/docs/object-lock):
           // Accepted values match the custom_time field above.
}

enum LogLevel {
  LOG_LEVEL_UNSPECIFIED = 0;
  DEBUG = 1;
  INFO = 2;
  WARNING = 3;
  ERROR = 4;
}

enum Function {
  FUNCTION_UNSPECIFIED = 0;
  BACKUP = 1;
  RESTORE = 2;
  INQUIRE = 3;
  DELETE = 4;
  DIAGNOSE = 5;
}

enum StorageClass {
  STORAGE_CLASS_UNSPECIFIED = 0;
  STANDARD = 1;
  NEARLINE = 2;
  COLDLINE = 3;
  ARCHIVE = 4;
}
