# JWT Claims

> Standard JWT claims (RFC 7519) with issuer, subject, audience, and expiration.

- Name: `jwt-claims`
- Categories: auth
- Detail page: https://open-types.dev/types/jwt-claims

## Install

```bash
# Types only
npx shadcn add @open-types/jwt-claims

# Types + Zod v4 validators
npx shadcn add @open-types/jwt-claims-zod

# Types + real-world examples
npx shadcn add @open-types/jwt-claims-examples
```

## Types

```typescript
export interface JWTClaims {
  iss?: string;
  sub?: string;
  aud?: string | string[];
  exp?: number;
  nbf?: number;
  iat?: number;
  jti?: string;
}
```

## Zod validator

```typescript
import * as z from "zod";
import type { JWTClaims } from "../types/jwt-claims";

export const jwtClaimsSchema = z.object({
  iss: z.string().optional(),
  sub: z.string().optional(),
  aud: z.union([z.string(), z.array(z.string())]).optional(),
  exp: z.number().int().optional(),
  nbf: z.number().int().optional(),
  iat: z.number().int().optional(),
  jti: z.string().optional(),
}).passthrough() satisfies z.ZodType<JWTClaims>;

export type { JWTClaims } from "../types/jwt-claims";
```

## Examples

```typescript
// Source: https://datatracker.ietf.org/doc/html/rfc7519#section-4.1
// Captured: 2026-05
import type { JWTClaims } from "../types/jwt-claims";

export const jwtClaimsExamples = {
  empty: {} satisfies JWTClaims,
  standardAccessToken: {
    iss: "https://auth.example.com",
    sub: "user_321",
    aud: "https://api.example.com",
    exp: 1712952000,
    nbf: 1712948400,
    iat: 1712948400,
    jti: "9f8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d",
  } satisfies JWTClaims,
  multipleAudiences: {
    iss: "https://auth.example.com",
    sub: "user_321",
    aud: ["https://api.example.com", "https://admin.example.com"],
    exp: 1712952000,
    iat: 1712948400,
  } satisfies JWTClaims,
  refreshTokenClaims: {
    iss: "https://auth.example.com",
    sub: "user_321",
    exp: 1715540400,
    iat: 1712948400,
    jti: "refresh-9f8b7c6d-5e4f-3a2b",
  } satisfies JWTClaims,
  serviceToService: {
    iss: "https://service-a",
    sub: "service-a",
    aud: "https://service-b",
    exp: 1712952000,
    iat: 1712948400,
  } satisfies JWTClaims,
} as const;
```
