Documentos
List documents
Permite obtener una lista de objetos del tipo Documento a los cuales se tiene acceso.
GET /api/document/get_allQuery Parameters
Este endpoint permite queries utilizando valores de forma, por ejemplo:
/api/document/get_all?docname=documento%20de%20prueba&from_date=30122021&to_date=30122022&tags=EJEMPLO1,EJEMPLO2,EJEMPLO3Los campos permitidos son:
| Parámetro | Descripción |
|---|---|
from_date | Fecha inicial del rango a consultar en formato ddmmaaaa |
to_date | Fecha final del rango a consultar en formato ddmmaaaa |
tags | Etiquetas a consultar (separadas por coma) |
Request
curl -X GET -H "X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}" "https://efirma.com/api/document/get_all"GET %7B%7Befirma_url%7D%7D/api/document/get_all HTTP/1.1
Host:
X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}Response
[
{
"id": "XXXXXXXXXX",
"name": "Document 1",
"createdat": "2020-08-04T02:10:52.607Z",
"hash": "b9cdafe03253e2d25360547c12e021e90e3e1562cb30baee4e88703bd305b0ee",
"fully_signed": true,
"original_file": "https://efirma.com/odocument/XXXXXXXXXX?at=XXXXXXXXXX&ut=XXXXXXXXXX&tt=XXXXXXXXXX",
"evidence_file": "",
"merged_file": "",
"signed_file": ""
},
{
"id": "XXXXXXXXXX",
"name": "Document 2",
"createdat": "2020-08-04T02:10:31.188Z",
"hash": "2f295610279183e5388a206a2a2a67ce24971bf732ea5a58cac58fdd64ddbcc5",
"fully_signed": false,
"original_file": "https://efirma.com/odocument/XXXXXXXXXX?at=XXXXXXXXXX&ut=XXXXXXXXXX&tt=XXXXXXXXXX",
"evidence_file": "",
"merged_file": "",
"signed_file": ""
},
{
"id": "5f28be10aa470052878a7fe6",
"name": "Documento 3",
"createdat": "2020-08-04T01:46:56.845Z",
"hash": "cc8f92183d7b20a46188585dfdf6f28b4208ca402c36ccc4a9f3304ac18c928b",
"fully_signed": false,
"original_file": "https://efirma.com/odocument/XXXXXXXXXX?at=XXXXXXXXXX&ut=XXXXXXXXXX&tt=XXXXXXXXXX",
"evidence_file": "",
"merged_file": "",
"signed_file": ""
}
]List Signable documents
Permite obtener una lista objectos del tipo Documento a los cuales se tiene acceso y no estan completamente firmados.
GET /api/document/get_signableRequest
curl -X GET -H "X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}" "https://efirma.com/api/document/get_signable"Response
[
{
"id": "XXXXXXXXXX",
"name": "Document 1",
"createdat": "2020-08-04T02:10:52.607Z",
"expirydate": "2020-09-04T02:10:52.607Z",
"hash": "b9cdafe03253e2d25360547c12e021e90e3e1562cb30baee4e88703bd305b0ee",
"signatures": [
{
"email": "test@efirma.com",
"name": "ALAN",
"lname": "GUTIERREZ",
"signature_type": 1,
"signed": false
}
],
"fully_signed": false,
"pages": 1
},
{
"id": "XXXXXXXXXX",
"name": "Document 2",
"createdat": "2020-08-05T02:10:52.007Z",
"expirydate": "2020-08-15T22:11:42.607Z",
"hash": "b9cdafe03253e2d25360547c12e021e90e3e1562cb30baee4e88703bd305b0ee",
"signatures": [
{
"email": "test@efirma.com",
"name": "ALAN",
"lname": "GUTIERREZ",
"signature_type": 2,
"signed": false
}
],
"fully_signed": false,
"pages": 1
}
]Find document by ID
Permite obtener los datos respecto a un documento.
GET /api/document/get/:id| Nombre | Tipo | Descripción |
|---|---|---|
:id | string | El id único del documento. |
Regresará un objeto Documento
Request
curl -X GET -H "X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}" "https://efirma.com/api/document/get/:id"GET %7B%7Befirma_url%7D%7D/api/document/get/:id HTTP/1.1
Host:
X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}Response
{
"id": "XXXXXX",
"name": "Documento",
"createdat": "2020-05-15T18:40:35.554Z",
"hash": "66c0fc2bb90ce3565c4cb8a8afdf3bd800323c94d7d3003971cdd7c186985159",
"owner": "test@efirma.com",
"users": [
{
"email": "test@efirma.com",
"type": "signer",
"access_token": "XXXXXX",
"iframe_url": "https://efirma.com/frame/verify/doc?doc=XXXXXX&at=XXXXXX&ae=test@efirma.com"
},
{
"email": "yyyy@efirma.com",
"type": "signer",
"access_token": "XXXXXX",
"iframe_url": "https://efirma.com/frame/verify/doc?doc=XXXXXX&at=XXXXXX&ae=yyyy@efirma.com"
},
{
"email": "test@efirma.com",
"type": "signer",
"access_token": "XXXXXX",
"iframe_url": "https://efirma.com/frame/verify/doc?doc=XXXXXX&at=XXXXXX&ae=test@efirma.com"
}
],
"signatures": [
{
"email": "test@efirma.com",
"name": "DAVID",
"lname": "GUTIERREZ",
"signature_type": 2,
"signed": true,
"signature": "<<BASE64 de la imágen de la firma>>",
"tsq_file": "https://efirma.com/tsq/XXXXXX",
"tsr_file": "https://efirma.com/tsr/XXXXXX",
"ip": "127.0.0.1"
},
{
"email": "yyyy@efirma.com",
"name": "Alberto",
"lname": "Leyva",
"signature_type": 2,
"signed": true,
"signature": "<<BASE64 de la imágen de la firma>>",
"tsq_file": "https://efirma.com/tsq/XXXXXX",
"tsr_file": "https://efirma.com/tsr/XXXXXX",
"ip": "127.0.0.1"
},
{
"email": "xxxxxx@hotmail.com",
"name": "Isabel",
"lname": "Ulloa",
"signature_type": 2,
"signed": true,
"signature": "<<BASE64 de la imágen de la firma>>",
"tsq_file": "https://efirma.com/tsq/XXXXXX",
"tsr_file": "https://efirma.com/tsr/XXXXXX",
"ip": "127.0.0.1"
}
],
"fully_signed": true,
"original_file": "https://efirma.com/odocument/XXXXXX?at=XXXXXX&ut=XXXXXX&tt=XXXXXX",
"evidence_file": "https://efirma.com/sdocument/XXXXXX?at=XXXXXX&ut=XXXXXX&tt=XXXXXX",
"merged_file": "https://efirma.com/osdocument/XXXXXX?at=XXXXXX&ut=XXXXXX&tt=XXXXXX",
"signed_file": "https://efirma.com/pkcsdocument/XXXXXX?at=XXXXXX&ut=XXXXXX&tt=XXXXXX"
}Get Document Signatures
Permite obtener los datos de todas las firmas que aparecen en un documento.
POST /api/document/get_signatures| Nombre | Tipo | Descripción |
|---|---|---|
:ìd | string | El id único del documento. |
Regresará un arreglo de firmantes
Request
curl -X GET -H "X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}" "https://efirma.com/api/document/get_signatures" --form 'docid="60X2103cX291cXX8cX8a706X"'Response
[
{
"email": "user@domain.com",
"name": "User Name",
"lname": "User Lastname",
"curp": "CURP",
"certificado": {
"CommonName": "",
"Issuer": "",
"Country": "",
"Organization": "",
"CURP": "",
"RFC": "",
"Serial": "",
"Email": "",
"NotAfter": "",
"IsOrg": true/false
},
"signature_type": "firma_electronica",
"ts": "0",
"tsq": "https://efirma.com/tsq/xxxx",
"tsr": "https://efirma.com/tsr/xxxx",
"signature": "b64Signature",
"algorithm": "sha-x"
}
][
{
"email": "user@domain.com",
"name": "User Name",
"lname": "User Lastname",
"svg_signature": "data:image/svg+xml;base64,PHN...2Zz4=",
"curp": "CURP",
"png_signature": "iVBOR...s65S5EZ"
"ip": "127.0.0.1",
"signature_type": "firma_autografa",
"ts": "xxx",
"tsq": "https://efirma.com/tsq/xxxx",
"tsr": "https://efirma.com/tsr/xxxx"
}
]Create Document
Permite crear/subir un documento a nuestros sistemas para su firmado, el contenido debe venir en un multipart/form-data y los parametros en formato JSON dentro de un campo con nombre “data”.
POST /api/document/| Nombre | Tipo de Dato | Descripción |
|---|---|---|
name | String | El nombre con el cual se creará el documento. |
signature_type | Int | Especifica el tipo de firma electrónica a utilizar dentro del documento. 1 = Firma Electrónica Avanzada, 2 = Firma Autógrafa Digital. |
hasOrder | Bool | (Opcional) En caso de ser verdadero, solicitará a los firmantes un orden especificado en el arreglo de objetos Users. |
users | [ ]Users | Una lista de objetos del tipo User de los usuarios que tienen permisos dentro del documento. El usuario que sube el documento se agrega por default como observador, si necesita que el usuario que sube el documento sea firmante, es necesario darlo de alta. |
sidreq | Bool | (Opcional) En caso de ser verdadero, solicitará a los firmantes su Identificación Oficial. |
send_mails | Bool | En caso de ser falso, no se enviarán los correos de invitación a los usuarios del documento. |
idcard_required | Bool | (Opcional) En caso de ser verdadero, el documento generado requerirá una identificación anexa para poder ser firmado. |
geo_required | Bool | (Opcional) En caso de ser verdadero, el documento generado requerirá obtener la geolocalización del dispositivo para ser firmado. |
sms_required | Bool | (Opcional) En caso de ser verdadero, el documento generado requerirá validar el número de celular del firmante. Esta opción solo es válida para documentos que vayan a ser firmados con Firma Autógrafa Digital. |
expiry_in | Int | (Opcional) Plazo para la celebración del contrato, el parámetro puede ser entre 1 y 90 días. Valor predefinido de 30 días. |
desc | String | (Opcional) Descripción del documento que se agregará en la nota de invitación enviada a los usuarios por correo electrónico. |
callback_url | String | (Opcional) URL para notificar cuando una acción sea ejercida sobre el documento. |
return_url | String | (Opcional) URL para redirigir al usuario una vez que se firme el documento. |
reject_url | String | (Opcional) URL para redirigir al usuario en caso de que decida rechazar el documento. |
Regresa un JSON con el “id” del documento creado
curl --location --request POST 'https://efirma.com/api/document' \
--header 'Content-Type: multipart/form-data' \
--header 'X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}' \
--form 'Multipart/Form=@"/C:/Documents/exampleDoc.pdf"' \
--form 'data="{
\"name\":\"Example\",
\"desc\":\"Este documento esta hecho por medio de la API para pruebas.\",
\"users\":[
{
\"email\":\"xxxxxx@xxxxxxx.com\",
\"type\":\"signer\",
\"ignore_invitation\":true,
\"order\":1\
\"sidreq":false
},
{
\"email\":\"xxxxxx@xxxxxx.com\",
\"type\":\"signer\",
\"order\":2\
\"sidreq":true
}
],
\"hasOrder\":true,
\"send_mails\":true,
\"signature_type\":2,
\"idcard_required\":false,
\"geo_required\":false,
\"sms_required\":false,
\"tags\":["TAG1","TAG2"]
\"callback_url\":\"\",
\"return_url\":\"xxxxxxx\",
\"reject_url\":\"xxxxxxx\",
\"expiry_in\":30
}"'POST https://efirma.com/api/document HTTP/1.1
POST /api/document HTTP/1.1
Host: https://efirma.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
X-eFirma-Auth: {"uid":"UID_EFIRMA"","key":"KEY_EFIRMA"}
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="Multipart/Form"; filename="/C:/Documents/exampleDoc.pdf"
Content-Type: application/pdf
(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="data"
{
"name":"Example",
"desc":"Este documento esta hecho por medio de la API para pruebas.",
"users":[
{
"email":"xxxx@xxxxx.com",
"type":"signer",
"ignore_invitation":true,
"order":1
"sidreq":false
},
{
"email":"xxxx@xxxxxxx.com",
"type":"signer",
"order":2
"sidreq":true
}
],
"hasOrder":true,
"send_mails":true,
"signature_type":2,
"idcard_required":false,
"geo_required":false,
"sms_required":false,
"callback_url":"",
"return_url":"xxxxxxx",
"reject_url":"xxxxxxxx",
"expiry_in":30
}Response
{
"id": "XXXXXXXXX"
}Delet Document
Permite eliminar un documento previamente subido por el usuario de la API Key
Solo se pueden eliminar documentos que hayan sido creados por el usuario y que no esten firmados.
GET /api/document/delete/:id| Nombre | Tipo | Descripción |
|---|---|---|
:id | string | El id único del documento. |
Regresa un JSON un mensaje de error o de éxito.
curl -X GET -H "X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}" "https://efirma.com/api/document/delete/:id"GET %7B%7Befirma_url%7D%7D/api/document/delete/:id HTTP/1.1
Host:
X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}Send Reminder
Permite enviar un recordatorio de firma con acceso al documento, los parametros deben venir en el BODY con un Header del tipo application/json.
POST /api/document/send_reminder/| Nombre | Tipo | Descripción |
|---|---|---|
id | string | El id único del documento. |
user | string | El correo electrónico del usuario al que se le enviará el recordatorio. El usuario tiene que estar registrado como observador o firmante. |
Request
curl -X POST -H "Content-Type: application/json" -H "X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}" -d '{
"id":"XXXXXXXXX",
"user":"test@efirma.com"
}' "https://efirma.com/api/document/send_reminder/"POST %7B%7Befirma_url%7D%7D/api/document/send_reminder/ HTTP/1.1
Host:
Content-Type: application/json
X-eFirma-Auth: {"uid":"UID_EFIRMA","key":"KEY_EFIRMA"}
{
"id":"XXXXXXXXX",
"user":"test@efirma.com"
}{
"status": "success"
}{
"message": "Can't send a reminder to yourself",
"status": "error"
}{
"message": "Document does't exist",
"status": "error"
}IFrames
La API de eFirma permitirá a sus usuarios mostrar los documentos a firmar dentro de sus propias páginas web a través de iframes.
Nota de seguridad
Por seguridad de los firmantes, antes de mostrar el documento se enviará un correo electrónico para confirmar al usuario.
Mostrar un documento dentro de un iFrame
Para mostrar un documento en un iframe, será necesario obtener el iframe_url de nuestras llamadas de API.
Una vez que se tenga el URL del usuario seleccionado, deberá importar en su página el SDK de Javascript alojado en su HTML e inicializarlo de la siguiente manera:
En el cuerpo de la página, deberá renderizarse un botón que mande a llamar al método openWindow() del SDK EfirmaTools; asimismo, deberá existir un <div> vacío para que el SDK lo tome como su contenedor.
<html>
<head>
<script src='https://efirma.com/pub/js/efirmaTools.js'/>
<script>
let frameId = 'theframe'; // Se define en el HTML más adelante
let iframeUrl = 'https://efirma.com/frame/verify/doc?doc=<<ID DOCUMENTO>>&at=<<CODIGO DE ACCESO>>&ae=<<EMAIL USUARIO>>'; //Lo obtendras de las llamadas API
var efirmaTools = new EfirmaTools(frameId, iframeUrl);
</script>
</head>
<body>
<button onclick="efirmaTools.openWindow()">Text</button> <!--Aqui se asigna la accion al botón-->
<div id="theframe" style="height: 1000px;"></div>
</body>
</html>