Cufy API
Documentos

Solicitar reenvío al comprador

POST/v1/documents/{id}/deliveries

Estado: parcial. Ambientes: simulation, qualification. Permisos: documents:deliver.

Alcance: Entrega de ensayo de una revisión validada. Idempotente, diez solicitudes manuales por documento/revisión/hora, cien destinatarios activos por empresa/ambiente y sin duplicar destinatarios pendientes. Espera el paquete completo. No envía correo real.

Solicitar reenvío al comprador

Authorization

ClientApiKey
X-API-Key<token>

Secreto ligado a empresa, actor, permisos y ambiente. No admite cambiar empresa por body/header.

In: header

Path Parameters

id*string

Identificador opaco. No autoriza acceso por sí mismo.

Formatuuid
Length1 <= length <= 36

Header Parameters

Idempotency-Key*string

Obligatoria en mutaciones. Alcance: empresa/ambiente/operación/recurso destino. Retención mínima 90 días y mientras haya trabajo pendiente. Mismo contenido recupera resultado; contenido diferente produce 409.

Match^[A-Za-z0-9][A-Za-z0-9._:-]{7,127}$
Length1 <= length <= 128

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/documents/497f6eca-6276-4993-bfeb-53cbbbba6f08/deliveries" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "recipients": [      "user@example.com"    ],    "reason": "string",    "revision": 1  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",  "revision": 1,  "status": "not_ready",  "recipients": [    "user@example.com"  ],  "created_at": "2019-08-24T14:15:22Z",  "next_attempt_at": "2019-08-24T14:15:22Z",  "failure_code": "string",  "source": "automatic",  "channel": "local_test",  "recipient_results": [    {      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",      "recipient": "user@example.com",      "status": "not_ready",      "attempt_count": 0,      "next_attempt_at": "2019-08-24T14:15:22Z",      "failure_code": "string",      "reconciliation_required": true,      "recovery_action": "none"    }  ]}

Consultar historial de entrega GET

**Estado:** parcial. **Ambientes:** simulation, qualification. **Permisos:** `documents:read`. **Alcance:** Historial local por documento, limit 1–100 y cursor firmado por tenant/ambiente/recurso; resume estado por destinatario sin afirmar lectura ni aceptación comercial. Consultar historial de entrega

Admitir Invoice POST

**Estado:** parcial. **Ambientes:** simulation, qualification. **Permisos:** `documents:write`. **Alcance:** Admite el perfil restringido COP, IVA 0/5/19, unidad 94, producto 999, pago 10 y BaseQuantity 1. simulation produce resultados ficticios; qualification exige rango, certificado, autorización revisada y configuración vigentes. La respuesta 202 confirma recepción, no aceptación DIAN. Reglas de comprador v2: persona CC/NIT, empresa NIT con dirección o consumidor final (222222222222, tipo 13, R-99-PN, tributo ZZ); sin identidad RUT verificada. Correo ausente solo avisa. Perfil optativo co-sale-cop-iva-v1/v3: IVA gravado/exento/excluido solo en simulación sin firma ni notas; habilitación real bloqueada. Alternativa AG-041: customer_id de un cliente guardado activo en lugar de buyer (nunca los dos: BUYER_SOURCE_CONFLICT; ninguno: VALIDATION_ERROR con BUYER_REQUIRED); el documento conserva la copia del comprador al admitirlo y un reintento recupera el mismo documento aunque el cliente cambie. 202 admite una revisión de forma durable y reserva saldo. La DIAN responde después. Mismo Idempotency-Key o referencia equivalente recupera la admisión original sin nueva reserva, aunque el cliente guardado haya cambiado o se haya archivado después. No transmitir si la capability no está habilitada. Acepta buyer completo o customer_id de un cliente guardado activo (nunca los dos): el documento conserva la copia del comprador al admitirlo. customer_id ajeno o inexistente: 404 CUSTOMER_NOT_FOUND; archivado: 409 CUSTOMER_ARCHIVED.