xquik-types.ts file.
Types
// ─── Account ─────────────────────────────────────────────
interface Account {
plan: "active" | "inactive";
monitorsAllowed: number;
monitorsUsed: number;
creditInfo?: {
balance: number;
lifetimePurchased: number;
lifetimeUsed: number;
autoTopupEnabled: boolean;
};
xUsername?: string;
}
// ─── API Keys ────────────────────────────────────────────
// Returned when creating a new key (includes full key)
interface ApiKeyCreated {
id: string;
fullKey: string;
prefix: string;
name: string;
createdAt: string;
}
// Returned when listing keys (full key is never exposed)
interface ApiKey {
id: string;
name: string;
prefix: string;
isActive: boolean;
createdAt: string;
lastUsedAt?: string;
}
// ─── X Accounts ───────────────────────────────────────────
interface XAccount {
id: string;
username: string;
displayName: string;
isActive: boolean;
createdAt: string;
}
// ─── Support Tickets ──────────────────────────────────────
interface SupportTicket {
publicId: string;
subject: string;
status: "open" | "in_progress" | "resolved" | "closed";
messageCount: number;
createdAt: string;
updatedAt: string;
}
interface SupportTicketDetail {
publicId: string;
subject: string;
status: "open" | "in_progress" | "resolved" | "closed";
createdAt: string;
updatedAt: string;
messages: SupportMessage[];
}
interface SupportMessage {
body: string;
sender: "user" | "support";
createdAt: string;
}
// ─── Error Response ──────────────────────────────────────
type ApiErrorType =
| "api_error"
| "authentication_error"
| "billing_error"
| "dependency_error"
| "invalid_request_error"
| "permission_error"
| "rate_limit_error";
interface StructuredApiError {
message: string;
type: ApiErrorType;
code: string;
}
interface ApiError {
error: string | StructuredApiError;
message?: string;
reason?: string;
retryAfter?: number;
retryAfterMs?: number;
}