Listar documentos

GET
/api/document

Lista los documentos creados en una ventana de tiempo, del más reciente al más viejo.

Los resultados vienen paginados por cursor: si la respuesta trae nextToken hay más resultados y se lo regresas para pedir la siguiente página. Si no lo trae, ya los tienes todos — así que itera hasta que desaparezca, no cuentes páginas.

Acuérdate de que es un GET: la firma cubre la URI completa incluyendo estos parámetros de consulta, en el orden en que los mandes.

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 consulta

from*integer

Inicio de la ventana, en milisegundos desde el epoch de Unix.

Formatoint64
to*integer

Fin de la ventana, en milisegundos desde el epoch de Unix.

Formatoint64
nextToken?string

El cursor de la respuesta anterior. Omítelo en la primera página.

Cuerpo de la respuesta

application/json

curl -X GET "https://example.com/api/document?from=1640995200000&to=1641945600000"
{  "documents": [    {      "active": true,      "createdAt": 1638320273000,      "firmamexId": "0000-0000-0000-0000",      "originalName": "Contrato",      "signaturesCount": 1,      "stickerStatus": "STICKERS"    }  ],  "nextToken": "token"}