# Cookie

> HTTP cookie with name, value, domain, path, SameSite, and security flags.

- Name: `cookie`
- Categories: api
- Detail page: https://open-types.dev/types/cookie

## Install

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

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

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

## Types

```typescript
export type CookieSameSite = "strict" | "lax" | "none";

export interface CookieOptions {
  name: string;
  value: string;
  domain?: string;
  path?: string;
  expires?: string;
  max_age?: number;
  secure?: boolean;
  http_only?: boolean;
  same_site?: CookieSameSite;
}
```

## Zod validator

```typescript
import * as z from "zod";
import type { CookieOptions, CookieSameSite } from "../types/cookie";

export const cookieSameSiteSchema = z.enum(["strict", "lax", "none"]) satisfies z.ZodType<CookieSameSite>;

export const cookieOptionsSchema = z.object({
  name: z.string(),
  value: z.string(),
  domain: z.string().optional(),
  path: z.string().optional(),
  expires: z.string().optional(),
  max_age: z.number().optional(),
  secure: z.boolean().optional(),
  http_only: z.boolean().optional(),
  same_site: cookieSameSiteSchema.optional(),
}) satisfies z.ZodType<CookieOptions>;

export type { CookieOptions, CookieSameSite } from "../types/cookie";
```

## Examples

```typescript
// Source: https://datatracker.ietf.org/doc/html/rfc6265bis-15
// Captured: 2026-05
import type {
  CookieSameSite,
  CookieOptions,
} from "../types/cookie";

export const cookieSameSiteExamples = {
  strict: "strict",
  lax: "lax",
  none: "none",
} as const satisfies Record<string, CookieSameSite>;

export const cookieOptionsExamples = {
  session: {
    name: "session_id",
    value: "abc123xyz",
    path: "/",
    secure: true,
    http_only: true,
    same_site: "lax",
  } satisfies CookieOptions,
  longLived: {
    name: "remember_me",
    value: "remember-token-xyz",
    domain: ".example.com",
    path: "/",
    expires: "2027-05-16T18:30:00Z",
    max_age: 31_536_000,
    secure: true,
    http_only: true,
    same_site: "lax",
  } satisfies CookieOptions,
  csrf: {
    name: "csrf_token",
    value: "9f8b7c6d-5e4f-3a2b",
    path: "/",
    secure: true,
    http_only: false,
    same_site: "strict",
  } satisfies CookieOptions,
  thirdPartyTracking: {
    name: "_ga",
    value: "GA1.2.1234567890.1712948400",
    domain: ".example.com",
    path: "/",
    max_age: 63_072_000,
    secure: true,
    same_site: "none",
  } satisfies CookieOptions,
  minimal: { name: "lang", value: "en" } satisfies CookieOptions,
} as const;
```
