Types
⚡ 8 min readDownload transcodes.d.ts from Console → Project Setup. The snippets below describe the active redirect + token + event types used in new integrations.
Core Types
ApiResponse<T>
interface ApiResponse<T> {
success: boolean;
payload: T;
error?: string;
message?: string;
status?: number;
}Member
interface Member {
id: string;
projectId?: string;
name?: string;
email?: string;
role?: string;
lastUsedAt?: Date | string;
createdAt?: Date | string;
updatedAt?: Date | string;
revokedAt?: Date | string | null;
}member.get() can return metadata when included in fields, but the shipped Member interface does not declare it.
AuthResult
interface AuthResult {
token: string;
member: Member;
}GetCurrentMemberFailureReason
enum GetCurrentMemberFailureReason {
UNAUTHENTICATED = 'unauthenticated',
NOT_FOUND = 'not_found',
REVOKED = 'revoked',
TRANSIENT = 'transient',
ERROR = 'error',
}GetCurrentMemberResult
interface GetCurrentMemberResult {
success: boolean;
member: Member | null;
error?: GetCurrentMemberFailureReason;
}Redirect types
RedirectToSignInOptions
interface RedirectToSignInOptions {
projectId?: string;
redirectUri?: string;
browserUrl?: string;
}RedirectToConsoleOptions
interface RedirectToConsoleOptions {
organizationId?: string;
projectId?: string;
memberId?: string;
redirectUri?: string;
comment?: string;
browserUrl?: string;
}RedirectToStepUpOptions
interface RedirectToStepUpOptions {
resource: string;
action: 'create' | 'read' | 'update' | 'delete';
redirectUri?: string;
comment?: string;
}StepUpRedirectResult
type StepUpDecision = 'deny' | 'allow' | 'stepup';
type StepUpStatus = 'verified' | 'rejected';
interface StepUpRedirectResult {
decision: StepUpDecision;
resource: string;
action: string;
sid?: string;
url?: string;
expiresAt?: string;
status?: StepUpStatus;
}Audit types
TrackUserActionEvent
interface TrackUserActionEvent {
tag: string;
severity?: 'low' | 'medium' | 'high';
status?: boolean;
error?: string;
metadata?: Record<string, unknown>;
page?: string;
}TrackUserActionOptions
interface TrackUserActionOptions {
requireAuth?: boolean;
webhookNotification?: boolean;
memberId?: string;
projectId?: string;
}Event types
TranscodesEventName
const TranscodesEventNames = {
AUTH_STATE_CHANGED: 'AUTH_STATE_CHANGED',
TOKEN_REFRESHED: 'TOKEN_REFRESHED',
TOKEN_EXPIRED: 'TOKEN_EXPIRED',
ERROR: 'ERROR',
MEMBER_REVOKED: 'MEMBER_REVOKED',
} as const;
type TranscodesEventName =
(typeof TranscodesEventNames)[keyof typeof TranscodesEventNames];Payloads
interface TranscodesEventMap {
AUTH_STATE_CHANGED: AuthStateChangedPayload;
TOKEN_REFRESHED: TokenRefreshedPayload;
TOKEN_EXPIRED: TokenExpiredPayload;
ERROR: ErrorPayload;
MEMBER_REVOKED: MemberRevokedPayload;
}
interface AuthStateChangedPayload {
isAuthenticated: boolean;
accessToken: string | null;
expiresAt: number | null;
member: Member | null;
}
interface TokenRefreshedPayload {
accessToken: string;
expiresAt: number;
}
interface TokenExpiredPayload {
expiredAt: number;
}
interface ErrorPayload {
code: string;
message: string;
context?: string;
}
interface MemberRevokedPayload {
message: string;
reason: 'member_revoked';
}
type EventCallback<T extends TranscodesEventName> = (
payload: TranscodesEventMap[T],
) => void;API interfaces
TokenAPI
interface TokenAPI {
getCurrentMember(): Promise<GetCurrentMemberResult>;
getAccessToken(): Promise<string | null>;
hasToken(): boolean;
isAuthenticated(): Promise<boolean>;
signOut(options?: { webhookNotification?: boolean }): Promise<void>;
}PublicMemberAPI
interface PublicMemberAPI {
get(params: {
projectId?: string;
memberId?: string;
email?: string;
fields?: string;
}): Promise<ApiResponse<Member[]>>;
}PublicEventAPI
interface PublicEventAPI {
on<T extends TranscodesEventName>(
event: T,
callback: EventCallback<T>,
): () => void;
off<T extends TranscodesEventName>(
event: T,
callback: EventCallback<T>,
): void;
}Usage
- Download
transcodes.d.tsfrom Console. - Place e.g.
types/transcodes.d.tsand wiretsconfig.json:
{
"compilerOptions": {
"typeRoots": ["./node_modules/@types", "./types"]
},
"include": ["src", "types"]
}Related
Last updated on