IFClite TypeScript API
    Preparing search index...

    Interface TokenEndpointOptions

    interface TokenEndpointOptions {
        allowOrigin?: string;
        authorize: (
            request: MintRequestBody,
            context: {
                bearerClaims: RoomTokenClaims | null;
                clientIp: string | undefined;
                mint?: { exp: number; jti: string };
            },
        ) => Role
        | Promise<(Role | null)>
        | null;
        defaultTtlSeconds?: number;
        isRevoked?: (jti: string) => boolean | Promise<boolean>;
        kid?: string;
        maxBodyBytes?: number;
        maxTtlSeconds?: number;
        now?: () => number;
        secret: string;
        trustForwardedFor?: boolean;
        verifySecret?: SecretResolver;
    }
    Index
    allowOrigin?: string

    CORS Access-Control-Allow-Origin (default *).

    authorize: (
        request: MintRequestBody,
        context: {
            bearerClaims: RoomTokenClaims | null;
            clientIp: string | undefined;
            mint?: { exp: number; jti: string };
        },
    ) => Role
    | Promise<(Role | null)>
    | null

    Authorize a mint request. Receives the requested grant and the verified claims of the caller's bearer token (or null if none/invalid). Return the role to actually grant, or null to deny (→ 403). This is where consumers encode policy — e.g. "only an admin token for this room may mint", or "anyone may create a fresh room and become its owner".

    defaultTtlSeconds?: number

    Lifetime for minted tokens when the request omits one (default 7 days).

    isRevoked?: (jti: string) => boolean | Promise<boolean>

    Deny-list check for revoked jtis. A revoked bearer (e.g. a kicked admin's token) must not keep minting links even though its signature + expiry still verify — when this returns true the bearer is treated as absent, so authorize sees bearerClaims: null.

    kid?: string

    Key id stamped on minted tokens.

    maxBodyBytes?: number

    Reject bodies larger than this (default 4 KB).

    maxTtlSeconds?: number

    Upper bound applied to a requested ttlSeconds (default 30 days).

    now?: () => number
    secret: string

    Secret used to sign newly minted tokens.

    trustForwardedFor?: boolean

    Honor X-Forwarded-For when deriving clientIp (default OFF). Only set this when the server is reachable exclusively through a trusted reverse proxy; a directly reachable server that trusts the header lets every caller pick a fresh spoofed IP per request, giving each request its own rate-limit bucket and making the per-IP mint throttle useless.

    verifySecret?: SecretResolver

    Secret(s) used to verify the caller's bearer token (default: secret).