Endosar un documento

POST
/api/document/{firmamexId}/endorse

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.

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

Parámetros de ruta

firmamexId*string

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      }    }  }'
Vacío