File size: 986 Bytes
21dd449 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
import type { AccessTokenRole, AuthType } from "../public";
interface ApiWhoAmIBase {
/** Unique ID persistent across renames */
id: string;
type: "user" | "org" | "app";
name: string;
}
interface ApiWhoAmIEntityBase extends ApiWhoAmIBase {
fullname: string;
email: string | null;
canPay: boolean;
avatarUrl: string;
/**
* Unix timestamp in seconds
*/
periodEnd: number | null;
}
interface ApiWhoAmIOrg extends ApiWhoAmIEntityBase {
type: "org";
}
interface ApiWhoAmIUser extends ApiWhoAmIEntityBase {
type: "user";
email: string;
emailVerified: boolean;
isPro: boolean;
orgs: ApiWhoAmIOrg[];
}
interface ApiWhoAmIApp extends ApiWhoAmIBase {
type: "app";
name: string;
scope?: {
entities: string[];
role: AccessTokenRole;
};
}
export type ApiWhoAmIReponse = ApiWhoAmIUser | ApiWhoAmIOrg | ApiWhoAmIApp;
export interface ApiWhoAmIAuthInfo {
type: AuthType;
accessToken?: {
displayName: string;
expiration?: string;
role: AccessTokenRole;
};
}
|