API Response

Discriminated union API response with success/error variants and factory functions.

Report an issue
api

Install

$ npx shadcn@latest add @open-types/api-response

Dependencies

Source

import type { PaginationResponse } from "./pagination";

export interface ApiErrorItem {
  code: string;
  message: string;
  field?: string;
  details?: Record<string, unknown>;
}

export interface ApiSuccessResponse<T = unknown> {
  success: true;
  data: T;
  pagination?: PaginationResponse;
  meta?: Record<string, unknown>;
}

export interface ApiErrorResponse {
  success: false;
  errors: ApiErrorItem[];
}

export type ApiResponse = ApiSuccessResponse | ApiErrorResponse;
import type { PaginationResponse } from "./pagination";

export interface ApiErrorItem {
  code: string;
  message: string;
  field?: string;
  details?: Record<string, unknown>;
}

export interface ApiSuccessResponse<T = unknown> {
  success: true;
  data: T;
  pagination?: PaginationResponse;
  meta?: Record<string, unknown>;
}

export interface ApiErrorResponse {
  success: false;
  errors: ApiErrorItem[];
}

export type ApiResponse = ApiSuccessResponse | ApiErrorResponse;