Ir al contenido

Desarrolladores

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.

  1. Creá una API key desde el panel. Ver API keys.

  2. Guardala en el servidor, como variable de entorno. Nunca en el navegador, en el bundle del frontend ni en logs.

  3. 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.

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 cursor
if (page.data?.nextCursor) {
const next = await moodinary.GET("/pulses", {
params: { query: { limit: 50, cursor: page.data.nextCursor } },
});
}

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" },
});

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.