Skip to Content

Types

⚡ 8 min read

Download 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

  1. Download transcodes.d.ts from Console.
  2. Place e.g. types/transcodes.d.ts and wire tsconfig.json:
{ "compilerOptions": { "typeRoots": ["./node_modules/@types", "./types"] }, "include": ["src", "types"] }

Last updated on