{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Factura de Sujeto Excluido Electrónica",
    "type": "object",
    "properties": {
        "identificacion": {
            "description": "Identificación",
            "type": "object",
            "properties": {
                "version": {
                    "type": "integer",
                    "description": "Versión",
                    "const": 2
                },
                "ambiente": {
                    "type": "string",
                    "description": "Ambiente de destino",
                    "enum": [
                        "00",
                        "01"
                    ]
                },
                "tipoDte": {
                    "type": "string",
                    "description": "Tipo de Documento",
                    "const": "14"
                },
                "numeroControl": {
                    "type": "string",
                    "description": "Número de Control",
                    "maxLength": 31,
                    "minLength": 31,
                    "pattern": "^(?!.*[\r\n])DTE-14-(M|B|S|P)([0-9]{3})(P)([0-9]{3})-[0-9]{15}$"
                },
                "codigoGeneracion": {
                    "type": "string",
                    "description": "Código de Generación",
                    "maxLength": 36,
                    "minLength": 36,
                    "pattern": "^(?!.*[\r\n])[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}$"
                },
                "tipoModelo": {
                    "type": "number",
                    "description": "Modelo de Facturación",
                    "enum": [
                        1,
                        2
                    ]
                },
                "tipoOperacion": {
                    "type": "integer",
                    "description": "Tipo de Transmisión",
                    "enum": [
                        1,
                        2
                    ]
                },
                "tipoContingencia": {
                    "description": "Tipo de Contingencia",
                    "type": [
                        "integer",
                        "null"
                    ],
                    "enum": [
                        null,
                        1,
                        2,
                        3,
                        4,
                        5
                    ]
                },
                "motivoContin": {
                    "description": "Motivo de Contingencia",
                    "type": [
                        "string",
                        "null"
                    ],
                    "minLength": 1,
                    "maxLength": 500
                },
                "fecEmi": {
                    "type": "string",
                    "description": "Fecha de Generación",
                    "format": "date"
                },
                "horEmi": {
                    "type": "string",
                    "description": "Hora de Generación",
                    "pattern": "^(?!.*[\r\n])(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]?$"
                },
                "tipoMoneda": {
                    "type": "string",
                    "description": "Tipo de Moneda",
                    "enum": [
                        "USD"
                    ]
                }
            },
            "additionalProperties": false,
            "required": [
                "version",
                "ambiente",
                "tipoDte",
                "numeroControl",
                "codigoGeneracion",
                "tipoModelo",
                "tipoOperacion",
                "tipoContingencia",
                "motivoContin",
                "fecEmi",
                "horEmi",
                "tipoMoneda"
            ]
        },
        "emisor": {
            "type": "object",
            "description": "Emisor",
            "properties": {
                "nit": {
                    "description": "NIT (Emisor)",
                    "type": "string"
                },
                "nrc": {
                    "description": "NRC (Emisor)",
                    "type": [
                        "string",
                        "null"
                    ],
                    "maxLength": 8,
                    "minLength": 2
                },
                "nombre": {
                    "type": "string",
                    "description": "Nombre (Emisor)",
                    "minLength": 1,
                    "maxLength": 250
                },
                "codActividad": {
                    "type": "string",
                    "description": "Código de Actividad Económica (Emisor)",
                    "minLength": 5,
                    "maxLength": 6
                },
                "descActividad": {
                    "type": "string",
                    "description": "Actividad Económica (Emisor)",
                    "minLength": 5,
                    "maxLength": 150
                },
                "direccion": {
                    "type": "object",
                    "description": "Dirección (Emisor)",
                    "properties": {
                        "departamento": {
                            "type": "string",
                            "description": "Dirección Departamento (Emisor)"
                        },
                        "municipio": {
                            "type": "string",
                            "description": "Dirección Municipio (Emisor)"
                        },
                        "distrito": {
                            "type": "string",
                            "description": "Dirección Distrito (Emisor)"
                        },
                        "complemento": {
                            "type": "string",
                            "description": "Dirección complemento (Emisor)",
                            "minLength": 1,
                            "maxLength": 200
                        }
                    },
                    "additionalProperties": false,
                    "required": [
                        "departamento",
                        "municipio",
                        "distrito",
                        "complemento"
                    ]
                },
                "telefono": {
                    "type": "string",
                    "description": "Teléfono (Emisor)",
                    "minLength": 8,
                    "maxLength": 30
                },
                "codEstable": {
                    "description": "Código del establecimiento asignado por el contribuyente",
                    "type": [
                        "string",
                        "null"
                    ],
                    "minLength": 4,
                    "maxLength": 4
                },
                "codPuntoVenta": {
                    "description": "Código del Punto de Venta (Emisor) asignado por el contribuyente",
                    "type": [
                        "string",
                        "null"
                    ],
                    "minLength": 1,
                    "maxLength": 15
                },
                "correo": {
                    "type": "string",
                    "description": "Correo electrónico (Emisor)",
                    "minLength": 6,
                    "maxLength": 100
                }
            },
            "additionalProperties": false,
            "required": [
                "nit",
                "nrc",
                "nombre",
                "codActividad",
                "descActividad",
                "direccion",
                "telefono",
                "codEstable",
                "codPuntoVenta",
                "correo"
            ]
        },
        "receptor": {
            "type": "object",
            "description": "Sujeto Excluido (Receptor)",
            "properties": {
                "tipoDocumento": {
                    "type": "string",
                    "description": "Tipo de documento de identificación (Receptor)"
                },
                "numDocumento": {
                    "type": "string",
                    "description": "Número de documento de Identificación (Receptor)",
                    "minLength": 1,
                    "maxLength": 20
                },
                "nombre": {
                    "type": "string",
                    "description": "Nombre (Receptor)",
                    "minLength": 1,
                    "maxLength": 250
                },
                "codActividad": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Código de Actividad Económica (Receptor)"
                },
                "descActividad": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Actividad Económica (Receptor)",
                    "minLength": 5,
                    "maxLength": 150
                },
                "direccion": {
                    "type": "object",
                    "description": "Dirección (Receptor)",
                    "properties": {
                        "departamento": {
                            "type": "string",
                            "description": "Dirección: Departamento (Receptor)"
                        },
                        "municipio": {
                            "type": "string",
                            "description": "Dirección: Municipio (Receptor)"
                        },
                        "distrito": {
                            "type": "string",
                            "description": "Dirección Distrito (Receptor)"
                        },
                        "complemento": {
                            "type": "string",
                            "description": "Dirección: complemento (Receptor)",
                            "minLength": 1,
                            "maxLength": 200
                        }
                    },
                    "additionalProperties": false,
                    "required": [
                        "departamento",
                        "municipio",
                        "distrito",
                        "complemento"
                    ]
                },
                "telefono": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Teléfono (Receptor)",
                    "minLength": 8,
                    "maxLength": 30
                },
                "correo": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Correo electrónico (Receptor)",
                    "minLength": 6,
                    "maxLength": 100
                }
            },
            "additionalProperties": false,
            "required": [
                "tipoDocumento",
                "numDocumento",
                "nombre",
                "codActividad",
                "descActividad",
                "direccion",
                "telefono",
                "correo"
            ]
        },
        "cuerpoDocumento": {
            "type": "array",
            "description": "Cuerpo del Documento",
            "items": {
                "type": "object",
                "properties": {
                    "numItem": {
                        "type": "integer",
                        "description": "N° ítem",
                        "minimum": 1,
                        "maximum": 2000
                    },
                    "tipoItem": {
                        "type": "integer",
                        "description": "Tipo de ítem"
                    },
                    "cantidad": {
                        "type": "number",
                        "description": "Cantidad",
                        "exclusiveMinimum": 0,
                        "exclusiveMaximum": 100000000000,
                        "multipleOf": 1e-08
                    },
                    "codigo": {
                        "description": "Código",
                        "type": [
                            "string",
                            "null"
                        ],
                        "minLength": 1,
                        "maxLength": 25
                    },
                    "uniMedida": {
                        "type": "integer",
                        "description": "Unidad de Medida",
                        "minimum": 1
                    },
                    "descripcion": {
                        "type": "string",
                        "description": "Descripción",
                        "minLength": 1,
                        "maxLength": 1500
                    },
                    "precioUni": {
                        "type": "number",
                        "description": "Precio Unitario",
                        "exclusiveMaximum": 100000000000,
                        "minimum": 0,
                        "multipleOf": 1e-08
                    },
                    "montoDescu": {
                        "type": "number",
                        "description": "Descuento por ítem",
                        "minimum": 0,
                        "exclusiveMaximum": 100000000000,
                        "multipleOf": 1e-08
                    },
                    "compra": {
                        "type": "number",
                        "description": "Compras",
                        "minimum": 0,
                        "exclusiveMaximum": 100000000000,
                        "multipleOf": 1e-08
                    }
                },
                "additionalProperties": false,
                "required": [
                    "numItem",
                    "tipoItem",
                    "cantidad",
                    "codigo",
                    "uniMedida",
                    "descripcion",
                    "precioUni",
                    "montoDescu",
                    "compra"
                ]
            },
            "minItems": 1,
            "maxItems": 2000
        },
        "resumen": {
            "type": "object",
            "description": "Resumen",
            "properties": {
                "totalCompra": {
                    "type": "number",
                    "description": "Total de Operaciones",
                    "minimum": 0,
                    "exclusiveMaximum": 100000000000,
                    "multipleOf": 0.01
                },
                "descu": {
                    "type": "number",
                    "description": "Descuento global al total de operaciones.",
                    "minimum": 0,
                    "exclusiveMaximum": 100000000000,
                    "multipleOf": 0.01
                },
                "totalDescu": {
                    "type": "number",
                    "description": "Total de Descuentos",
                    "minimum": 0,
                    "exclusiveMaximum": 100000000000,
                    "multipleOf": 0.01
                },
                "subTotal": {
                    "type": "number",
                    "description": "Sub-Total",
                    "minimum": 0,
                    "exclusiveMaximum": 100000000000,
                    "multipleOf": 0.01
                },
                "reteRenta": {
                    "type": "number",
                    "description": "Retención Renta",
                    "minimum": 0,
                    "exclusiveMaximum": 100000000000,
                    "multipleOf": 0.01
                },
                "totalPagar": {
                    "type": "number",
                    "description": "Total a Pagar",
                    "minimum": 0,
                    "exclusiveMaximum": 100000000000,
                    "multipleOf": 0.01
                },
                "totalLetras": {
                    "type": [
                        "string",
                        "null"
                    ],
                    "description": "Valor en Letras",
                    "minLength": 1,
                    "maxLength": 200
                },
                "condicionOperacion": {
                    "type": "number",
                    "description": "Condición de la Operación"
                },
                "pagos": {
                    "description": "Pagos",
                    "type": [
                        "array",
                        "null"
                    ],
                    "items": {
                        "type": "object",
                        "properties": {
                            "codigo": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Código de forma de pago",
                                "maxLength": 2
                            },
                            "montoPago": {
                                "type": "number",
                                "description": "Monto por forma de pago",
                                "minimum": 0,
                                "exclusiveMaximum": 100000000000,
                                "multipleOf": 0.01
                            },
                            "referencia": {
                                "type": [
                                    "string",
                                    "null"
                                ],
                                "description": "Referencia de modalidad de pago",
                                "maxLength": 50
                            },
                            "plazo": {
                                "description": "Plazo",
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "periodo": {
                                "description": "Período de plazo",
                                "type": [
                                    "number",
                                    "null"
                                ]
                            }
                        },
                        "additionalProperties": false,
                        "required": [
                            "codigo",
                            "montoPago",
                            "referencia",
                            "plazo",
                            "periodo"
                        ]
                    },
                    "minItems": 1
                },
                "observaciones": {
                    "description": "Observaciones",
                    "type": [
                        "string",
                        "null"
                    ],
                    "minLength": 1,
                    "maxLength": 3000
                }
            },
            "additionalProperties": false,
            "required": [
                "totalCompra",
                "descu",
                "totalDescu",
                "subTotal",
                "reteRenta",
                "totalPagar",
                "totalLetras",
                "condicionOperacion",
                "pagos",
                "observaciones"
            ]
        },
        "apendice": {
            "description": "Apéndice",
            "type": [
                "array",
                "null"
            ],
            "items": {
                "type": "object",
                "properties": {
                    "campo": {
                        "type": "string",
                        "description": "Nombre del campo",
                        "maxLength": 25
                    },
                    "etiqueta": {
                        "type": "string",
                        "description": "Descripción",
                        "maxLength": 50
                    },
                    "valor": {
                        "type": "string",
                        "description": "Valor/Dato",
                        "maxLength": 150
                    }
                },
                "additionalProperties": false,
                "required": [
                    "campo",
                    "etiqueta",
                    "valor"
                ]
            },
            "minItems": 1,
            "maxItems": 10
        }
    },
    "additionalProperties": false,
    "required": [
        "identificacion",
        "emisor",
        "receptor",
        "cuerpoDocumento",
        "resumen",
        "apendice"
    ]
}