> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Directrices de SDKs

> Sigue las mejores prácticas de SDKs de Lerian — estructura del repositorio, manejo de errores, ejemplos y alineación de versiones — para acelerar la adopción.

Si bien no son obligatorios, los SDKs son una **recomendación fuerte** para cada plugin en el ecosistema de Lerian. Aceleran la adopción, mejoran la experiencia del desarrollador y reducen errores de integración para los clientes.

Al ofrecer SDKs en lenguajes populares, facilitas que los usuarios interactúen con tu plugin y construyan soluciones confiables sobre él.

**Mejores prácticas para SDKs:**

* Soporta los casos de uso más comunes desde el principio
* Proporciona manejo de errores claro alineado con el [Modelo de errores](/es/partners-hub/error-model) de Lerian
* Incluye ejemplos y pruebas para funciones clave
* Mantén las versiones sincronizadas con los lanzamientos del plugin

<Tip>
  Se prefieren SDKs en Go y TypeScript, ya que se alinean con el stack principal de Lerian y el ecosistema de socios.
</Tip>

## Estructura del repositorio

***

Organiza el repositorio de tu SDK con un diseño consistente:

```
your-plugin-sdk/
├── README.md            # Descripción general, instalación e inicio rápido
├── CHANGELOG.md         # Historial de versiones siguiendo el formato Keep a Changelog
├── LICENSE
├── src/                 # Código fuente
├── examples/            # Ejemplos de código funcionales para casos de uso comunes
├── tests/               # Pruebas unitarias y de integración
└── docs/                # Documentación adicional (opcional)
```

Incluye un `README.md` con instrucciones de instalación, un ejemplo mínimo de uso y un enlace a la documentación completa.

## Convenciones de nomenclatura

***

Alinea los nombres de paquetes y módulos con los nombres de productos de Lerian:

* Usa minúsculas para nombres de paquetes: `midaz`, `feesengine`, `tracer`
* Agrega el prefijo con el nombre de tu organización al publicar en registros: `@yourorg/midaz-plugin-sdk`
* Mantén la nomenclatura consistente entre lenguajes: si el módulo Go es `midaz-plugin-sdk`, el paquete npm sigue el mismo patrón

## Versionado

***

Sigue [Semantic Versioning (semver)](https://semver.org):

* **MAJOR** -- cambios incompatibles en la API pública del SDK
* **MINOR** -- nuevas funcionalidades, compatibles con versiones anteriores
* **PATCH** -- corrección de errores, compatibles con versiones anteriores

Sincroniza los lanzamientos del SDK con los lanzamientos de tu plugin. Cuando cambie la versión del plugin, lanza una versión correspondiente del SDK. Documenta el mapeo de versiones plugin-SDK en tu `README.md`.

## Manejo de errores

***

Envuelve las respuestas del [Modelo de errores](/es/partners-hub/error-model) de Lerian en errores tipados:

* Mapea cada código de error de Lerian a un tipo o clase de error específico en tu SDK
* Incluye los campos originales `code`, `message` y `details` del error en el error tipado
* Proporciona métodos auxiliares para verificar tipos de error (ej., `IsNotFoundError()` en Go, `instanceof NotFoundError` en TypeScript)
* Nunca ocultes errores silenciosamente -- siempre propágalos o envuélvelos con contexto

## Lenguajes mínimos

***

Proporciona SDKs en al menos estos dos lenguajes:

| Lenguaje   | Justificación                                            |
| ---------- | -------------------------------------------------------- |
| Go         | Lenguaje principal del stack backend de Lerian           |
| TypeScript | Lenguaje principal para frontend e integraciones Node.js |

Se incentiva el soporte de lenguajes adicionales (Python, Java, C#) pero no es obligatorio.
