Cerrar un expediente y arrancar su flujo

POST
/api/documentset/close

Sella el expediente —ya no se le agregan documentos— y arranca el flujo de firma sobre todos los documentos que contiene.

El objeto workflow es el mismo que documenta POST /api/{firmamexId}/workflow, y es obligatorio al cerrar. Como el flujo abarca varios documentos, signersConfig lista los firmantes de todo el expediente por su data, no una lista por documento.

Authorization<token>

Cada petición lleva Authorization: signmage {webId}:{firma}, donde firma es el Base64 de HMAC-SHA256(apiKey, cadenaFirmada).

Qué va dentro de cadenaFirmada depende de la petición:

PeticióncadenaFirmada
GETLa URI completa incluyendo el query string, exactamente como se envía
POST con JSONEl cuerpo JSON, re-serializado compacto (sin espacios ni salto de línea final)
POST multipartEl SHA-256 en Base64 del archivo, que además se manda en el header Content-SHA256

Dos detalles que conviene resolverlos desde el principio:

  1. En GET, la URI se firma tal como se envía, así que el orden y el encoding de los parámetros importan.
  2. En POST, la comparación se hace contra tu JSON re-serializado en forma compacta. Manda JSON compacto y canónico para que las firmas coincidan.

Una firma que no coincide devuelve 401 con el cuerpo vacío. Como la misma respuesta cubre un web ID desconocido, una llave inactiva y una firma que no coincide, revisa las tres cosas al diagnosticar.

En: header

Cuerpo de la petición

application/json

Definiciones de TypeScript

Usa el tipo request body en TypeScript.

Cuerpo de la respuesta

application/json

curl -X POST "https://example.com/api/documentset/close" \  -H "Content-Type: application/json" \  -d '{    "documentSet": "7c320b07-5b71-4ef4-8b8e-7db8cb1d8f21",    "workflow": {      "remind_every": "1d",      "language": "es",      "ordered": true,      "signersConfig": [        {          "data": "GOCF9002225A711"        },        {          "data": "[email protected]"        }      ]    }  }'

{  "document_set": "7c320b07-5b71-4ef4-8b8e-7db8cb1d8f21"}