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 .other suffix or ?format=other

HTTP + OTHER

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: text/jsonl
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length

{"ResponseMetadata":{"Success":false,"HasCache":false,"HasPaging":false,"CacheMetadata":{"IsFromCache":false,"CachedAt":"\/Date(-62135596800000-0000)\/","CacheExpiresAt":"\/Date(-62135596800000-0000)\/"},"PagingMetadata":{"Offset":"String","Limit":"String","TotalRecords":0,"ResponseRecords":0}},"ResponseReport":{"Item":{"ProblematicBookings":{"DayPlusZeroTtl":0,"DayPlusOneTtl":0,"DayPlusTwoTtl":0},"AirlineTicketing":{"DayPlusZeroTtl":0,"DayPlusOneTtl":0,"DayPlusTwoTtl":0},"UnticketedBookingsByTau":{"DayPlusZeroTtl":0,"DayPlusOneTtl":0,"DayPlusTwoTtl":0},"OutstandingBookingActions":{"DayPlusZeroTtl":0,"DayPlusOneTtl":0,"DayPlusTwoTtl":0},"MonthlyActivity":[{"ReportDate":"String","MonthlyEvents":0,"C":0,"C_Percentage":0,"I":0,"I_Percentage":0,"T":0,"T_Percentage":0,"X":0,"X_Percentage":0}],"MostActiveUsers":[{"UserName":"String","FirstName":"String","LastName":"String","UserID":0,"UserFrequency":"String","ActivityMeasure":0}],"TopConsultants":[{"Name":"String","Total":0}],"TopReports":[{"Name":"String","UrlSlug":"String","Total":0}],"ActiveBookingsAirConversion":{"TotalTicketed":0,"TotalUnticketed":0},"PassengerElements":[{"DateYear":0,"DateMonth":0,"WithMobilePercent":0,"WithEmailPercent":0,"TotalWithMobile":0,"TotalWithEmail":0,"TotalCreated":0}],"ReportUsageSummary":[{"Name":"String","UrlSlug":"String","Total":0}],"MonthlyActivityFormatted":"String","PassengerElementsFormatted":"String"}},"ResponseError":{"ErrorCode":"String","Message":"String","StatusCode":"String","VerboseMessage":"String"}}