Files
new-api-key-usage/apps/web/src/api/member/me.ts
T
skycurtain c03fdc3d67 feat(web): 支付记录双 Tab 与平台选用弹层
订阅/充值分形态表单(秒级时间、金额非负、额度换算预览);
选用弹层已登记灰显、每次打开重拉、关弹窗清密码。
2026-10-09 22:02:36 +08:00

67 lines
1.4 KiB
TypeScript

import type {
LogItem,
Paginated,
SubscriptionItem,
TopupItem,
UnixSec,
UsageTotals,
} from "@new-api-key-usage/core";
import { memberHttp } from "../http.ts";
export type MemberMe = {
id: number;
name: string;
};
export type MemberOverview = {
member: { id: number | null; name: string | null };
usage: UsageTotals;
by_source: Array<{
billing_source: string;
count: number;
quota: number;
quota_usd: string;
}>;
keys: Array<{
key_id: number;
token_name: string;
log_synced_at: UnixSec | null;
usage: UsageTotals;
}>;
subscriptions: SubscriptionItem[];
topups: TopupItem[];
};
export async function fetchMe(): Promise<MemberMe> {
const { data } = await memberHttp.get<MemberMe>("/me");
return data;
}
export async function fetchOverview(range: {
from: string;
to: string;
}): Promise<MemberOverview> {
const { data } = await memberHttp.get<MemberOverview>("/overview", {
params: range,
});
return data;
}
export type MemberLogQuery = {
from: string;
to: string;
page: number;
page_size: number;
api_key_id?: number;
billing_source?: string;
subscription_id?: number;
type?: number | "error";
};
export async function fetchLogs(query: MemberLogQuery): Promise<Paginated<LogItem>> {
const { data } = await memberHttp.get<Paginated<LogItem>>("/logs", {
params: query,
});
return data;
}