Metadata-Version: 2.4
Name: xamisdk
Version: 0.2.0
Summary: xamiSDK - firma local sin que los documentos salgan de la red del cliente
Author-email: Xami <dev@xami.run>
License: Proprietary
Project-URL: Homepage, https://sdk.xami.run
Project-URL: Documentation, https://sdk.xami.run/manual/
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: cryptography>=41.0
Requires-Dist: jwcrypto>=1.5
Requires-Dist: pyhanko>=0.20
Requires-Dist: asn1crypto>=1.5
Requires-Dist: fastapi>=0.100
Requires-Dist: uvicorn>=0.20
Requires-Dist: Pillow>=10.0

# xamiSDK

Firma local sin que tus documentos salgan de tu red. El xamiSDK calcula el hash y
ensambla la firma en tu infraestructura; a Xami solo viaja el hash.

Ver el diseno completo en `docs/arquitectura_xamiSDK.md`, `docs/servicios_xamiSDK.md`
y `docs/wrapper_xamiSDK_php.md`.

## Instalacion (desarrollo)

```
pip install -e .
```

Requiere Python >= 3.9. Dependencias: `cryptography`, `jwcrypto`.

## Ceremonia de pareo

Emite una licencia en la consola de Xami (seccion SDK) y ejecuta:

```
xamisdk init
```

Te pedira la SDK Key y el Secret de la matricula. El SDK genera su par de llaves
local (la privada nunca sale), se parea con Xami, intercambia llaves publicas y
guarda el token de acceso.

Verifica el estado con:

```
xamisdk status
```

## Configuracion del cache (credenciales y disenos)

El SDK mantiene un cache local con las credenciales y los disenos de sello. Al
levantar el servicio (`serve` / `start`) descarga un snapshot completo desde Xami.

Si actualizas un diseno o una credencial en la consola y quieres que el SDK lo
tome **sin reiniciar el servicio**, ejecuta:

```
xamisdk sync
```

Esto vuelve a descargar credenciales y disenos y **reemplaza** el cache local con
la informacion fresca (lo borrado en el servidor tambien se elimina localmente).
Los resultados de firmas en curso no se tocan. Tambien esta disponible dentro de
la consola interactiva como `sync`.

Para ver el estado del cache:

```
xamisdk cache:show
xamisdk credentials:list
xamisdk designs:list
```

## Diagnostico de soporte

Si una firma no sale como esperabas, genera un reporte tecnico de ese request y
envialo a Xami para dar soporte (te pide confirmacion antes de enviar y solo manda
metadata no confidencial: build del SDK, estado del cache sin secretos, y el log de
ese request):

```
xamisdk report <requestId>
```

El `requestId` aparece en verde al firmar y en el log. Xami responde con un numero de
incidente (`INC-...`) que puedes mencionar al pedir soporte. Tambien disponible en la
consola interactiva como `report <requestId>`.

## Estado (Fase 1)

Implementado: ceremonia de pareo (`init`), estado (`status`) y el canal seguro
JWE/JWS con Xami. Proximas fases: caché de configuracion por push, motor local de
firma PAdES, credenciales de wrapper. Ver `docs/PLAN_xamiSDK.md`.
