Endosar un documento
Agrega un endoso a un documento completamente firmado — el equivalente electrónico de endosar un pagaré. El texto del endoso se escribe sobre el documento y lo firma el endosante.
endorser y endorsee son stickers normales. Dale al endosante imageType: "endorsment" para
que el propio texto del endoso se dibuje como imagen de firma. endorsee es opcional: un
endoso en blanco no tiene destinatario nombrado.
Autenticación
signmage 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ón | cadenaFirmada |
|---|---|
GET | La URI completa incluyendo el query string, exactamente como se envía |
POST con JSON | El cuerpo JSON, re-serializado compacto (sin espacios ni salto de línea final) |
POST multipart | El SHA-256 en Base64 del archivo, que además se manda en el header Content-SHA256 |
Dos detalles que conviene resolverlos desde el principio:
- En
GET, la URI se firma tal como se envía, así que el orden y el encoding de los parámetros importan. - 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
Parámetros de ruta
El id del documento que se endosa. Tiene que estar completamente firmado.
Cuerpo de la petición
application/json
Definiciones de TypeScript
Usa el tipo request body en TypeScript.
Cuerpo de la respuesta
text/plain
curl -X POST "https://example.com/api/document/string/endorse" \ -H "Content-Type: application/json" \ -d '{ "endorsment": "Se hace constar que, en esta fecha, XX, S.A.P.I. de C.V., como tenedor, cedió el presente pagaré al que esta anotación va adherida.", "endorser": { "authority": "SAT", "stickerType": "line", "dataType": "rfc", "email": "[email protected]", "data": "ARCX9012226P8", "imageType": "endorsment", "page": 1, "rect": { "lx": 145, "ly": 496, "tx": 443, "ty": 610 } }, "endorsee": { "authority": "SAT", "stickerType": "line", "dataType": "rfc", "email": "[email protected]", "data": "BACX9012226P8", "imageType": "stroke", "page": 1, "rect": { "lx": 145, "ly": 296, "tx": 443, "ty": 410 } } }'