API v2

Crear y enviar un contrato en una sola llamada.

POST/api/v2/create/contract

Crear y enviar a firmar (v2)

Crea y envia un documento para firma

Autenticación. Cabecera apikey con tu API key, o Authorization: Bearer con un token.

Cuerpo application/json

  • blockchainTypestringobligatorio

    Tipo de blockchain que se utilizará al firmar el contrato.

    Valores: none, basic

  • expiryEndDatestringobligatorio

    Determina la fecha de inicio de expiración del contrato. El formato de fecha debe ser: 'YYYY-MM-DD'

  • expiryStartDatestringobligatorio

    Determina la fecha de inicio de expiración del contrato. El formato de fecha debe ser: 'YYYY-MM-DD'

  • expiryUndefinedbooleanobligatorio

    Especifica si el documento tiene vigencia o no. En caso de ser false, es necesario configurar expiryStartDate y expiryEndDate

  • externalIdstringobligatorio

    Campo de identificación externo.

  • filestring (base64)obligatorio

    El documento a enviar

  • isMedicalPrescriptionboolean

    Determina si el documento es una receta médica. En caso de seleccionar la opción true: Se debe de configurar las recetas medicas en la propiedad "medicalPrescriptions"

  • languagestringobligatorio

    Idioma en el cual se realizará el envío de notificaciones.

    Valores: en, es

  • medicalPrescriptionsarray<object>
    2 campos
    • medicinesarray<object>obligatorio
      3 campos
      • isUnlimitedbooleanobligatorio

        Marcar como ilimitado

      • namestringobligatorio

        Nombre del medicamento

      • quantitynumberobligatorio

        Cantidad necesaria del medicamento

    • namestringobligatorio

      Nombre de la receta medica

  • namestringobligatorio

    Nombre del contrato

  • notificationTypestringobligatorio

    Tipo de notificaciones a enviar en cada evento del contrato.

    Valores: email, sms, email-sms, email-whatsapp, whatsapp, none

  • ownerSelfSignbooleanobligatorio

    En caso de seleccionar la opción true: Si el dueño del contrato tiene una firma configurada en su perfil y es uno de los participantes del contrato, el contrato se firmará automáticamente por este participante.

  • participantsarray<object>obligatorio
    18 campos
    • attachmentsarray<object>

      Arreglo de anexos

      2 campos
      • namestringobligatorio

        Nombre del anexo

      • requiredboolean

        Indica si el anexo es requerido para la firma del contrato o no

    • customMessagestringobligatorio

      Mensaje personalizado del participante

    • emailstringobligatorio

      Correo del participante

    • labelstringobligatorio

      Rol del participante

    • last_namestringobligatorio

      Apellido del participante

    • namestringobligatorio

      Nombre del participante o razón social

    • obligationstringobligatorio

      Tipo de persona del participante. individual: persona física, legal: persona moral

      Valores: individual, legal

    • phonestring

      Celular del participante (es necesario si se usa 'email-sms' o 'sms' o 'email-whatsapp' o 'whatsapp' como el tipo de notificación)

    • representativestringobligatorio

      Representante del participante

    • requestAgreementbooleanobligatorio

      Pedir video de consentimiento al participante (Blindaje 3)

    • requestCreditBureauboolean

      Pedir buró de crédito

    • requestIneboolean

      Pedir validación de INE

    • requestLocationboolean

      Pedir geolocalización

    • requestOneTimePasswordboolean

      Pedir contraseña de un solo uso

    • requestVeridocboolean

      Pedir validación de INE con foto

    • rfcstring

      RFC del participante (es necesario si se usa 'certificate' como el tipo de firma)

    • signOrdernumberobligatorio

      En caso de seleccionar la opción true en la propiedad 'signInOrder': Especifica cuando le toca firmar al participante

    • signaturesarray<object>obligatorio

      Arreglo de firmas

      6 campos
      • customSizebooleanobligatorio
      • heightnumberobligatorio
      • leftnumberobligatorio
      • pagenumberobligatorio
      • topnumberobligatorio
      • widthnumberobligatorio
  • shield3Statementstringobligatorio

    El texto proporcionado en este campo se utiliza para personalizar el mensaje de Blindaje 3, cuenta con 3 campos que se pueden utilizar dentro del cuerpo del mensaje que seran reemplazados con el valor correspondiente {{contractName}} {{today}} y {{participantName}}, ver ejemplo:

  • shield3ValidationRequiredboolean

    Determina si el video del Blindaje 3 debe ser validado

  • signInOrderbooleanobligatorio

    En caso de seleccionar la opción true: Se debe de configurar en cada participante la propiedad 'signOrder' para especificar que participante debe firmar primero.

  • signatureTypestringobligatorio

    Tipo de firma con la cual se firmará el contrato. Las opciones disponibles son (autograph: Firma Autógrafa Digitalizada/certificate: Firma Electrónica Avanzada/none: Sin Firma). Si se escoge 'certificate' es necesario especificar el RFC en cada participante

    Valores: autograph, certificate, none

  • stampNombooleanobligatorio

    Incluir la constancia NOM-151 como parte del contrato.

  • validateEsignCertificateboolean

    Determina si el RFC debe ser validado con la firma FIEL

Respuestas

  • 200Contrato enviado con éxito
    Campos de la respuesta
    • contractobjectobligatorio
      2 campos
      • _idstringobligatorio

        ID del contrato creado.

      • participantsarray<object>obligatorio
        3 campos
        • _idstringobligatorio

          ID del participante.

        • emailstringobligatorio
        • signUrlstringobligatorio

          Enlace de firma (si se pidió showSignLinks).

    • successbooleanobligatorio
  • 400Error en la petición o error de validación
  • 401Error de autenticación: API key ausente, no válida o de otro entorno.

Petición

POST
/api/v2/create/contract
curl -X POST "https://enterprise-stage.api.trato.io/api/v2/create/contract" \
  -H "apikey: $TRATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "blockchainType": "none",
  "expiryEndDate": "2021-01-01",
  "expiryStartDate": "2020-01-01",
  "expiryUndefined": false,
  "externalId": "ID0001",
  "file": "data:application/pdf;base64,JVBERi0xLjQKJcOkw7zDtsOfCjIgMCBvYmoKPDwvTGVuZ3RoIDMgMCBSL0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nB2KvQrCQBCE...",
  "isMedicalPrescription": false,
  "language": "es",
  "medicalPrescriptions": [
    {
      "medicines": [
        {
          "isUnlimited": false,
          "name": "Medicamento 1",
          "quantity": "1"
        }
      ],
      "name": "Receta Medica"
    }
  ],
  "name": "Nombre Nuevo Contrato",
  "notificationType": "email",
  "ownerSelfSign": false,
  "participants": [
    {
      "attachments": [
        {
          "name": "Nuevo anexo",
          "required": true
        }
      ],
      "customMessage": 0,
      "email": "pedro@trato.io",
      "label": "La parte",
      "last_name": "Apellido Participante (invididual)",
      "name": "Nombre participante(individual) / Razón social(legal)",
      "obligation": "individual",
      "phone": "+525555555555",
      "representative": "Nombre representante (legal)",
      "requestAgreement": false,
      "requestCreditBureau": false,
      "requestIne": false,
      "requestLocation": false,
      "requestOneTimePassword": false,
      "requestVeridoc": false,
      "rfc": "TTTT950208TTT",
      "signOrder": 0,
      "signatures": [
        {
          "customSize": true,
          "height": 100,
          "left": 60,
          "page": 1,
          "top": 170,
          "width": 200
        }
      ]
    }
  ],
  "shield3Statement": "Yo {{participantName}} he leído y entiendo los términos y condiciones del contrato {{contractName}}, de fecha {{today}} y manifiesto mi aceptación en el uso de la firma electrónica en relación con el presente mensaje de datos y la evidencia digital para este contrato.",
  "shield3ValidationRequired": true,
  "signInOrder": false,
  "signatureType": "autograph",
  "stampNom": true,
  "validateEsignCertificate": true
}'

Respuesta

{
  "contract": {
    "_id": "string",
    "participants": [
      {
        "_id": "string",
        "email": "ana@example.com",
        "signUrl": "string"
      }
    ]
  },
  "success": true
}
POST/api/v2/sign/contract

Firmar como el usuario de la API key (v2)

Firma un documento si el usuario que realiza la petición tiene que realizar una acción de firma

Autenticación. Cabecera apikey con tu API key, o Authorization: Bearer con un token.

Cuerpo application/json

  • contractIdstringobligatorio

    Id del contrato a firmar

Respuestas

  • 200Documento firmado con éxito
  • 400Error en la petición o error de validación
  • 401Error de autenticación: API key ausente, no válida o de otro entorno.

Petición

POST
/api/v2/sign/contract
curl -X POST "https://enterprise-stage.api.trato.io/api/v2/sign/contract" \
  -H "apikey: $TRATO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "contractId": "5fc1270eb7b97ea03c618180"
}'

Respuesta

{}