import "Domain.bond"

namespace AI

[Description("An instance of Request represents completion of an external request to the application to do work and contains a summary of that request execution and the results.")]
struct RequestData
    : Domain
{
    [Description("Schema version")]
    10: required int32 	 ver = 2;
    
    [MaxStringLength("128")]
    [Description("Identifier of a request call instance. Used for correlation between request and other telemetry items.")]
    20: required string 	 id;
    
    [CSType("TimeSpan")]
    [Description("Request duration in TimeSpan 'G' (general long) format: d:hh:mm:ss.fffffff.")]
    50: required string 	 duration;
    
    [MaxStringLength("1024")]
    [Description("Result of a request execution. HTTP status code for HTTP requests.")]
    60: required string 	 responseCode;
    
    [Description("Indication of successfull or unsuccessfull call.")]
    70: required bool 	 success;
    
    [MaxStringLength("1024")]
    [Description("Source of the request. Examples are the instrumentation key of the caller or the ip address of the caller.")]
    29: string 	 source;
    
    [MaxStringLength("1024")]
    [Description("Name of the request. Represents code path taken to process request. Low cardinality value to allow better grouping of requests. For HTTP requests it represents the HTTP method and URL path template like 'GET /values/{id}'.")]
    30: string 	 name;
    
    [MaxStringLength("2048")]
    [Description("Request URL with all query string parameters.")]
    90: string 	 url;
    
    [Description("Collection of custom properties.")]
    [MaxKeyLength("150")]
    [MaxValueLength("8192")]
    100: map<string, string> 	 properties;
    
    [Description("Collection of custom measurements.")]
    [MaxKeyLength("150")]
    200: map<string, double> 	 measurements;
    
}
