// COPY OF https://github.com/istio/api/blob/master/mixer/v1/config/descriptor/log_entry_descriptor.proto

syntax = "proto3";

package istio.mixer.template.log;

import "mixer/adapter/model/v1beta1/extensions.proto";
import "mixer/adapter/model/v1beta1/type.proto";

option (istio.mixer.adapter.model.v1beta1.template_variety) = TEMPLATE_VARIETY_REPORT;

// Defines the format of a single log entry.
message Template {
    // value is ...
    istio.mixer.adapter.model.v1beta1.Value value = 1;
    // dimensions are ...
    map<string, istio.mixer.adapter.model.v1beta1.Value> dimensions = 2;

    int64 int64Primitive = 3;

    bool boolPrimitive = 4;

    double doublePrimitive = 5;

    string stringPrimitive = 6;

    istio.mixer.adapter.model.v1beta1.Value anotherValueType = 7;

    map<string, int64> dimensionsFixedInt64ValueDType = 8;

    istio.mixer.adapter.model.v1beta1.TimeStamp timeStamp = 9;

    istio.mixer.adapter.model.v1beta1.Duration duration = 10;

    Res1 res1 = 11;
}

message Res1 {
    istio.mixer.adapter.model.v1beta1.Value value = 1;
    map<string, istio.mixer.adapter.model.v1beta1.Value> dimensions = 2;

    int64 int64Primitive = 3;

    bool boolPrimitive = 4;

    double doublePrimitive = 5;

    string stringPrimitive = 6;

    map<string, int64> int64Map = 7;

    istio.mixer.adapter.model.v1beta1.TimeStamp timeStamp = 9;

    istio.mixer.adapter.model.v1beta1.Duration duration = 10;

    Res2 res2 = 11;

    map<string, Res2> res2_map = 12;
}

message Res2 {
    istio.mixer.adapter.model.v1beta1.Value value = 1;
    map<string, istio.mixer.adapter.model.v1beta1.Value> dimensions = 2;

    int64 int64Primitive = 3;
}
