// Copyright 2016 Google Inc.
//
// 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.api.servicecontrol.v1;

import "google/api/annotations.proto";
import "google/logging/type/log_severity.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";

option go_package = "google.golang.org/genproto/googleapis/api/servicecontrol/v1;servicecontrol";
option java_multiple_files = true;
option java_outer_classname = "LogEntryProto";
option java_package = "com.google.api.servicecontrol.v1";


// An individual log entry.
message LogEntry {
  // Required. The log to which this log entry belongs. Examples: `"syslog"`,
  // `"book_log"`.
  string name = 10;

  // The time the event described by the log entry occurred. If
  // omitted, defaults to operation start time.
  google.protobuf.Timestamp timestamp = 11;

  // The severity of the log entry. The default value is
  // `LogSeverity.DEFAULT`.
  google.logging.type.LogSeverity severity = 12;

  // A unique ID for the log entry used for deduplication. If omitted,
  // the implementation will generate one based on operation_id.
  string insert_id = 4;

  // A set of user-defined (key, value) data that provides additional
  // information about the log entry.
  map<string, string> labels = 13;

  // The log entry payload, which can be one of multiple types.
  oneof payload {
    // The log entry payload, represented as a protocol buffer that is
    // expressed as a JSON object. You can only pass `protoPayload`
    // values that belong to a set of approved types.
    google.protobuf.Any proto_payload = 2;

    // The log entry payload, represented as a Unicode string (UTF-8).
    string text_payload = 3;

    // The log entry payload, represented as a structure that
    // is expressed as a JSON object.
    google.protobuf.Struct struct_payload = 6;
  }
}
