API Response
Discriminated union API response with success/error variants and factory functions.
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;