@hablala/api-contract
v0.5.0
Published
Contrato tipado (OpenAPI → TypeScript) de la API de Hablalá — single source of truth generada desde el backend Elixir.
Downloads
1,277
Maintainers
Readme
@hablala/api-contract
Puente tipado entre el backend Elixir (apps/api) y los clientes TypeScript
(apps/web, apps/mobile). Es el single source of truth del contrato de la API.
Flujo
apps/api (OpenApiSpex) ──mix openapi.gen──► openapi.json ──openapi-typescript──► generated/types.tsopenapi.json— contrato generado desde el código Elixir. No editar a mano.generated/types.ts— tipos TS generados desdeopenapi.json. No editar a mano.src/index.ts— re-exportapaths/components/operations.
Uso
import type { paths } from "@hablala/api-contract";
import createClient from "openapi-fetch";
const client = createClient<paths>({ baseUrl: "https://api.hablala.com" });
const { data } = await client.GET("/v1/organizations");Regenerar
# 1. Contrato (desde apps/api):
pnpm --filter @hablala/api turbo openapi:generate # → openapi.json
# 2. Tipos TS (aquí):
pnpm --filter @hablala/api-contract build # → generated/types.tsEn el monorepo, @hablala/api-contract#build depende de
@hablala/api#openapi:generate en turbo.json.
