@virtualsnake9/themis-sdk
v0.1.0
Published
Cliente TypeScript para conectar backends al motor de políticas Themis
Downloads
156
Readme
@virtualsnake9/themis-sdk
Cliente TypeScript para que cualquier backend (Kairo Sign, Graph Flow, Zyta-be, etc.) use el motor de políticas Themis sin armar HTTP a mano.
Themis no guarda archivos (PDFs siguen en R2/disco del módulo). Solo roles, permisos y bindings recurso ↔ roles.
Instalación
pnpm add @virtualsnake9/themis-sdk
# o
npm install @virtualsnake9/themis-sdkConfiguración
Variables de entorno típicas en el servicio consumidor:
| Variable | Ejemplo | Uso |
|----------|---------|-----|
| THEMIS_API_URL | http://localhost:3001 | URL del API Themis |
| THEMIS_SERVICE_TOKEN | JWT de cuenta de servicio | Bearer en server-to-server |
La cuenta de servicio debe ser miembro del tenant con permisos authz:evaluate, resources:write, members:write (o rol tenant-admin).
Uso básico (cualquier Node backend)
import { createThemisClient, ThemisAccessDeniedError } from '@virtualsnake9/themis-sdk';
const themis = createThemisClient({
baseUrl: process.env.THEMIS_API_URL!,
token: process.env.THEMIS_SERVICE_TOKEN!,
});
await themis.assertCanAccessResource({
tenantId,
userId,
resourceType: 'document',
resourceId: documentId,
action: 'read',
});NestJS
import { ThemisModule, ThemisService } from '@virtualsnake9/themis-sdk/nest';
ThemisModule.forRoot({
baseUrl: process.env.THEMIS_API_URL!,
token: process.env.THEMIS_SERVICE_TOKEN!,
});API del cliente
| Método | Cuándo usarlo |
|--------|----------------|
| canAccessResource / assertCanAccessResource | Antes de leer/mostrar un recurso |
| bindResource / unbindResource | Restringir / liberar por roles |
| addMemberRole / removeMemberRole | Asignar/quitar rol en flujos |
| findMemberByEmail | Buscar miembro |
| evaluateAccess | Check con permission explícito |
| getResourceBinding | Ver roles de un recurso |
Convención resourceType / resourceId
| Módulo | resourceType | resourceId |
|--------|--------------|------------|
| Kairo Sign | document | UUID del doc en Sign |
| Graph Flow | flow | UUID del flujo |
| Zyta | expediente | id del expediente |
MCP vs SDK
| Herramienta | Repo | Para quién |
|-------------|------|------------|
| @virtualsnake9/themis-mcp | themis-mcp | Agentes Cursor |
| @virtualsnake9/themis-sdk | este paquete | Backends en runtime |
Más documentación
AGENTS.md— guía para agentes de IA- Repo API:
themis
