/* Options: Date: 2026-09-16 17:00:57 Version: 10.05 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://testapi.bokamera.se //Package: //GlobalNamespace: dtos //AddPropertyAccessors: True //SettersReturnThis: True //AddServiceStackTypes: True //AddResponseStatus: False //AddDescriptionAsComments: True //AddImplicitVersion: IncludeTypes: SuperAdminAssistantUsageQuery.* //ExcludeTypes: //TreatTypesAsStrings: //DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.* */ import java.math.*; import java.util.*; import java.io.InputStream; import net.servicestack.client.*; public class dtos { @Route(Path="/superadmin/assistant/usage", Verbs="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 static class SuperAdminAssistantUsageQuery implements IReturn { /** * Filter on company name. Case-insensitive substring match. */ @ApiMember(DataType="string", Description="Filter on company name. Case-insensitive substring match.", ParameterType="query") public String Search = null; /** * 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 UUID CompanyId = null; /** * Number of companies to skip. */ @ApiMember(DataType="integer", Description="Number of companies to skip.", ParameterType="query") public Integer Skip = null; /** * Number of companies to return. Capped server-side. */ @ApiMember(DataType="integer", Description="Number of companies to return. Capped server-side.", ParameterType="query") public Integer Take = null; public String getSearch() { return Search; } public SuperAdminAssistantUsageQuery setSearch(String value) { this.Search = value; return this; } public UUID getCompanyId() { return CompanyId; } public SuperAdminAssistantUsageQuery setCompanyId(UUID value) { this.CompanyId = value; return this; } public Integer getSkip() { return Skip; } public SuperAdminAssistantUsageQuery setSkip(Integer value) { this.Skip = value; return this; } public Integer getTake() { return Take; } public SuperAdminAssistantUsageQuery setTake(Integer value) { this.Take = value; return this; } private static Object responseType = SuperAdminAssistantUsageQueryResponse.class; public Object getResponseType() { return responseType; } } public static class SuperAdminAssistantUsageQueryResponse { /** * Number of companies skipped. */ @ApiMember(Description="Number of companies skipped.") public Integer Offset = null; /** * Total number of companies matching the filter. */ @ApiMember(Description="Total number of companies matching the filter.") public Integer Total = null; /** * Length of the rolling usage window, in days. */ @ApiMember(Description="Length of the rolling usage window, in days.") public Integer WindowDays = null; /** * Usage for the requested page of companies. */ @ApiMember(Description="Usage for the requested page of companies.") public ArrayList Results = new ArrayList(); public ResponseStatus ResponseStatus = null; public Integer getOffset() { return Offset; } public SuperAdminAssistantUsageQueryResponse setOffset(Integer value) { this.Offset = value; return this; } public Integer getTotal() { return Total; } public SuperAdminAssistantUsageQueryResponse setTotal(Integer value) { this.Total = value; return this; } public Integer getWindowDays() { return WindowDays; } public SuperAdminAssistantUsageQueryResponse setWindowDays(Integer value) { this.WindowDays = value; return this; } public ArrayList getResults() { return Results; } public SuperAdminAssistantUsageQueryResponse setResults(ArrayList value) { this.Results = value; return this; } public ResponseStatus getResponseStatus() { return ResponseStatus; } public SuperAdminAssistantUsageQueryResponse setResponseStatus(ResponseStatus value) { this.ResponseStatus = value; return this; } } public static class SuperAdminAssistantUsage { /** * The company the usage applies to. */ @ApiMember(Description="The company the usage applies to.") public UUID CompanyId = null; /** * The company's name. */ @ApiMember(Description="The company's name.") public String CompanyName = null; /** * 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 AssistantUsageMeter AiChat = null; /** * 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 AssistantUsageMeter Mcp = null; public UUID getCompanyId() { return CompanyId; } public SuperAdminAssistantUsage setCompanyId(UUID value) { this.CompanyId = value; return this; } public String getCompanyName() { return CompanyName; } public SuperAdminAssistantUsage setCompanyName(String value) { this.CompanyName = value; return this; } public AssistantUsageMeter getAiChat() { return AiChat; } public SuperAdminAssistantUsage setAiChat(AssistantUsageMeter value) { this.AiChat = value; return this; } public AssistantUsageMeter getMcp() { return Mcp; } public SuperAdminAssistantUsage setMcp(AssistantUsageMeter value) { this.Mcp = value; return this; } } public static class AssistantUsageMeter { /** * Tokens consumed within the current rolling window. */ @ApiMember(Description="Tokens consumed within the current rolling window.") public Long TokensUsed = null; /** * 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 Integer TokenLimit = null; /** * Tokens remaining before the limit is reached (never negative). */ @ApiMember(Description="Tokens remaining before the limit is reached (never negative).") public Long TokensRemaining = null; /** * 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 Double PercentUsed = null; /** * True while the company is still below its token limit. */ @ApiMember(Description="True while the company is still below its token limit.") public Boolean IsWithinBudget = null; public Long getTokensUsed() { return TokensUsed; } public AssistantUsageMeter setTokensUsed(Long value) { this.TokensUsed = value; return this; } public Integer getTokenLimit() { return TokenLimit; } public AssistantUsageMeter setTokenLimit(Integer value) { this.TokenLimit = value; return this; } public Long getTokensRemaining() { return TokensRemaining; } public AssistantUsageMeter setTokensRemaining(Long value) { this.TokensRemaining = value; return this; } public Double getPercentUsed() { return PercentUsed; } public AssistantUsageMeter setPercentUsed(Double value) { this.PercentUsed = value; return this; } public Boolean getIsWithinBudget() { return IsWithinBudget; } public AssistantUsageMeter setIsWithinBudget(Boolean value) { this.IsWithinBudget = value; return this; } } }