SDK de TypeScript
Cliente tipado para la API, generado desde la especificación OpenAPI.
@moodinary/sdk es un cliente para servidor basado en openapi-fetch. Los tipos de rutas, parámetros, cuerpos y respuestas salen directo de la especificación OpenAPI, así que si algo no existe en la API, no compila.
Primeros pasos
Sección titulada «Primeros pasos»-
Creá una API key desde el panel. Ver API keys.
-
Guardala en el servidor, como variable de entorno. Nunca en el navegador, en el bundle del frontend ni en logs.
-
Creá el cliente y hacé tu primera llamada:
import { createMoodinaryClient } from "@moodinary/sdk";const token = process.env.MOODINARY_API_KEY;if (!token) throw new Error("Falta MOODINARY_API_KEY");const moodinary = createMoodinaryClient({ token });const { data, error, response } = await moodinary.GET("/org");if (error) throw new Error(`Moodinary respondió ${response.status}`);
La URL base por defecto es https://api.moodinary.com/v1. Las rutas van sin el prefijo de versión: /org, no /v1/org. Podés cambiar baseUrl (por ejemplo, para un servidor local) o pasar tu propio fetch para tests.
Leer datos
Sección titulada «Leer datos»GET cubre /org, /teams, /pulses, /stats, /stats/daily, /alerts, /actions y /comments.
const page = await moodinary.GET("/pulses", { params: { query: { limit: 50 } },});
// Paginación por cursorif (page.data?.nextCursor) { const next = await moodinary.GET("/pulses", { params: { query: { limit: 50, cursor: page.data.nextCursor } }, });}Crear y modificar
Sección titulada «Crear y modificar»Generá un UUID por cada operación lógica y guardalo junto con la operación antes de enviarla. Si después reintentás o reconciliás esa misma operación, reusá la misma key y exactamente el mismo body. Nunca reintentes una mutación con una key nueva: así es como se duplican equipos o acciones.
const actionKey = crypto.randomUUID();// guardá actionKey con tu registro antes de llamar
const action = await moodinary.POST("/actions", { params: { header: { "Idempotency-Key": actionKey } }, body: { title: "Agendar charlas semanales" },});PATCH no lleva key:
await moodinary.PATCH("/actions/{id}", { params: { path: { id: "id-de-la-accion" } }, body: { title: "Agendar charlas mensuales" },});Errores y reintentos
Sección titulada «Errores y reintentos»El SDK no reintenta nada por su cuenta.
| Caso | Qué pasa |
|---|---|
| Respuesta no 2xx | error trae el error de la API y response la respuesta HTTP original. |
| Falla de red | La promesa se rechaza. |
| Rate limit | Los headers (incluido el de rate limit) están en response.headers. |
La lista completa de endpoints y esquemas está en la referencia de la API.