/* Options: Date: 2026-09-16 19:40:49 SwiftVersion: 6.0 Version: 10.05 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://testapi.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: SuperAdminAssistantUsageQuery.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/superadmin/assistant/usage", "GET") // @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) // @ApiResponse(Description="You have too low privileges to call this service", StatusCode=403) // @ValidateRequest(Validator="IsAuthenticated") public class SuperAdminAssistantUsageQuery : IReturn, Codable { public typealias Return = SuperAdminAssistantUsageQueryResponse /** * Filter on company name. Case-insensitive substring match. */ // @ApiMember(DataType="string", Description="Filter on company name. Case-insensitive substring match.", ParameterType="query") public var search:String? /** * Return only this company. Takes precedence over Search when both are set. */ // @ApiMember(DataType="string", Description="Return only this company. Takes precedence over Search when both are set.", ParameterType="query") public var companyId:String? /** * Number of companies to skip. */ // @ApiMember(DataType="integer", Description="Number of companies to skip.", ParameterType="query") public var skip:Int? /** * Number of companies to return. Capped server-side. */ // @ApiMember(DataType="integer", Description="Number of companies to return. Capped server-side.", ParameterType="query") public var take:Int? required public init(){} } public class SuperAdminAssistantUsageQueryResponse : Codable { /** * Number of companies skipped. */ // @ApiMember(Description="Number of companies skipped.") public var offset:Int? /** * Total number of companies matching the filter. */ // @ApiMember(Description="Total number of companies matching the filter.") public var total:Int? /** * Length of the rolling usage window, in days. */ // @ApiMember(Description="Length of the rolling usage window, in days.") public var windowDays:Int? /** * Usage for the requested page of companies. */ // @ApiMember(Description="Usage for the requested page of companies.") public var results:[SuperAdminAssistantUsage] = [] public var responseStatus:ResponseStatus? required public init(){} } public class SuperAdminAssistantUsage : Codable { /** * The company the usage applies to. */ // @ApiMember(Description="The company the usage applies to.") public var companyId:String? /** * The company's name. */ // @ApiMember(Description="The company's name.") public var companyName:String? /** * Token budget for the admin portal AI assistant. Null when it could not be read. */ // @ApiMember(Description="Token budget for the admin portal AI assistant. Null when it could not be read.") public var aiChat:AssistantUsageMeter? /** * Token budget for the public MCP server. Null when it could not be read. */ // @ApiMember(Description="Token budget for the public MCP server. Null when it could not be read.") public var mcp:AssistantUsageMeter? required public init(){} } public class AssistantUsageMeter : Codable { /** * Tokens consumed within the current rolling window. */ // @ApiMember(Description="Tokens consumed within the current rolling window.") public var tokensUsed:Int? /** * The company's token limit for the window. Zero or less means no cap is applied. */ // @ApiMember(Description="The company's token limit for the window. Zero or less means no cap is applied.") public var tokenLimit:Int? /** * Tokens remaining before the limit is reached (never negative). */ // @ApiMember(Description="Tokens remaining before the limit is reached (never negative).") public var tokensRemaining:Int? /** * Share of the limit consumed, as a percentage. Zero when no cap is applied. */ // @ApiMember(Description="Share of the limit consumed, as a percentage. Zero when no cap is applied.") public var percentUsed:Double? /** * True while the company is still below its token limit. */ // @ApiMember(Description="True while the company is still below its token limit.") public var isWithinBudget:Bool? required public init(){} }