github.com/Axway/agent-sdk@v1.1.101/pkg/transaction/definitions.go (about)

     1  package transaction
     2  
     3  import (
     4  	"github.com/Axway/agent-sdk/pkg/transaction/models"
     5  	"github.com/Axway/agent-sdk/pkg/transaction/util"
     6  )
     7  
     8  // TypeTransactionSummary - Transaction summary type
     9  const TypeTransactionSummary = "transactionSummary"
    10  
    11  // TypeTransactionEvent - Transaction Event type
    12  const TypeTransactionEvent = "transactionEvent"
    13  
    14  // SummaryEventProxyIDPrefix - Prefix for proxyID in summary event
    15  const SummaryEventProxyIDPrefix = util.SummaryEventProxyIDPrefix
    16  
    17  // SummaryEventApplicationIDPrefix - Prefix for application.ID in summary event
    18  const SummaryEventApplicationIDPrefix = util.SummaryEventApplicationIDPrefix
    19  
    20  // TxEventStatus - Type def for transaction event status
    21  type TxEventStatus string
    22  
    23  // Constants for transaction event status
    24  const (
    25  	// TxEventStatusPass - Constant for Pass transaction event status
    26  	TxEventStatusPass TxEventStatus = "Pass"
    27  
    28  	// TxEventStatusFail - Constant for Fail transaction event status
    29  	TxEventStatusFail TxEventStatus = "Fail"
    30  )
    31  
    32  // TxSummaryStatus - Type def for transaction event status
    33  type TxSummaryStatus string
    34  
    35  // Constants for transaction summary status
    36  const (
    37  	// TxSummaryStatusSuccess - Constant for Success transaction summary status
    38  	TxSummaryStatusSuccess TxSummaryStatus = "Success"
    39  
    40  	// TxSummaryStatusFailure - Constant for Success transaction summary status
    41  	TxSummaryStatusFailure TxSummaryStatus = "Failure"
    42  
    43  	// TxSummaryStatusException - Constant for Exception transaction summary status
    44  	TxSummaryStatusException TxSummaryStatus = "Exception"
    45  
    46  	// TxSummaryStatusUnknown - Constant for Exception transaction summary status
    47  	TxSummaryStatusUnknown TxSummaryStatus = "Unknown"
    48  )
    49  
    50  const (
    51  	unknown = "unknown"
    52  )
    53  
    54  // LogEvent - Log event to be sent to Condor
    55  type LogEvent struct {
    56  	Version            string   `json:"version"`
    57  	Stamp              int64    `json:"timestamp"`
    58  	TransactionID      string   `json:"transactionId"`
    59  	Environment        string   `json:"environment,omitempty"`
    60  	APICDeployment     string   `json:"apicDeployment,omitempty"`
    61  	EnvironmentName    string   `json:"environmentName,omitempty"`
    62  	EnvironmentID      string   `json:"environmentId"`
    63  	TenantID           string   `json:"tenantId"`
    64  	TrcbltPartitionID  string   `json:"trcbltPartitionId"`
    65  	Type               string   `json:"type"`
    66  	TargetPath         string   `json:"targetPath,omitempty"`
    67  	ResourcePath       string   `json:"resourcePath,omitempty"`
    68  	TransactionEvent   *Event   `json:"transactionEvent,omitempty"`
    69  	TransactionSummary *Summary `json:"transactionSummary,omitempty"`
    70  }
    71  
    72  // Summary - Represent the transaction summary event
    73  type Summary struct {
    74  	Status          string                  `json:"status,omitempty"`
    75  	StatusDetail    string                  `json:"statusDetail,omitempty"`
    76  	Duration        int                     `json:"duration"`
    77  	Team            *Team                   `json:"team,omitempty"`
    78  	Proxy           *Proxy                  `json:"proxy,omitempty"`
    79  	Runtime         *Runtime                `json:"runtime,omitempty"`
    80  	EntryPoint      *EntryPoint             `json:"entryPoint,omitempty"`
    81  	IsInMetricEvent bool                    `json:"isInMetricEvent,omitempty"`
    82  	Application     *Application            `json:"application,omitempty"`
    83  	AssetResource   *models.AssetResource   `json:"assetResource,omitempty"`
    84  	API             *models.APIDetails      `json:"api,omitempty"`
    85  	Product         *models.Product         `json:"product,omitempty"`
    86  	ProductPlan     *models.ProductPlan     `json:"productPlan,omitempty"`
    87  	Quota           *models.Quota           `json:"quota,omitempty"`
    88  	ConsumerDetails *models.ConsumerDetails `json:"consumerDetails,omitempty"`
    89  }
    90  
    91  // Application  - Represents the application used in transaction summary event (dataplane)
    92  type Application struct {
    93  	ID   string `json:"id,omitempty"`
    94  	Name string `json:"name,omitempty"`
    95  }
    96  
    97  // Team  - Represents the team used in transaction summary event
    98  type Team struct {
    99  	ID string `json:"id,omitempty"`
   100  }
   101  
   102  // Proxy - Represents the proxy definition in summary event
   103  type Proxy struct {
   104  	ID       string `json:"id,omitempty"`
   105  	Revision int    `json:"revision,omitempty"`
   106  	Name     string `json:"name,omitempty"`
   107  	Stage    string `json:"-"`
   108  	Version  string `json:"-"`
   109  }
   110  
   111  // Runtime - Represents the runtime group details if applicable in summary event
   112  type Runtime struct {
   113  	ID   string `json:"id,omitempty"`
   114  	Name string `json:"name,omitempty"`
   115  }
   116  
   117  // EntryPoint - represents the entry point details for API in summary event
   118  type EntryPoint struct {
   119  	Type   string `json:"type,omitempty"`
   120  	Method string `json:"method,omitempty"`
   121  	Path   string `json:"path,omitempty"`
   122  	Host   string `json:"host,omitempty"`
   123  }
   124  
   125  // TransportProtocol - Interface for transport protocol detail
   126  type TransportProtocol interface{}
   127  
   128  // Event - Represents the transaction detail event
   129  type Event struct {
   130  	ID          string            `json:"id,omitempty"`
   131  	ParentID    string            `json:"parentId,omitempty"`
   132  	Source      string            `json:"source,omitempty"`
   133  	Destination string            `json:"destination,omitempty"`
   134  	Duration    int               `json:"duration"`
   135  	Direction   string            `json:"direction,omitempty"`
   136  	Status      string            `json:"status,omitempty"`
   137  	Protocol    TransportProtocol `json:"protocol,omitempty"`
   138  }
   139  
   140  // Protocol - Represents the protocol details in transaction detail events
   141  type Protocol struct {
   142  	Type                   string `json:"type,omitempty"`
   143  	URI                    string `json:"uri,omitempty"`
   144  	Args                   string `json:"args,omitempty"`
   145  	Method                 string `json:"method,omitempty"`
   146  	Status                 int    `json:"status,omitempty"`
   147  	StatusText             string `json:"statusText,omitempty"`
   148  	UserAgent              string `json:"userAgent,omitempty"`
   149  	Host                   string `json:"host,omitempty"`
   150  	Version                string `json:"version,omitempty"`
   151  	BytesReceived          int    `json:"bytesReceived,omitempty"`
   152  	BytesSent              int    `json:"bytesSent,omitempty"`
   153  	RemoteName             string `json:"remoteName,omitempty"`
   154  	RemoteAddr             string `json:"remoteAddr,omitempty"`
   155  	RemotePort             int    `json:"remotePort,omitempty"`
   156  	LocalAddr              string `json:"localAddr,omitempty"`
   157  	LocalPort              int    `json:"localPort,omitempty"`
   158  	SslServerName          string `json:"sslServerName,omitempty"`
   159  	SslProtocol            string `json:"sslProtocol,omitempty"`
   160  	Referer                string `json:"referer,omitempty"`
   161  	SslSubject             string `json:"sslSubject,omitempty"`
   162  	AuthSubjectID          string `json:"authSubjectId,omitempty"`
   163  	RequestHeaders         string `json:"requestHeaders,omitempty"`
   164  	IndexedRequestHeaders  string `json:"indexedRequestHeaders,omitempty"`
   165  	ResponseHeaders        string `json:"responseHeaders,omitempty"`
   166  	IndexedResponseHeaders string `json:"indexedResponseHeaders,omitempty"`
   167  	RequestPayload         string `json:"requestPayload,omitempty"`
   168  	ResponsePayload        string `json:"responsePayload,omitempty"`
   169  	WafStatus              int    `json:"wafStatus,omitempty"`
   170  	Timing                 string `json:"timing,omitempty"`
   171  	uriRaw                 string
   172  }