Agentivity API

<back to all web services

DashboardStatsByOptions

The following routes are available for this service:
GET/DashboardStats
import Foundation
import ServiceStack

// @DataContract(Namespace="schemas.agentivity.com/types")
public class DashboardStatsByOptions : PagingMetadata
{
    /**
    * UserName in form of an email address
    */
    // @DataMember
    public var userName:String

    /**
    * Top reports
    */
    // @DataMember
    public var reportsTop:Int?

    /**
    * Reports in days span
    */
    // @DataMember
    public var reportsDaysSpan:Int?

    /**
    * Top most active users
    */
    // @DataMember
    public var mostActiveUsersTop:Int?

    /**
    * Most active users in days span
    */
    // @DataMember
    public var mostActiveUsersDaysSpan:Int?

    /**
    * Top consultants last days span
    */
    // @DataMember
    public var topConsultantsLastDaysSpan:Int?

    /**
    * Options
    */
    // @DataMember
    public var options:DashboardOptions

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case userName
        case reportsTop
        case reportsDaysSpan
        case mostActiveUsersTop
        case mostActiveUsersDaysSpan
        case topConsultantsLastDaysSpan
        case options
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        userName = try container.decodeIfPresent(String.self, forKey: .userName)
        reportsTop = try container.decodeIfPresent(Int.self, forKey: .reportsTop)
        reportsDaysSpan = try container.decodeIfPresent(Int.self, forKey: .reportsDaysSpan)
        mostActiveUsersTop = try container.decodeIfPresent(Int.self, forKey: .mostActiveUsersTop)
        mostActiveUsersDaysSpan = try container.decodeIfPresent(Int.self, forKey: .mostActiveUsersDaysSpan)
        topConsultantsLastDaysSpan = try container.decodeIfPresent(Int.self, forKey: .topConsultantsLastDaysSpan)
        options = try container.decodeIfPresent(DashboardOptions.self, forKey: .options)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if userName != nil { try container.encode(userName, forKey: .userName) }
        if reportsTop != nil { try container.encode(reportsTop, forKey: .reportsTop) }
        if reportsDaysSpan != nil { try container.encode(reportsDaysSpan, forKey: .reportsDaysSpan) }
        if mostActiveUsersTop != nil { try container.encode(mostActiveUsersTop, forKey: .mostActiveUsersTop) }
        if mostActiveUsersDaysSpan != nil { try container.encode(mostActiveUsersDaysSpan, forKey: .mostActiveUsersDaysSpan) }
        if topConsultantsLastDaysSpan != nil { try container.encode(topConsultantsLastDaysSpan, forKey: .topConsultantsLastDaysSpan) }
        if options != nil { try container.encode(options, forKey: .options) }
    }
}

// @DataContract(Name="Metadata", Namespace="schemas.agentivity.com/types")
public class PagingMetadata : Codable
{
    /**
    * Starting Record
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Starting Record", Name="Offset", ParameterType="query")
    public var offset:String

    /**
    * Number of records to return (PageSize)
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Number of records to return (PageSize)", Name="Limit", ParameterType="query")
    public var limit:String

    /**
    * Total Number of Records in a Full Reponse (if no paging)
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Total Number of Records in a Full Reponse (if no paging)", Name="TotalRecords", ParameterType="query")
    public var totalRecords:Int

    /**
    * Total Number of Records in this Reponse (on this page)
    */
    // @DataMember
    // @ApiMember(DataType="string", Description="Total Number of Records in this Reponse (on this page)", Name="ResponseRecords", ParameterType="query")
    public var responseRecords:Int

    required public init(){}
}

// @Flags()
public enum DashboardOptions : Int, Codable
{
    case ProblematicBookingsCount = 1
    case AirlineTicketingCount = 2
    case UnticketedBookingsByTauCount = 4
    case MonthlyActivity = 8
    case ActiveBookingsAirConversion = 16
    case PassengerContacts = 32
    case TopConsultants = 64
    case MostActiveUsers = 128
    case TopReports = 256
    case ReportUsageSummary = 512
    case OutstandingBookingActionsCount = 1024
}

// @DataContract(Name="AgentivityResponse", Namespace="schemas.agentivity.com/types")
public class DashboardStatsByOptionsItemResponse : ItemResponse<DashboardStats, DashboardStatsByOptionsResponseReport>
{
    required public init(){ super.init() }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
    }
}

// @DataContract(Name="AgentivityResponse", Namespace="schemas.agentivity.com/types")
public class ItemResponse<TItem : Codable, TReport : Codable> : Codable
{
    // @DataMember(Order=1)
    public var responseMetadata:ResponseMetadata

    // @DataMember(Order=2, EmitDefaultValue=false)
    public var responseReport:TReport

    // @DataMember(Order=3, EmitDefaultValue=false)
    public var responseError:AgentivityError

    required public init(){}
}

// @DataContract(Name="ResponseMetadata", Namespace="schemas.agentivity.com/types")
public class ResponseMetadata : Codable
{
    // @DataMember(Order=0)
    public var success:Bool

    // @DataMember(Order=1)
    public var hasCache:Bool

    // @DataMember(Order=2)
    public var hasPaging:Bool

    // @DataMember(Order=3, EmitDefaultValue=false)
    public var cacheMetadata:CacheMetadata

    // @DataMember(Order=4, EmitDefaultValue=false)
    public var pagingMetadata:PagingMetadata

    required public init(){}
}

// @DataContract(Name="CacheMetadata", Namespace="schemas.agentivity.com/types")
public class CacheMetadata : Codable
{
    // @DataMember(Order=1)
    public var cachedAt:Date

    // @DataMember(Order=2)
    public var cacheExpiresAt:Date

    // @DataMember(Order=0)
    public var isFromCache:Bool

    required public init(){}
}

// @DataContract(Name="ResponseMetadata", Namespace="schemas.agentivity.com/types")
public class AgentivityError : Codable
{
    // @DataMember
    public var errorCode:String

    // @DataMember
    public var message:String

    // @DataMember
    public var statusCode:String

    // @DataMember
    public var verboseMessage:String

    required public init(){}
}

// @DataContract(Name="DashboardStats", Namespace="schemas.agentivity.com/types")
public class DashboardStats : Codable
{
    // @DataMember(Order=10)
    public var problematicBookings:ThreeDayCounts

    // @DataMember(Order=20)
    public var airlineTicketing:ThreeDayCounts

    // @DataMember(Order=30)
    public var unticketedBookingsByTau:ThreeDayCounts

    // @DataMember(Order=34)
    public var outstandingBookingActions:ThreeDayCounts

    // @DataMember(Order=40)
    public var monthlyActivity:[MonthlyActivityBreakdown]

    // @DataMember(Order=50)
    public var mostActiveUsers:[UserActivity]

    // @DataMember(Order=60)
    public var topConsultants:[ConsultantPerformance]

    // @DataMember(Order=70)
    public var topReports:[ReportPerformance]

    // @DataMember(Order=80)
    public var activeBookingsAirConversion:BookingsAirConversion

    // @DataMember(Order=90)
    public var passengerElements:[PassengerContactElements]

    // @DataMember(Order=90)
    public var reportUsageSummary:[ReportPerformance]

    // @DataMember(Order=200)
    public var monthlyActivityFormatted:String

    // @DataMember(Order=210)
    public var passengerElementsFormatted:String

    required public init(){}
}

// @DataContract(Name="ThreeDayCounts", Namespace="schemas.agentivity.com/types")
public class ThreeDayCounts : Codable
{
    // @DataMember(Order=10)
    public var dayPlusZeroTtl:Int

    // @DataMember(Order=20)
    public var dayPlusOneTtl:Int

    // @DataMember(Order=30)
    public var dayPlusTwoTtl:Int

    required public init(){}
}

// @DataContract(Name="MonthlyActivityBreakdown", Namespace="schemas.agentivity.com/types")
public class MonthlyActivityBreakdown : Codable
{
    // @DataMember(Order=10)
    public var reportDate:String

    // @DataMember(Order=20)
    public var monthlyEvents:Int

    // @DataMember(Order=30)
    public var c:Int

    // @DataMember(Order=40)
    public var c_Percentage:Float

    // @DataMember(Order=50)
    public var i:Int

    // @DataMember(Order=60)
    public var i_Percentage:Float

    // @DataMember(Order=70)
    public var t:Int

    // @DataMember(Order=80)
    public var t_Percentage:Float

    // @DataMember(Order=90)
    public var x:Int

    // @DataMember(Order=100)
    public var x_Percentage:Float

    required public init(){}
}

// @DataContract(Name="UserActivity", Namespace="schemas.agentivity.com/types")
public class UserActivity : Codable
{
    // @DataMember(Order=10)
    public var userName:String

    // @DataMember(Order=20)
    public var firstName:String

    // @DataMember(Order=30)
    public var lastName:String

    // @DataMember(Order=40)
    public var userID:Int

    // @DataMember(Order=50)
    public var userFrequency:String

    // @DataMember(Order=60)
    public var activityMeasure:Float

    required public init(){}
}

// @DataContract(Name="ConsultantPerformance", Namespace="schemas.agentivity.com/types")
public class ConsultantPerformance : Codable
{
    // @DataMember(Order=10)
    public var name:String

    // @DataMember(Order=20)
    public var total:Int

    required public init(){}
}

// @DataContract(Name="ReportPerformance", Namespace="schemas.agentivity.com/types")
public class ReportPerformance : Codable
{
    // @DataMember(Order=10)
    public var name:String

    // @DataMember(Order=20)
    public var urlSlug:String

    // @DataMember(Order=30)
    public var total:Int

    required public init(){}
}

// @DataContract(Name="BookingsAirConversion", Namespace="schemas.agentivity.com/types")
public class BookingsAirConversion : Codable
{
    // @DataMember(Order=10)
    public var totalTicketed:Int

    // @DataMember(Order=20)
    public var totalUnticketed:Int

    required public init(){}
}

// @DataContract(Name="PassengerContactElements", Namespace="schemas.agentivity.com/types")
public class PassengerContactElements : Codable
{
    // @DataMember(Order=20)
    public var dateYear:Int

    // @DataMember(Order=20)
    public var dateMonth:Int

    // @DataMember(Order=30)
    public var withMobilePercent:Float

    // @DataMember(Order=40)
    public var withEmailPercent:Float

    // @DataMember(Order=50)
    public var totalWithMobile:Int

    // @DataMember(Order=60)
    public var totalWithEmail:Int

    // @DataMember(Order=70)
    public var totalCreated:Int

    required public init(){}
}

// @DataContract(Name="DashboardStats", Namespace="schemas.agentivity.com/types")
public class DashboardStatsByOptionsResponseReport : Report<DashboardStatsByOptionsItemResponse, DashboardStats>
{
    required public init(){ super.init() }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
    }
}

// @DataContract(Namespace="schemas.agentivity.com/types")
public class Report<TItemResponse : Codable, TItem : Codable> : Codable
{
    // @DataMember(Order=1, EmitDefaultValue=false)
    public var item:TItem

    required public init(){}
}


Swift DashboardStatsByOptions DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /DashboardStats HTTP/1.1 
Host: api.agentivity.com 
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<AgentivityResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="schemas.agentivity.com/types">
  <ResponseMetadata>
    <Success>false</Success>
    <HasCache>false</HasCache>
    <HasPaging>false</HasPaging>
    <CacheMetadata>
      <IsFromCache>false</IsFromCache>
      <CachedAt>0001-01-01T00:00:00</CachedAt>
      <CacheExpiresAt>0001-01-01T00:00:00</CacheExpiresAt>
    </CacheMetadata>
    <PagingMetadata>
      <Limit>String</Limit>
      <Offset>String</Offset>
      <ResponseRecords>0</ResponseRecords>
      <TotalRecords>0</TotalRecords>
    </PagingMetadata>
  </ResponseMetadata>
  <ResponseReport>
    <Item>
      <ProblematicBookings>
        <DayPlusZeroTtl>0</DayPlusZeroTtl>
        <DayPlusOneTtl>0</DayPlusOneTtl>
        <DayPlusTwoTtl>0</DayPlusTwoTtl>
      </ProblematicBookings>
      <AirlineTicketing>
        <DayPlusZeroTtl>0</DayPlusZeroTtl>
        <DayPlusOneTtl>0</DayPlusOneTtl>
        <DayPlusTwoTtl>0</DayPlusTwoTtl>
      </AirlineTicketing>
      <UnticketedBookingsByTau>
        <DayPlusZeroTtl>0</DayPlusZeroTtl>
        <DayPlusOneTtl>0</DayPlusOneTtl>
        <DayPlusTwoTtl>0</DayPlusTwoTtl>
      </UnticketedBookingsByTau>
      <OutstandingBookingActions>
        <DayPlusZeroTtl>0</DayPlusZeroTtl>
        <DayPlusOneTtl>0</DayPlusOneTtl>
        <DayPlusTwoTtl>0</DayPlusTwoTtl>
      </OutstandingBookingActions>
      <MonthlyActivity>
        <MonthlyActivityBreakdown>
          <ReportDate>String</ReportDate>
          <MonthlyEvents>0</MonthlyEvents>
          <C>0</C>
          <C_Percentage>0</C_Percentage>
          <I>0</I>
          <I_Percentage>0</I_Percentage>
          <T>0</T>
          <T_Percentage>0</T_Percentage>
          <X>0</X>
          <X_Percentage>0</X_Percentage>
        </MonthlyActivityBreakdown>
      </MonthlyActivity>
      <MostActiveUsers>
        <UserActivity>
          <UserName>String</UserName>
          <FirstName>String</FirstName>
          <LastName>String</LastName>
          <UserID>0</UserID>
          <UserFrequency>String</UserFrequency>
          <ActivityMeasure>0</ActivityMeasure>
        </UserActivity>
      </MostActiveUsers>
      <TopConsultants>
        <ConsultantPerformance>
          <Name>String</Name>
          <Total>0</Total>
        </ConsultantPerformance>
      </TopConsultants>
      <TopReports>
        <ReportPerformance>
          <Name>String</Name>
          <UrlSlug>String</UrlSlug>
          <Total>0</Total>
        </ReportPerformance>
      </TopReports>
      <ActiveBookingsAirConversion>
        <TotalTicketed>0</TotalTicketed>
        <TotalUnticketed>0</TotalUnticketed>
      </ActiveBookingsAirConversion>
      <PassengerElements>
        <PassengerContactElements>
          <DateMonth>0</DateMonth>
          <DateYear>0</DateYear>
          <WithMobilePercent>0</WithMobilePercent>
          <WithEmailPercent>0</WithEmailPercent>
          <TotalWithMobile>0</TotalWithMobile>
          <TotalWithEmail>0</TotalWithEmail>
          <TotalCreated>0</TotalCreated>
        </PassengerContactElements>
      </PassengerElements>
      <ReportUsageSummary>
        <ReportPerformance>
          <Name>String</Name>
          <UrlSlug>String</UrlSlug>
          <Total>0</Total>
        </ReportPerformance>
      </ReportUsageSummary>
      <MonthlyActivityFormatted>String</MonthlyActivityFormatted>
      <PassengerElementsFormatted>String</PassengerElementsFormatted>
    </Item>
  </ResponseReport>
  <ResponseError>
    <ErrorCode>String</ErrorCode>
    <Message>String</Message>
    <StatusCode>String</StatusCode>
    <VerboseMessage>String</VerboseMessage>
  </ResponseError>
</AgentivityResponse>