{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}

module Network.AWS.XRayClient.Segment
  ( -- * Segment
    XRaySegment(..)
  , xraySegment
  , xraySubsegment
  , xrayIndependentSubsegment

  , xraySegmentName
  , xraySegmentId
  , xraySegmentTraceId
  , xraySegmentStartTime
  , xraySegmentEndTime
  , xraySegmentInProgress
  , xraySegmentParentId
  , xraySegmentType
  , xraySegmentOrigin
  , xraySegmentUser
  , xraySegmentNamespace
  , xraySegmentService
  , xraySegmentError
  , xraySegmentThrottle
  , xraySegmentFault
  , xraySegmentCause
  , xraySegmentHttp
  , xraySegmentAnnotations
  , xraySegmentMetadata
  , xraySegmentSubsegments
  , xraySegmentAws
  , xraySegmentSql

  , XRaySegmentService(..)
  , xraySegmentServiceVersion

    -- * HTTP
  , XRaySegmentHttp(..)
  , xraySegmentHttpDef
  , xraySegmentHttpRequest
  , xraySegmentHttpResponse

  , XRaySegmentHttpRequest(..)
  , xraySegmentHttpRequestDef
  , xraySegmentHttpRequestMethod
  , xraySegmentHttpRequestUrl
  , xraySegmentHttpRequestUserAgent
  , xraySegmentHttpRequestClientIp
  , xraySegmentHttpRequestXForwardedFor
  , xraySegmentHttpRequestTraced

  , XRaySegmentHttpResponse(..)
  , xraySegmentHttpResponseDef
  , xraySegmentHttpResponseStatus
  , xraySegmentHttpResponseContentLength

    -- * AWS Resource Data
  , XRaySegmentAws(..)
  , xraySegmentAwsDef
  , xraySegmentAwsAccountId
  , xraySegmentAwsEcs
  , xraySegmentAwsEc2
  , xraySegmentAwsElasticBeanstalk
  , xraySegmentAwsOperation
  , xraySegmentAwsRegion
  , xraySegmentAwsRequestId
  , xraySegmentAwsQueueUrl
  , xraySegmentAwsTableName

  , XRaySegmentAwsEcs(..)
  , xraySegmentAwsEcsDef
  , xraySegmentAwsEcsContainer

  , XRaySegmentAwsEc2(..)
  , xraySegmentAwsEc2Def
  , xraySegmentAwsEc2InstanceId
  , xraySegmentAwsEc2AvailabilityZone

  , XRaySegmentAwsElasticBeanstalk(..)
  , xraySegmentAwsElasticBeanstalkDef
  , xraySegmentAwsElasticBeanstalkEnvironmentName
  , xraySegmentAwsElasticBeanstalkVersionLabel
  , xraySegmentAwsElasticBeanstalkDeploymentId

    -- * SQL
  , XRaySegmentSql(..)
  , xraySegmentSqlDef
  , xraySegmentSqlConnectionString
  , xraySegmentSqlUrl
  , xraySegmentSqlSanitizedQuery
  , xraySegmentSqlDatabaseType
  , xraySegmentSqlDatabaseVersion
  , xraySegmentSqlDriverVersion
  , xraySegmentSqlUser
  , xraySegmentSqlPreparation
  ) where

import Prelude

import Control.Lens.TH
import Data.Aeson
import Data.Aeson.TH
import Data.Maybe (isNothing)
import Data.Text (Text)
import Data.Time.Clock.POSIX
import Network.AWS.XRayClient.JSONHelpers
import Network.AWS.XRayClient.TraceId

-- TODO: Make different types for segment, subsegment, and independent
-- subsegment instead of relying on different smart constructors. The
-- sub-sections, like aws, will also have different variants.

-- | Represents an entire X-Ray Segment document. See
-- <http://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-fields>
data XRaySegment
  = XRaySegment
  { XRaySegment -> Text
_xraySegmentName :: !Text
    -- ^ The logical name of the service that handled the request, up to 200
    -- characters. For example, your application's name or domain name. Names
    -- can contain Unicode letters, numbers, and whitespace, and the following
    -- symbols: _, ., :, /, %, &, #, =, +, \, -, @
  , XRaySegment -> XRaySegmentId
_xraySegmentId :: !XRaySegmentId
    -- ^ A 64-bit identifier for the segment, unique among segments in the same
    -- trace, in 16 hexadecimal digits.
  , XRaySegment -> Maybe XRayTraceId
_xraySegmentTraceId :: !(Maybe XRayTraceId)
    -- ^ A unique identifier that connects all segments and subsegments
    -- originating from a single client request.
  , XRaySegment -> POSIXTime
_xraySegmentStartTime :: !POSIXTime
    -- ^ number that is the time the segment was created, in floating point
    -- seconds in epoch time. For example, 1480615200.010 or 1.480615200010E9.
    -- Use as many decimal places as you need. Microsecond resolution is
    -- recommended when available.
  , XRaySegment -> Maybe POSIXTime
_xraySegmentEndTime :: !(Maybe POSIXTime)
    -- ^ number that is the time the segment was closed. For example,
    -- 1480615200.090 or 1.480615200090E9. Specify either an end_time or
    -- in_progress.
  , XRaySegment -> Maybe Bool
_xraySegmentInProgress :: !(Maybe Bool)
    -- ^ boolean, set to true instead of specifying an end_time to record that
    -- a segment is started, but is not complete. Send an in-progress segment
    -- when your application receives a request that will take a long time to
    -- serve, to trace the request receipt. When the response is sent, send the
    -- complete segment to overwrite the in-progress segment. Only send one
    -- complete segment, and one or zero in-progress segments, per request.
  , XRaySegment -> Maybe XRaySegmentId
_xraySegmentParentId :: !(Maybe XRaySegmentId)
    -- ^ A subsegment ID you specify if the request originated from an
    -- instrumented application. The X-Ray SDK adds the parent subsegment ID to
    -- the tracing header for downstream HTTP calls.
  , XRaySegment -> Maybe Text
_xraySegmentType :: !(Maybe Text)
    -- ^ Set this to @"subsegment"@ if this is an independent subsegment.
  , XRaySegment -> Maybe Text
_xraySegmentOrigin :: !(Maybe Text)
    -- ^ The type of AWS resource running your application.
  , XRaySegment -> Maybe Text
_xraySegmentUser :: !(Maybe Text)
    -- ^ A string that identifies the user who sent the request.
  , XRaySegment -> Maybe Text
_xraySegmentNamespace :: !(Maybe Text)
    -- ^ "aws" for AWS SDK calls; "remote" for other downstream calls.
  , XRaySegment -> Maybe XRaySegmentService
_xraySegmentService :: !(Maybe XRaySegmentService)
    -- ^ An object with information about your application.
  , XRaySegment -> Maybe Bool
_xraySegmentError :: !(Maybe Bool)
    -- ^ fields that indicate an error occurred and that include information
    -- about the exception that caused the error.
  , XRaySegment -> Maybe Bool
_xraySegmentThrottle :: !(Maybe Bool)
    -- ^ fields that indicate an error occurred and that include information
    -- about the exception that caused the error.
  , XRaySegment -> Maybe Bool
_xraySegmentFault :: !(Maybe Bool)
    -- ^ fields that indicate an error occurred and that include information
    -- about the exception that caused the error.

    -- TODO: Make cause more type-safe
  , XRaySegment -> Maybe Value
_xraySegmentCause :: !(Maybe Value)
    -- ^ fields that indicate an error occurred and that include information
    -- about the exception that caused the error.
  , XRaySegment -> Maybe XRaySegmentHttp
_xraySegmentHttp :: !(Maybe XRaySegmentHttp)
    -- ^ 'XRaySegmentHttp' object with information about the original HTTP
    -- request.
  , XRaySegment -> Maybe Object
_xraySegmentAnnotations :: !(Maybe Object)
    -- ^ object with key-value pairs that you want X-Ray to index for search.
  , XRaySegment -> Maybe Object
_xraySegmentMetadata :: !(Maybe Object)
    -- ^ object with any additional data that you want to store in the segment.
  , XRaySegment -> Maybe [XRaySegment]
_xraySegmentSubsegments :: !(Maybe [XRaySegment])
    -- ^ array of 'XRaySegment' objects. See 'xraySubSegment' for a smart
    -- constructor.
  , XRaySegment -> Maybe XRaySegmentAws
_xraySegmentAws :: !(Maybe XRaySegmentAws)
    -- ^ object with information about the AWS resource on which your
    -- application served the request.
  , XRaySegment -> Maybe XRaySegmentSql
_xraySegmentSql :: !(Maybe XRaySegmentSql)
    -- ^ Object representing a sql query.
  } deriving (Int -> XRaySegment -> ShowS
[XRaySegment] -> ShowS
XRaySegment -> String
(Int -> XRaySegment -> ShowS)
-> (XRaySegment -> String)
-> ([XRaySegment] -> ShowS)
-> Show XRaySegment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegment] -> ShowS
$cshowList :: [XRaySegment] -> ShowS
show :: XRaySegment -> String
$cshow :: XRaySegment -> String
showsPrec :: Int -> XRaySegment -> ShowS
$cshowsPrec :: Int -> XRaySegment -> ShowS
Show, XRaySegment -> XRaySegment -> Bool
(XRaySegment -> XRaySegment -> Bool)
-> (XRaySegment -> XRaySegment -> Bool) -> Eq XRaySegment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegment -> XRaySegment -> Bool
$c/= :: XRaySegment -> XRaySegment -> Bool
== :: XRaySegment -> XRaySegment -> Bool
$c== :: XRaySegment -> XRaySegment -> Bool
Eq)

-- | Smart constructor for 'XRaySegment' with all the required fields.
--
-- Note that in 'XRaySegment', @end_time@ and @in_progress@ are mutually
-- exclusive. If your @end_time@ is 'Nothing', then @in_progress@ will be set
-- to 'True'.
xraySegment
  :: Text -- ^ name
  -> XRaySegmentId -- ^ id
  -> XRayTraceId -- ^ trace_id
  -> POSIXTime -- ^ start_time
  -> Maybe POSIXTime -- ^ end_time
  -> XRaySegment
xraySegment :: Text
-> XRaySegmentId
-> XRayTraceId
-> POSIXTime
-> Maybe POSIXTime
-> XRaySegment
xraySegment Text
name XRaySegmentId
segmentId XRayTraceId
traceId POSIXTime
startTime Maybe POSIXTime
mEndTime =
  (Text
-> XRaySegmentId -> POSIXTime -> Maybe POSIXTime -> XRaySegment
xraySubsegment Text
name XRaySegmentId
segmentId POSIXTime
startTime Maybe POSIXTime
mEndTime)
    { _xraySegmentTraceId :: Maybe XRayTraceId
_xraySegmentTraceId = XRayTraceId -> Maybe XRayTraceId
forall a. a -> Maybe a
Just XRayTraceId
traceId
    }

-- | An 'XRaySegment' meant to be used as an embedded subsegment in another
-- 'XRaySegment'.
xraySubsegment
  :: Text -- ^ name
  -> XRaySegmentId -- ^ id
  -> POSIXTime -- ^ start_time
  -> Maybe POSIXTime -- ^ end_time
  -> XRaySegment
xraySubsegment :: Text
-> XRaySegmentId -> POSIXTime -> Maybe POSIXTime -> XRaySegment
xraySubsegment Text
name XRaySegmentId
segmentId POSIXTime
startTime Maybe POSIXTime
mEndTime = XRaySegment :: Text
-> XRaySegmentId
-> Maybe XRayTraceId
-> POSIXTime
-> Maybe POSIXTime
-> Maybe Bool
-> Maybe XRaySegmentId
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe XRaySegmentService
-> Maybe Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Value
-> Maybe XRaySegmentHttp
-> Maybe Object
-> Maybe Object
-> Maybe [XRaySegment]
-> Maybe XRaySegmentAws
-> Maybe XRaySegmentSql
-> XRaySegment
XRaySegment
  { _xraySegmentName :: Text
_xraySegmentName = Text
name
  , _xraySegmentId :: XRaySegmentId
_xraySegmentId = XRaySegmentId
segmentId
  , _xraySegmentTraceId :: Maybe XRayTraceId
_xraySegmentTraceId = Maybe XRayTraceId
forall a. Maybe a
Nothing
  , _xraySegmentStartTime :: POSIXTime
_xraySegmentStartTime = POSIXTime
startTime
    -- NB: We must either specify end time or in_progress = true
  , _xraySegmentEndTime :: Maybe POSIXTime
_xraySegmentEndTime = Maybe POSIXTime
mEndTime
  , _xraySegmentInProgress :: Maybe Bool
_xraySegmentInProgress = if Maybe POSIXTime -> Bool
forall a. Maybe a -> Bool
isNothing Maybe POSIXTime
mEndTime then Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True else Maybe Bool
forall a. Maybe a
Nothing
  , _xraySegmentParentId :: Maybe XRaySegmentId
_xraySegmentParentId = Maybe XRaySegmentId
forall a. Maybe a
Nothing
  , _xraySegmentType :: Maybe Text
_xraySegmentType = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentOrigin :: Maybe Text
_xraySegmentOrigin = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentUser :: Maybe Text
_xraySegmentUser = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentNamespace :: Maybe Text
_xraySegmentNamespace = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentService :: Maybe XRaySegmentService
_xraySegmentService = Maybe XRaySegmentService
forall a. Maybe a
Nothing
  , _xraySegmentError :: Maybe Bool
_xraySegmentError = Maybe Bool
forall a. Maybe a
Nothing
  , _xraySegmentThrottle :: Maybe Bool
_xraySegmentThrottle = Maybe Bool
forall a. Maybe a
Nothing
  , _xraySegmentFault :: Maybe Bool
_xraySegmentFault = Maybe Bool
forall a. Maybe a
Nothing
  , _xraySegmentCause :: Maybe Value
_xraySegmentCause = Maybe Value
forall a. Maybe a
Nothing
  , _xraySegmentHttp :: Maybe XRaySegmentHttp
_xraySegmentHttp = Maybe XRaySegmentHttp
forall a. Maybe a
Nothing
  , _xraySegmentAnnotations :: Maybe Object
_xraySegmentAnnotations = Maybe Object
forall a. Maybe a
Nothing
  , _xraySegmentMetadata :: Maybe Object
_xraySegmentMetadata = Maybe Object
forall a. Maybe a
Nothing
  , _xraySegmentSubsegments :: Maybe [XRaySegment]
_xraySegmentSubsegments = Maybe [XRaySegment]
forall a. Maybe a
Nothing
  , _xraySegmentAws :: Maybe XRaySegmentAws
_xraySegmentAws = Maybe XRaySegmentAws
forall a. Maybe a
Nothing
  , _xraySegmentSql :: Maybe XRaySegmentSql
_xraySegmentSql = Maybe XRaySegmentSql
forall a. Maybe a
Nothing
  }

-- | Smart constructor for an independent subsegment. Includes additional
-- required fields.
xrayIndependentSubsegment
  :: Text -- ^ name
  -> XRaySegmentId -- ^ id
  -> XRayTraceId -- ^ trace_id
  -> POSIXTime -- ^ start_time
  -> Maybe POSIXTime -- ^ end_time
  -> XRaySegmentId -- ^ parent_id
  -> XRaySegment
xrayIndependentSubsegment :: Text
-> XRaySegmentId
-> XRayTraceId
-> POSIXTime
-> Maybe POSIXTime
-> XRaySegmentId
-> XRaySegment
xrayIndependentSubsegment Text
name XRaySegmentId
segmentId XRayTraceId
traceId POSIXTime
startTime Maybe POSIXTime
mEndTime XRaySegmentId
parentId =
  (Text
-> XRaySegmentId
-> XRayTraceId
-> POSIXTime
-> Maybe POSIXTime
-> XRaySegment
xraySegment Text
name XRaySegmentId
segmentId XRayTraceId
traceId POSIXTime
startTime Maybe POSIXTime
mEndTime)
    { _xraySegmentType :: Maybe Text
_xraySegmentType = Text -> Maybe Text
forall a. a -> Maybe a
Just Text
"subsegment"
    , _xraySegmentParentId :: Maybe XRaySegmentId
_xraySegmentParentId = XRaySegmentId -> Maybe XRaySegmentId
forall a. a -> Maybe a
Just XRaySegmentId
parentId
    }

-- | Type for the @service@ field of a segment document.
newtype XRaySegmentService
  = XRaySegmentService
  { XRaySegmentService -> Text
_xraySegmentServiceVersion :: Text
    -- ^ A string that identifies the version of your application that served
    -- the request.
  } deriving (Int -> XRaySegmentService -> ShowS
[XRaySegmentService] -> ShowS
XRaySegmentService -> String
(Int -> XRaySegmentService -> ShowS)
-> (XRaySegmentService -> String)
-> ([XRaySegmentService] -> ShowS)
-> Show XRaySegmentService
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentService] -> ShowS
$cshowList :: [XRaySegmentService] -> ShowS
show :: XRaySegmentService -> String
$cshow :: XRaySegmentService -> String
showsPrec :: Int -> XRaySegmentService -> ShowS
$cshowsPrec :: Int -> XRaySegmentService -> ShowS
Show, XRaySegmentService -> XRaySegmentService -> Bool
(XRaySegmentService -> XRaySegmentService -> Bool)
-> (XRaySegmentService -> XRaySegmentService -> Bool)
-> Eq XRaySegmentService
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentService -> XRaySegmentService -> Bool
$c/= :: XRaySegmentService -> XRaySegmentService -> Bool
== :: XRaySegmentService -> XRaySegmentService -> Bool
$c== :: XRaySegmentService -> XRaySegmentService -> Bool
Eq)

-- | See
-- <http://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-http>
data XRaySegmentHttp
  = XRaySegmentHttp
  { XRaySegmentHttp -> Maybe XRaySegmentHttpRequest
_xraySegmentHttpRequest :: !(Maybe XRaySegmentHttpRequest)
  , XRaySegmentHttp -> Maybe XRaySegmentHttpResponse
_xraySegmentHttpResponse :: !(Maybe XRaySegmentHttpResponse)
  } deriving (Int -> XRaySegmentHttp -> ShowS
[XRaySegmentHttp] -> ShowS
XRaySegmentHttp -> String
(Int -> XRaySegmentHttp -> ShowS)
-> (XRaySegmentHttp -> String)
-> ([XRaySegmentHttp] -> ShowS)
-> Show XRaySegmentHttp
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentHttp] -> ShowS
$cshowList :: [XRaySegmentHttp] -> ShowS
show :: XRaySegmentHttp -> String
$cshow :: XRaySegmentHttp -> String
showsPrec :: Int -> XRaySegmentHttp -> ShowS
$cshowsPrec :: Int -> XRaySegmentHttp -> ShowS
Show, XRaySegmentHttp -> XRaySegmentHttp -> Bool
(XRaySegmentHttp -> XRaySegmentHttp -> Bool)
-> (XRaySegmentHttp -> XRaySegmentHttp -> Bool)
-> Eq XRaySegmentHttp
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentHttp -> XRaySegmentHttp -> Bool
$c/= :: XRaySegmentHttp -> XRaySegmentHttp -> Bool
== :: XRaySegmentHttp -> XRaySegmentHttp -> Bool
$c== :: XRaySegmentHttp -> XRaySegmentHttp -> Bool
Eq)

-- | Constructor for 'XRaySegmentHttp' with fields initialized to 'Nothing'.
xraySegmentHttpDef :: XRaySegmentHttp
xraySegmentHttpDef :: XRaySegmentHttp
xraySegmentHttpDef = XRaySegmentHttp :: Maybe XRaySegmentHttpRequest
-> Maybe XRaySegmentHttpResponse -> XRaySegmentHttp
XRaySegmentHttp
  { _xraySegmentHttpRequest :: Maybe XRaySegmentHttpRequest
_xraySegmentHttpRequest = Maybe XRaySegmentHttpRequest
forall a. Maybe a
Nothing
  , _xraySegmentHttpResponse :: Maybe XRaySegmentHttpResponse
_xraySegmentHttpResponse = Maybe XRaySegmentHttpResponse
forall a. Maybe a
Nothing
  }

data XRaySegmentHttpRequest
  = XRaySegmentHttpRequest
  { XRaySegmentHttpRequest -> Maybe Text
_xraySegmentHttpRequestMethod :: !(Maybe Text)
    -- ^ The request method. For example, GET.
  , XRaySegmentHttpRequest -> Maybe Text
_xraySegmentHttpRequestUrl :: !(Maybe Text)
    -- ^ The full URL of the request, compiled from the protocol, hostname, and
    -- path of the request.
  , XRaySegmentHttpRequest -> Maybe Text
_xraySegmentHttpRequestUserAgent :: !(Maybe Text)
    -- ^ The user agent string from the requester's client.
  , XRaySegmentHttpRequest -> Maybe Text
_xraySegmentHttpRequestClientIp :: !(Maybe Text)
    -- ^ The IP address of the requester. Can be retrieved from the IP packet's
    -- Source Address or, for forwarded requests, from an X-Forwarded-For
    -- header.
  , XRaySegmentHttpRequest -> Maybe Bool
_xraySegmentHttpRequestXForwardedFor :: !(Maybe Bool)
    -- ^ (segments only) boolean indicating that the client_ip was read from an
    -- X-Forwarded-For header and is not reliable as it could have been forged.
  , XRaySegmentHttpRequest -> Maybe Bool
_xraySegmentHttpRequestTraced :: !(Maybe Bool)
    -- ^ (subsegments only) boolean indicating that the downstream call is to
    -- another traced service. If this field is set to true, X-Ray considers
    -- the trace to be broken until the downstream service uploads a segment
    -- with a parent_id that matches the id of the subsegment that contains
    -- this block.
  } deriving (Int -> XRaySegmentHttpRequest -> ShowS
[XRaySegmentHttpRequest] -> ShowS
XRaySegmentHttpRequest -> String
(Int -> XRaySegmentHttpRequest -> ShowS)
-> (XRaySegmentHttpRequest -> String)
-> ([XRaySegmentHttpRequest] -> ShowS)
-> Show XRaySegmentHttpRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentHttpRequest] -> ShowS
$cshowList :: [XRaySegmentHttpRequest] -> ShowS
show :: XRaySegmentHttpRequest -> String
$cshow :: XRaySegmentHttpRequest -> String
showsPrec :: Int -> XRaySegmentHttpRequest -> ShowS
$cshowsPrec :: Int -> XRaySegmentHttpRequest -> ShowS
Show, XRaySegmentHttpRequest -> XRaySegmentHttpRequest -> Bool
(XRaySegmentHttpRequest -> XRaySegmentHttpRequest -> Bool)
-> (XRaySegmentHttpRequest -> XRaySegmentHttpRequest -> Bool)
-> Eq XRaySegmentHttpRequest
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentHttpRequest -> XRaySegmentHttpRequest -> Bool
$c/= :: XRaySegmentHttpRequest -> XRaySegmentHttpRequest -> Bool
== :: XRaySegmentHttpRequest -> XRaySegmentHttpRequest -> Bool
$c== :: XRaySegmentHttpRequest -> XRaySegmentHttpRequest -> Bool
Eq)

-- | Constructor for 'XRaySegmentHttpRequest' with fields initialized to 'Nothing'.
xraySegmentHttpRequestDef :: XRaySegmentHttpRequest
xraySegmentHttpRequestDef :: XRaySegmentHttpRequest
xraySegmentHttpRequestDef = XRaySegmentHttpRequest :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> XRaySegmentHttpRequest
XRaySegmentHttpRequest
  { _xraySegmentHttpRequestMethod :: Maybe Text
_xraySegmentHttpRequestMethod = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentHttpRequestUrl :: Maybe Text
_xraySegmentHttpRequestUrl = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentHttpRequestUserAgent :: Maybe Text
_xraySegmentHttpRequestUserAgent = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentHttpRequestClientIp :: Maybe Text
_xraySegmentHttpRequestClientIp = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentHttpRequestXForwardedFor :: Maybe Bool
_xraySegmentHttpRequestXForwardedFor = Maybe Bool
forall a. Maybe a
Nothing
  , _xraySegmentHttpRequestTraced :: Maybe Bool
_xraySegmentHttpRequestTraced = Maybe Bool
forall a. Maybe a
Nothing
  }

data XRaySegmentHttpResponse
  = XRaySegmentHttpResponse
  { XRaySegmentHttpResponse -> Maybe Int
_xraySegmentHttpResponseStatus :: !(Maybe Int)
    -- ^ number indicating the HTTP status of the response.
  , XRaySegmentHttpResponse -> Maybe Int
_xraySegmentHttpResponseContentLength :: !(Maybe Int)
    -- ^ number indicating the length of the response body in bytes.
  } deriving (Int -> XRaySegmentHttpResponse -> ShowS
[XRaySegmentHttpResponse] -> ShowS
XRaySegmentHttpResponse -> String
(Int -> XRaySegmentHttpResponse -> ShowS)
-> (XRaySegmentHttpResponse -> String)
-> ([XRaySegmentHttpResponse] -> ShowS)
-> Show XRaySegmentHttpResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentHttpResponse] -> ShowS
$cshowList :: [XRaySegmentHttpResponse] -> ShowS
show :: XRaySegmentHttpResponse -> String
$cshow :: XRaySegmentHttpResponse -> String
showsPrec :: Int -> XRaySegmentHttpResponse -> ShowS
$cshowsPrec :: Int -> XRaySegmentHttpResponse -> ShowS
Show, XRaySegmentHttpResponse -> XRaySegmentHttpResponse -> Bool
(XRaySegmentHttpResponse -> XRaySegmentHttpResponse -> Bool)
-> (XRaySegmentHttpResponse -> XRaySegmentHttpResponse -> Bool)
-> Eq XRaySegmentHttpResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentHttpResponse -> XRaySegmentHttpResponse -> Bool
$c/= :: XRaySegmentHttpResponse -> XRaySegmentHttpResponse -> Bool
== :: XRaySegmentHttpResponse -> XRaySegmentHttpResponse -> Bool
$c== :: XRaySegmentHttpResponse -> XRaySegmentHttpResponse -> Bool
Eq)

-- | Constructor for 'XRaySegmentHttpResponse' with fields initialized to 'Nothing'.
xraySegmentHttpResponseDef :: XRaySegmentHttpResponse
xraySegmentHttpResponseDef :: XRaySegmentHttpResponse
xraySegmentHttpResponseDef = XRaySegmentHttpResponse :: Maybe Int -> Maybe Int -> XRaySegmentHttpResponse
XRaySegmentHttpResponse
  { _xraySegmentHttpResponseStatus :: Maybe Int
_xraySegmentHttpResponseStatus = Maybe Int
forall a. Maybe a
Nothing
  , _xraySegmentHttpResponseContentLength :: Maybe Int
_xraySegmentHttpResponseContentLength = Maybe Int
forall a. Maybe a
Nothing
  }

-- | Type for the @aws@ field in a segment. See
-- <http://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-aws>
--
-- NOTE: Please see the documentation for what fields are allowed in a segment
-- versus a subsegment.
data XRaySegmentAws
  = XRaySegmentAws
  { XRaySegmentAws -> Maybe Text
_xraySegmentAwsAccountId :: !(Maybe Text)
    -- ^ If your application sends segments to a different AWS account, record
    -- the ID of the account running your application.
  , XRaySegmentAws -> Maybe XRaySegmentAwsEcs
_xraySegmentAwsEcs :: !(Maybe XRaySegmentAwsEcs)
    -- ^ Information about an Amazon ECS container.
  , XRaySegmentAws -> Maybe XRaySegmentAwsEc2
_xraySegmentAwsEc2 :: !(Maybe XRaySegmentAwsEc2)
    -- ^ Information about an EC2 instance.
  , XRaySegmentAws -> Maybe XRaySegmentAwsElasticBeanstalk
_xraySegmentAwsElasticBeanstalk :: !(Maybe XRaySegmentAwsElasticBeanstalk)
    -- ^ Information about an Elastic Beanstalk environment. You can find this
    -- information in a file named /var/elasticbeanstalk/xray/environment.conf
    -- on the latest Elastic Beanstalk platforms.
  , XRaySegmentAws -> Maybe Text
_xraySegmentAwsOperation :: !(Maybe Text)
    -- ^ The name of the API action invoked against an AWS service or resource.
  , XRaySegmentAws -> Maybe Text
_xraySegmentAwsRegion :: !(Maybe Text)
    -- ^ If the resource is in a region different from your application, record
    -- the region. For example, us-west-2.
  , XRaySegmentAws -> Maybe Text
_xraySegmentAwsRequestId :: !(Maybe Text)
    -- ^ Unique identifier for the request.
  , XRaySegmentAws -> Maybe Text
_xraySegmentAwsQueueUrl :: !(Maybe Text)
    -- ^ For operations on an Amazon SQS queue, the queue's URL.
  , XRaySegmentAws -> Maybe Text
_xraySegmentAwsTableName :: !(Maybe Text)
    -- ^ For operations on a DynamoDB table, the name of the table.
  } deriving (Int -> XRaySegmentAws -> ShowS
[XRaySegmentAws] -> ShowS
XRaySegmentAws -> String
(Int -> XRaySegmentAws -> ShowS)
-> (XRaySegmentAws -> String)
-> ([XRaySegmentAws] -> ShowS)
-> Show XRaySegmentAws
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentAws] -> ShowS
$cshowList :: [XRaySegmentAws] -> ShowS
show :: XRaySegmentAws -> String
$cshow :: XRaySegmentAws -> String
showsPrec :: Int -> XRaySegmentAws -> ShowS
$cshowsPrec :: Int -> XRaySegmentAws -> ShowS
Show, XRaySegmentAws -> XRaySegmentAws -> Bool
(XRaySegmentAws -> XRaySegmentAws -> Bool)
-> (XRaySegmentAws -> XRaySegmentAws -> Bool) -> Eq XRaySegmentAws
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentAws -> XRaySegmentAws -> Bool
$c/= :: XRaySegmentAws -> XRaySegmentAws -> Bool
== :: XRaySegmentAws -> XRaySegmentAws -> Bool
$c== :: XRaySegmentAws -> XRaySegmentAws -> Bool
Eq)

-- | Constructor for 'XRaySegmentAws' with fields initialized to 'Nothing'.
xraySegmentAwsDef :: XRaySegmentAws
xraySegmentAwsDef :: XRaySegmentAws
xraySegmentAwsDef = XRaySegmentAws :: Maybe Text
-> Maybe XRaySegmentAwsEcs
-> Maybe XRaySegmentAwsEc2
-> Maybe XRaySegmentAwsElasticBeanstalk
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> XRaySegmentAws
XRaySegmentAws
  { _xraySegmentAwsAccountId :: Maybe Text
_xraySegmentAwsAccountId = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsEcs :: Maybe XRaySegmentAwsEcs
_xraySegmentAwsEcs = Maybe XRaySegmentAwsEcs
forall a. Maybe a
Nothing
  , _xraySegmentAwsEc2 :: Maybe XRaySegmentAwsEc2
_xraySegmentAwsEc2 = Maybe XRaySegmentAwsEc2
forall a. Maybe a
Nothing
  , _xraySegmentAwsElasticBeanstalk :: Maybe XRaySegmentAwsElasticBeanstalk
_xraySegmentAwsElasticBeanstalk = Maybe XRaySegmentAwsElasticBeanstalk
forall a. Maybe a
Nothing
  , _xraySegmentAwsOperation :: Maybe Text
_xraySegmentAwsOperation = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsRegion :: Maybe Text
_xraySegmentAwsRegion = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsRequestId :: Maybe Text
_xraySegmentAwsRequestId = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsQueueUrl :: Maybe Text
_xraySegmentAwsQueueUrl = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsTableName :: Maybe Text
_xraySegmentAwsTableName = Maybe Text
forall a. Maybe a
Nothing
  }

newtype XRaySegmentAwsEcs
  = XRaySegmentAwsEcs
  { XRaySegmentAwsEcs -> Maybe Text
_xraySegmentAwsEcsContainer :: Maybe Text
    -- ^ The container ID of the container running your application.
  } deriving (Int -> XRaySegmentAwsEcs -> ShowS
[XRaySegmentAwsEcs] -> ShowS
XRaySegmentAwsEcs -> String
(Int -> XRaySegmentAwsEcs -> ShowS)
-> (XRaySegmentAwsEcs -> String)
-> ([XRaySegmentAwsEcs] -> ShowS)
-> Show XRaySegmentAwsEcs
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentAwsEcs] -> ShowS
$cshowList :: [XRaySegmentAwsEcs] -> ShowS
show :: XRaySegmentAwsEcs -> String
$cshow :: XRaySegmentAwsEcs -> String
showsPrec :: Int -> XRaySegmentAwsEcs -> ShowS
$cshowsPrec :: Int -> XRaySegmentAwsEcs -> ShowS
Show, XRaySegmentAwsEcs -> XRaySegmentAwsEcs -> Bool
(XRaySegmentAwsEcs -> XRaySegmentAwsEcs -> Bool)
-> (XRaySegmentAwsEcs -> XRaySegmentAwsEcs -> Bool)
-> Eq XRaySegmentAwsEcs
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentAwsEcs -> XRaySegmentAwsEcs -> Bool
$c/= :: XRaySegmentAwsEcs -> XRaySegmentAwsEcs -> Bool
== :: XRaySegmentAwsEcs -> XRaySegmentAwsEcs -> Bool
$c== :: XRaySegmentAwsEcs -> XRaySegmentAwsEcs -> Bool
Eq)

-- | Constructor for 'XRaySegmentAwsEcs' with fields initialized to 'Nothing'.
xraySegmentAwsEcsDef :: XRaySegmentAwsEcs
xraySegmentAwsEcsDef :: XRaySegmentAwsEcs
xraySegmentAwsEcsDef =
  XRaySegmentAwsEcs :: Maybe Text -> XRaySegmentAwsEcs
XRaySegmentAwsEcs {_xraySegmentAwsEcsContainer :: Maybe Text
_xraySegmentAwsEcsContainer = Maybe Text
forall a. Maybe a
Nothing}

data XRaySegmentAwsEc2
  = XRaySegmentAwsEc2
  { XRaySegmentAwsEc2 -> Maybe Text
_xraySegmentAwsEc2InstanceId :: !(Maybe Text)
    -- ^ The instance ID of the EC2 instance.
  , XRaySegmentAwsEc2 -> Maybe Text
_xraySegmentAwsEc2AvailabilityZone :: !(Maybe Text)
    -- ^ The Availability Zone in which the instance is running.
  } deriving (Int -> XRaySegmentAwsEc2 -> ShowS
[XRaySegmentAwsEc2] -> ShowS
XRaySegmentAwsEc2 -> String
(Int -> XRaySegmentAwsEc2 -> ShowS)
-> (XRaySegmentAwsEc2 -> String)
-> ([XRaySegmentAwsEc2] -> ShowS)
-> Show XRaySegmentAwsEc2
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentAwsEc2] -> ShowS
$cshowList :: [XRaySegmentAwsEc2] -> ShowS
show :: XRaySegmentAwsEc2 -> String
$cshow :: XRaySegmentAwsEc2 -> String
showsPrec :: Int -> XRaySegmentAwsEc2 -> ShowS
$cshowsPrec :: Int -> XRaySegmentAwsEc2 -> ShowS
Show, XRaySegmentAwsEc2 -> XRaySegmentAwsEc2 -> Bool
(XRaySegmentAwsEc2 -> XRaySegmentAwsEc2 -> Bool)
-> (XRaySegmentAwsEc2 -> XRaySegmentAwsEc2 -> Bool)
-> Eq XRaySegmentAwsEc2
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentAwsEc2 -> XRaySegmentAwsEc2 -> Bool
$c/= :: XRaySegmentAwsEc2 -> XRaySegmentAwsEc2 -> Bool
== :: XRaySegmentAwsEc2 -> XRaySegmentAwsEc2 -> Bool
$c== :: XRaySegmentAwsEc2 -> XRaySegmentAwsEc2 -> Bool
Eq)

-- | Constructor for 'XRaySegmentAwsEc2' with fields initialized to 'Nothing'.
xraySegmentAwsEc2Def :: XRaySegmentAwsEc2
xraySegmentAwsEc2Def :: XRaySegmentAwsEc2
xraySegmentAwsEc2Def = XRaySegmentAwsEc2 :: Maybe Text -> Maybe Text -> XRaySegmentAwsEc2
XRaySegmentAwsEc2
  { _xraySegmentAwsEc2InstanceId :: Maybe Text
_xraySegmentAwsEc2InstanceId = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsEc2AvailabilityZone :: Maybe Text
_xraySegmentAwsEc2AvailabilityZone = Maybe Text
forall a. Maybe a
Nothing
  }

data XRaySegmentAwsElasticBeanstalk
  = XRaySegmentAwsElasticBeanstalk
  { XRaySegmentAwsElasticBeanstalk -> Maybe Text
_xraySegmentAwsElasticBeanstalkEnvironmentName :: !(Maybe Text)
    -- ^ The name of the environment.
  , XRaySegmentAwsElasticBeanstalk -> Maybe Text
_xraySegmentAwsElasticBeanstalkVersionLabel :: !(Maybe Text)
    -- ^ The name of the application version that is currently deployed to the
    -- instance that served the request.
  , XRaySegmentAwsElasticBeanstalk -> Maybe Int
_xraySegmentAwsElasticBeanstalkDeploymentId :: !(Maybe Int)
    -- ^ number indicating the ID of the last successful deployment to the
    -- instance that served the request.
  } deriving (Int -> XRaySegmentAwsElasticBeanstalk -> ShowS
[XRaySegmentAwsElasticBeanstalk] -> ShowS
XRaySegmentAwsElasticBeanstalk -> String
(Int -> XRaySegmentAwsElasticBeanstalk -> ShowS)
-> (XRaySegmentAwsElasticBeanstalk -> String)
-> ([XRaySegmentAwsElasticBeanstalk] -> ShowS)
-> Show XRaySegmentAwsElasticBeanstalk
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentAwsElasticBeanstalk] -> ShowS
$cshowList :: [XRaySegmentAwsElasticBeanstalk] -> ShowS
show :: XRaySegmentAwsElasticBeanstalk -> String
$cshow :: XRaySegmentAwsElasticBeanstalk -> String
showsPrec :: Int -> XRaySegmentAwsElasticBeanstalk -> ShowS
$cshowsPrec :: Int -> XRaySegmentAwsElasticBeanstalk -> ShowS
Show, XRaySegmentAwsElasticBeanstalk
-> XRaySegmentAwsElasticBeanstalk -> Bool
(XRaySegmentAwsElasticBeanstalk
 -> XRaySegmentAwsElasticBeanstalk -> Bool)
-> (XRaySegmentAwsElasticBeanstalk
    -> XRaySegmentAwsElasticBeanstalk -> Bool)
-> Eq XRaySegmentAwsElasticBeanstalk
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentAwsElasticBeanstalk
-> XRaySegmentAwsElasticBeanstalk -> Bool
$c/= :: XRaySegmentAwsElasticBeanstalk
-> XRaySegmentAwsElasticBeanstalk -> Bool
== :: XRaySegmentAwsElasticBeanstalk
-> XRaySegmentAwsElasticBeanstalk -> Bool
$c== :: XRaySegmentAwsElasticBeanstalk
-> XRaySegmentAwsElasticBeanstalk -> Bool
Eq)

-- | Constructor for 'XRaySegmentAwsElasticBeanstalk' with fields initialized
-- to 'Nothing'.
xraySegmentAwsElasticBeanstalkDef :: XRaySegmentAwsElasticBeanstalk
xraySegmentAwsElasticBeanstalkDef :: XRaySegmentAwsElasticBeanstalk
xraySegmentAwsElasticBeanstalkDef = XRaySegmentAwsElasticBeanstalk :: Maybe Text
-> Maybe Text -> Maybe Int -> XRaySegmentAwsElasticBeanstalk
XRaySegmentAwsElasticBeanstalk
  { _xraySegmentAwsElasticBeanstalkEnvironmentName :: Maybe Text
_xraySegmentAwsElasticBeanstalkEnvironmentName = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsElasticBeanstalkVersionLabel :: Maybe Text
_xraySegmentAwsElasticBeanstalkVersionLabel = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentAwsElasticBeanstalkDeploymentId :: Maybe Int
_xraySegmentAwsElasticBeanstalkDeploymentId = Maybe Int
forall a. Maybe a
Nothing
  }

data XRaySegmentSql
  = XRaySegmentSql
  { XRaySegmentSql -> Maybe Text
_xraySegmentSqlConnectionString :: !(Maybe Text)
    -- ^ For SQL Server or other database connections that don't use URL
    -- connection strings, record the connection string, excluding passwords.
  , XRaySegmentSql -> Maybe Text
_xraySegmentSqlUrl :: !(Maybe Text)
    -- ^ For a database connection that uses a URL connection string, record
    -- the URL, excluding passwords.
  , XRaySegmentSql -> Maybe Text
_xraySegmentSqlSanitizedQuery :: !(Maybe Text)
    -- ^ The database query, with any user provided values removed or replaced
    -- by a placeholder.
  , XRaySegmentSql -> Maybe Text
_xraySegmentSqlDatabaseType :: !(Maybe Text)
    -- ^ The name of the database engine.
  , XRaySegmentSql -> Maybe Text
_xraySegmentSqlDatabaseVersion :: !(Maybe Text)
    -- ^ The version number of the database engine.
  , XRaySegmentSql -> Maybe Text
_xraySegmentSqlDriverVersion :: !(Maybe Text)
    -- ^ The name and version number of the database engine driver that your
    -- application uses.
  , XRaySegmentSql -> Maybe Text
_xraySegmentSqlUser :: !(Maybe Text)
    -- ^ The database username.
  , XRaySegmentSql -> Maybe Text
_xraySegmentSqlPreparation :: !(Maybe Text)
    -- ^ call if the query used a PreparedCall; statement if the query used a
    -- PreparedStatement.
  } deriving (Int -> XRaySegmentSql -> ShowS
[XRaySegmentSql] -> ShowS
XRaySegmentSql -> String
(Int -> XRaySegmentSql -> ShowS)
-> (XRaySegmentSql -> String)
-> ([XRaySegmentSql] -> ShowS)
-> Show XRaySegmentSql
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [XRaySegmentSql] -> ShowS
$cshowList :: [XRaySegmentSql] -> ShowS
show :: XRaySegmentSql -> String
$cshow :: XRaySegmentSql -> String
showsPrec :: Int -> XRaySegmentSql -> ShowS
$cshowsPrec :: Int -> XRaySegmentSql -> ShowS
Show, XRaySegmentSql -> XRaySegmentSql -> Bool
(XRaySegmentSql -> XRaySegmentSql -> Bool)
-> (XRaySegmentSql -> XRaySegmentSql -> Bool) -> Eq XRaySegmentSql
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: XRaySegmentSql -> XRaySegmentSql -> Bool
$c/= :: XRaySegmentSql -> XRaySegmentSql -> Bool
== :: XRaySegmentSql -> XRaySegmentSql -> Bool
$c== :: XRaySegmentSql -> XRaySegmentSql -> Bool
Eq)

-- | Constructor for 'XRaySegmentSql' with fields initialized to 'Nothing'.
xraySegmentSqlDef :: XRaySegmentSql
xraySegmentSqlDef :: XRaySegmentSql
xraySegmentSqlDef = XRaySegmentSql :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> XRaySegmentSql
XRaySegmentSql
  { _xraySegmentSqlConnectionString :: Maybe Text
_xraySegmentSqlConnectionString = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentSqlUrl :: Maybe Text
_xraySegmentSqlUrl = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentSqlSanitizedQuery :: Maybe Text
_xraySegmentSqlSanitizedQuery = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentSqlDatabaseType :: Maybe Text
_xraySegmentSqlDatabaseType = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentSqlDatabaseVersion :: Maybe Text
_xraySegmentSqlDatabaseVersion = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentSqlDriverVersion :: Maybe Text
_xraySegmentSqlDriverVersion = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentSqlUser :: Maybe Text
_xraySegmentSqlUser = Maybe Text
forall a. Maybe a
Nothing
  , _xraySegmentSqlPreparation :: Maybe Text
_xraySegmentSqlPreparation = Maybe Text
forall a. Maybe a
Nothing
  }

makeLenses ''XRaySegment
makeLenses ''XRaySegmentHttp
makeLenses ''XRaySegmentHttpRequest
makeLenses ''XRaySegmentHttpResponse
makeLenses ''XRaySegmentAws
makeLenses ''XRaySegmentAwsEcs
makeLenses ''XRaySegmentAwsEc2
makeLenses ''XRaySegmentAwsElasticBeanstalk
makeLenses ''XRaySegmentSql
makeLenses ''XRaySegmentService

deriveJSON (xrayAesonOptions "_xraySegment") ''XRaySegment
deriveJSON (xrayAesonOptions "_xraySegmentHttp") ''XRaySegmentHttp
deriveJSON (xrayAesonOptions "_xraySegmentHttpRequest") ''XRaySegmentHttpRequest
deriveJSON (xrayAesonOptions "_xraySegmentHttpResponse") ''XRaySegmentHttpResponse
deriveJSON (xrayAesonOptions "_xraySegmentAws") ''XRaySegmentAws
deriveJSON (xrayAesonOptions "_xraySegmentAwsEcs") ''XRaySegmentAwsEcs
deriveJSON (xrayAesonOptions "_xraySegmentAwsEc2") ''XRaySegmentAwsEc2
deriveJSON (xrayAesonOptions "_xraySegmentAwsElasticBeanstalk") ''XRaySegmentAwsElasticBeanstalk
deriveJSON (xrayAesonOptions "_xraySegmentSql") ''XRaySegmentSql
deriveJSON (xrayAesonOptions "_xraySegmentService") ''XRaySegmentService