Digito

Distribuir un sobre

Distribuye el sobre a sus destinatarios según el método configurado.

POST /envelope/distribute

URL base: https://business.digito.do/api/v2.

Ejemplos

Configura DIGITO_API_TOKEN en el servidor. Sustituye los IDs y archivos de ejemplo por los de tu equipo. TypeScript usa fetch y FormData de Node.js.

curl --fail-with-body \
  --request POST \
  --url 'https://business.digito.do/api/v2/envelope/distribute' \
  --header "Authorization: $DIGITO_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data-binary @- <<'JSON'
{
  "envelopeId": "sobre_de_ejemplo",
  "meta": {
    "subject": "Tu contrato está listo para firmar",
    "message": "Revisa el documento y firma con Digito ID.",
    "distributionMethod": "EMAIL",
    "language": "es"
  }
}
JSON

Autenticación

Envía el token de la API en el encabezado Authorization. El acceso corresponde al equipo y a los permisos del token. Conserva el token en tu servidor.

Authorization: api_TU_TOKEN

Antes de cada acción de firma, el firmante debe autenticarse de nuevo con Digito ID. Una sesión previa de Business, un token de destinatario o un token de la API no sustituye este requisito.

Parámetros

Esta operación no declara parámetros de ruta ni de consulta.

Cuerpo de la solicitud

El cuerpo es obligatorio.

Tipo de contenido: application/json.

Objeto de ejemplo

{
  "envelopeId": "sobre_de_ejemplo",
  "meta": {
    "subject": "Tu contrato está listo para firmar",
    "message": "Revisa el documento y firma con Digito ID.",
    "distributionMethod": "EMAIL",
    "language": "es"
  }
}

Los valores muestran una solicitud posible; no son valores predeterminados del servidor.

PropiedadTipoObligatoriaRestricciones
envelopeIdstringSíSin restricciones adicionales en este nivel.
metaobjectNoSin restricciones adicionales en este nivel.
Ver el esquema completo de la solicitud
{
  "type": "object",
  "properties": {
    "envelopeId": {
      "type": "string"
    },
    "meta": {
      "type": "object",
      "properties": {
        "subject": {
          "type": "string",
          "maxLength": 254
        },
        "message": {
          "type": "string",
          "maxLength": 5000
        },
        "timezone": {
          "type": "string"
        },
        "dateFormat": {
          "type": "string",
          "enum": [
            "yyyy-MM-dd hh:mm a",
            "yyyy-MM-dd",
            "dd/MM/yyyy",
            "dd-MM-yyyy",
            "MM/dd/yyyy",
            "yy-MM-dd",
            "MMMM dd, yyyy",
            "EEEE, MMMM dd, yyyy",
            "dd/MM/yyyy hh:mm a",
            "dd/MM/yyyy HH:mm",
            "dd-MM-yyyy hh:mm a",
            "dd-MM-yyyy HH:mm",
            "MM/dd/yyyy hh:mm a",
            "MM/dd/yyyy HH:mm",
            "dd.MM.yyyy",
            "dd.MM.yyyy HH:mm",
            "yyyy-MM-dd HH:mm",
            "yy-MM-dd hh:mm a",
            "yy-MM-dd HH:mm",
            "yyyy-MM-dd HH:mm:ss",
            "MMMM dd, yyyy hh:mm a",
            "MMMM dd, yyyy HH:mm",
            "EEEE, MMMM dd, yyyy hh:mm a",
            "EEEE, MMMM dd, yyyy HH:mm",
            "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
          ]
        },
        "distributionMethod": {
          "type": "string",
          "enum": [
            "EMAIL",
            "NONE"
          ]
        },
        "redirectUrl": {
          "type": "string"
        },
        "language": {
          "type": "string",
          "enum": [
            "en",
            "es"
          ]
        },
        "emailId": {
          "type": "string",
          "nullable": true
        },
        "emailReplyTo": {
          "type": "string",
          "nullable": true,
          "pattern": "^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~\\u{0080}-\\u{FFFF}-]+@[a-zA-Z0-9\\u{0080}-\\u{FFFF}](?:[a-zA-Z0-9\\u{0080}-\\u{FFFF}-]{0,61}[a-zA-Z0-9\\u{0080}-\\u{FFFF}])?(?:\\.[a-zA-Z0-9\\u{0080}-\\u{FFFF}](?:[a-zA-Z0-9\\u{0080}-\\u{FFFF}-]{0,61}[a-zA-Z0-9\\u{0080}-\\u{FFFF}])?)*$"
        },
        "emailSettings": {
          "type": "object",
          "nullable": true,
          "properties": {
            "recipientSigningRequest": {
              "type": "boolean",
              "default": true
            },
            "recipientRemoved": {
              "type": "boolean",
              "default": true
            },
            "recipientSigned": {
              "type": "boolean",
              "default": true
            },
            "documentPending": {
              "type": "boolean",
              "default": true
            },
            "documentCompleted": {
              "type": "boolean",
              "default": true
            },
            "documentDeleted": {
              "type": "boolean",
              "default": true
            },
            "ownerDocumentCompleted": {
              "type": "boolean",
              "default": true
            },
            "ownerRecipientExpired": {
              "type": "boolean",
              "default": true
            },
            "ownerDocumentCreated": {
              "type": "boolean",
              "default": true
            }
          },
          "default": {
            "recipientSigningRequest": true,
            "recipientRemoved": true,
            "recipientSigned": true,
            "documentPending": true,
            "documentCompleted": true,
            "documentDeleted": true,
            "ownerDocumentCompleted": true,
            "ownerRecipientExpired": true,
            "ownerDocumentCreated": true
          }
        }
      }
    }
  },
  "required": [
    "envelopeId"
  ]
}

Respuesta de éxito

signingUrl representa la URL que devuelve la API. Usa ese valor directamente; no construyas una ruta a partir del token. El marcador del ejemplo no es un link de firma.

Este objeto sintético ilustra la estructura completa de una respuesta 200. Los identificadores, fechas, estados y tokens son datos de ejemplo.

{
  "success": true,
  "id": "sobre_de_ejemplo",
  "recipients": [
    {
      "id": 501,
      "name": "Ana Ejemplo",
      "email": "ana@example.com",
      "token": "token_de_destinatario_ejemplo",
      "role": "SIGNER",
      "signingOrder": null,
      "signingUrl": "URL_DE_FIRMA_DEVUELTA_POR_LA_API"
    }
  ]
}

Respuestas y errores

EstadoDescripciónContenido y esquema
200Respuesta correcta.application/json
400Datos de entrada inválidos.application/json
401No se proporcionó autorización.application/json
403Permisos insuficientes.application/json
500Error interno del servidor.application/json

Los esquemas enlazados incluyen propiedades anidadas, campos obligatorios, variantes, enumeraciones, nulabilidad y restricciones. Consulta errores y reintentos para manejar respuestas no exitosas.

Identificador de operación: envelope-distribute.