Untitled

mail@pastecode.io avatar
unknown
json
a year ago
70 kB
2
Indexable
Never
{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Comprobante de Crédito Fiscal Electrónica v3",
    "type": "object",
    "properties": {
        "identificacion" : {
            "description" : "Identificación",
            "type" : "object",
            "properties" : {
                "version" : {
                    "type" : "integer",
                    "description" : "Versión",
                    "const" : 3
                },
                "ambiente" : {
                    "type" : "string",
                    "description" : "Ambiente de destino",
                    "enum" : [
                        "00",
                        "01"
                    ]
                },
                "tipoDte" : {
                    "type" : "string",
                    "description" : "Tipo de Documento",
                    "const" : "03"
                },
                "numeroControl" : {
                    "type" : "string",
                    "description" : "Número de Control",
                    "maxLength" : 31,
                    "minLength" : 31,
                    "pattern" : "^DTE-03-[A-Z0-9]{8}-[0-9]{15}$"
                },
                "codigoGeneracion" : {
                    "type" : "string",
                    "description" : "Código de Generación",
                    "maxLength" : 36,
                    "minLength" : 36,
                    "pattern" : "^[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"
                    ],
                    "maxLength" : 150,
                    "minLength" : 1
                },
                "fecEmi" : {
                    "type" : "string",
                    "description" : "Fecha de Generación",
                    "format" : "date"
                },
                "horEmi" : {
                    "type" : "string",
                    "description" : "Hora de Generación",
                    "pattern" : "^(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"
                    ]
                }
            },
            "allOf" : [
                {
                    "if" : {
                        "properties" : {
                            "tipoOperacion" : {
                                "const" : 1
                            }
                        }
                    },
                    "then" : {
                        "properties" : {
                            "tipoModelo" : {
                                "const" : 1
                            },
                            "tipoContingencia" : {
                                "type" : "null"
                            },
                            "motivoContin" : {
                                "type" : "null"
                            }
                        }
                    },
                    "else" : {
                        "properties" : {
                            "tipoModelo" : {
                                "enum" : [
                                    2
                                ]
                            }
                        }
                    }
                },
                {
                    "if" : {
                        "properties" : {
                            "tipoOperacion" : {
                                "const" : 2
                            }
                        }
                    },
                    "then" : {
                        "properties" : {
                            "tipoContingencia" : {
                                "type" : "integer"
                            }
                        }
                    }
                },
                {
                    "if" : {
                        "properties" : {
                            "tipoContingencia" : {
                                "const" : 5
                            }
                        }
                    },
                    "then" : {
                        "properties" : {
                            "motivoContin" : {
                                "type" : "string"
                            }
                        }
                    }
                }
            ],
            "additionalProperties" : false,
            "required" : [
                "version",
                "ambiente",
                "tipoDte",
                "numeroControl",
                "codigoGeneracion",
                "tipoModelo",
                "tipoOperacion",
                "tipoContingencia",
                "motivoContin",
                "fecEmi",
                "horEmi",
                "tipoMoneda"
            ]
        },
        "documentoRelacionado" : {
            "description" : "Documentos Relacionados",
            "type" : [
                "array",
                "null"
            ],
            "items" : {
                "type" : "object",
                "properties" : {
                    "tipoDocumento" : {
                        "type" : "string",
                        "description" : "Tipo de Documento Tributario Relacionado",
                        "enum" : [
                            "04",
                            "08",
                            "09"
                        ]
                    },
                    "tipoGeneracion" : {
                        "type" : "integer",
                        "description" : "Tipo de Generación del Documento Tributario relacionado",
                        "enum" : [
                            1,
                            2
                        ]
                    },
                    "numeroDocumento" : {
                        "description" : "Número de documento relacionado",
                        "type" : "string",
                        "minLength" : 1,
                        "maxLength" : 36
                    },
                    "fechaEmision" : {
                        "description" : "Fecha de Generación del Documento Relacionado",
                        "type" : "string",
                        "format" : "date"
                    }
                },
                "allOf" : [
                    {
                        "if" : {
                            "properties" : {
                                "tipoGeneracion" : {
                                    "const" : 2
                                }
                            }
                        },
                        "then" : {
                            "properties" : {
                                "numeroDocumento" : {
                                    "pattern" : "^[A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12}$"
                                }
                            }
                        }
                    }
                ],
                "additionalProperties" : false,
                "required" : [
                    "tipoDocumento",
                    "tipoGeneracion",
                    "numeroDocumento",
                    "fechaEmision"
                ]
            },
            "minItems" : 1,
            "maxItems" : 50
        },
        "emisor" : {
            "type" : "object",
            "description" : "Emisor",
            "properties" : {
                "nit" : {
                    "description" : "NIT (Emisor)",
                    "type" : "string",
                    "pattern" : "^([0-9]{14}|[0-9]{9})$"
                },
                "nrc" : {
                    "description" : "NRC (Emisor)",
                    "type" : "string",
                    "pattern" : "^[0-9]{1,8}$"
                },
                "nombre" : {
                    "type" : "string",
                    "description" : "Nombre, denominación o razón social del contribuyente (Emisor)",
                    "maxLength" : 200,
                    "minLength" : 3
                },
                "codActividad" : {
                    "type" : "string",
                    "description" : "Código de Actividad Económica (Emisor)",
                    "pattern" : "^[0-9]{2,6}$"
                },
                "descActividad" : {
                    "type" : "string",
                    "description" : "Actividad Económica (Emisor)",
                    "maxLength" : 150,
                    "minLength" : 1
                },
                "nombreComercial" : {
                    "description" : "Nombre Comercial (Emisor)",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 150,
                    "minLength" : 1
                },
                "tipoEstablecimiento" : {
                    "type" : "string",
                    "description" : "Tipo de establecimiento (Emisor)",
                    "enum" : [
                        "01",
                        "02",
                        "04",
                        "07",
                        "20"
                    ]
                },
                "direccion" : {
                    "type" : "object",
                    "description" : "Dirección (Emisor)",
                    "properties" : {
                        "departamento" : {
                            "type" : "string",
                            "description" : "Dirección Departamento (Emisor)",
                            "pattern" : "^0[1-9]|1[0-4]$"
                        },
                        "municipio" : {
                            "type" : "string",
                            "description" : "Dirección Municipio (Emisor)",
                            "pattern" : "^[0-9]{2}$"
                        },
                        "complemento" : {
                            "type" : "string",
                            "description" : "Dirección complemento (Emisor)",
                            "maxLength" : 200,
                            "minLength" : 1
                        }
                    },
                    "allOf" : [
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "01"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-2]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "enum" : [
                                            "02",
                                            "10"
                                        ]
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-3]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "enum" : [
                                            "03",
                                            "07"
                                        ]
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-6]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "04"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|[12][0-9]|3[0-3]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "enum" : [
                                            "05",
                                            "08"
                                        ]
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|2[0-2]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "06"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "09"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "11"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|2[0-3]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "12"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|20$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "13"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|2[0-6]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "14"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-8]$"
                                    }
                                }
                            }
                        }
                    ],
                    "additionalProperties" : false,
                    "required" : [
                        "departamento",
                        "municipio",
                        "complemento"
                    ]
                },
                "telefono" : {
                    "type" : "string",
                    "description" : "Teléfono (Emisor)",
                    "minLength" : 8,
                    "maxLength" : 30
                },
                "correo" : {
                    "type" : "string",
                    "description" : "Correo electrónico (Emisor)",
                    "format" : "email",
                    "maxLength" : 100,
                    "minLength" : 3
                },
                "codEstableMH" : {
                    "description" : "Código del establecimiento asignado por el MH",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 4,
                    "minLength" : 4
                },
                "codEstable" : {
                    "description" : "Código del establecimiento asignado por el contribuyente",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "minLength" : 1,
                    "maxLength" : 10
                },
                "codPuntoVentaMH" : {
                    "description" : "Código del Punto de Venta (Emisor) Asignado por el MH",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 4,
                    "minLength" : 4
                },
                "codPuntoVenta" : {
                    "description" : "Código del Punto de Venta (Emisor) asignado por el contribuyente",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 15,
                    "minLength" : 1
                }
            },
            "additionalProperties" : false,
            "required" : [
                "nit",
                "nrc",
                "nombre",
                "codActividad",
                "descActividad",
                "nombreComercial",
                "tipoEstablecimiento",
                "direccion",
                "telefono",
                "correo",
                "codEstableMH",
                "codEstable",
                "codPuntoVentaMH",
                "codPuntoVenta"
            ]
        },
        "receptor" : {
            "type" : "object",
            "description" : "Receptor",
            "properties" : {
                "nit" : {
                    "type" : "string",
                    "description" : "NIT (Receptor)",
                    "pattern" : "^([0-9]{14}|[0-9]{9})$"
                },
                "nrc" : {
                    "type" : "string",
                    "description" : "NRC (Receptor)",
                    "pattern" : "^[0-9]{1,8}$"
                },
                "nombre" : {
                    "type" : "string",
                    "description" : "Nombre, denominación o razón social del contribuyente (Receptor)",
                    "maxLength" : 250,
                    "minLength" : 1
                },
                "codActividad" : {
                    "type" : "string",
                    "description" : "Código de Actividad Económica (Receptor)",
                    "pattern" : "^[0-9]{2,6}$"
                },
                "descActividad" : {
                    "type" : "string",
                    "description" : "Actividad Económica (Receptor)",
                    "maxLength" : 150,
                    "minLength" : 1
                },
                "nombreComercial" : {
                    "description" : "Nombre Comercial (Receptor)",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 150,
                    "minLength" : 1
                },
                "direccion" : {
                    "type" : "object",
                    "description" : "Dirección (Receptor)",
                    "properties" : {
                        "departamento" : {
                            "type" : "string",
                            "description" : "Dirección: Departamento (Receptor)",
                            "pattern" : "^0[1-9]|1[0-4]$"
                        },
                        "municipio" : {
                            "type" : "string",
                            "description" : "Dirección: Municipio (Receptor)",
                            "pattern" : "^[0-9]{2}$"
                        },
                        "complemento" : {
                            "type" : "string",
                            "description" : "Dirección: complemento (Receptor)",
                            "maxLength" : 200,
                            "minLength" : 1
                        }
                    },
                    "allOf" : [
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "01"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-2]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "enum" : [
                                            "02",
                                            "10"
                                        ]
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-3]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "enum" : [
                                            "03",
                                            "07"
                                        ]
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-6]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "04"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|[12][0-9]|3[0-3]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "enum" : [
                                            "05",
                                            "08"
                                        ]
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|2[0-2]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "06"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "09"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "11"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|2[0-3]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "12"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|20$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "13"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-9]|2[0-6]$"
                                    }
                                }
                            }
                        },
                        {
                            "if" : {
                                "properties" : {
                                    "departamento" : {
                                        "const" : "14"
                                    }
                                }
                            },
                            "then" : {
                                "properties" : {
                                    "municipio" : {
                                        "pattern" : "^0[1-9]|1[0-8]$"
                                    }
                                }
                            }
                        }
                    ],
                    "additionalProperties" : false,
                    "required" : [
                        "departamento",
                        "municipio",
                        "complemento"
                    ]
                },
                "telefono" : {
                    "type" : [
                        "string",
                        "null"
                    ],
                    "description" : "Teléfono (Receptor)",
                    "minLength" : 8,
                    "maxLength" : 30
                },
                "correo" : {
                    "type" : "string",
                    "description" : "Correo electrónico (Receptor)",
                    "format" : "email",
                    "maxLength" : 100
                }
            },
            "additionalProperties" : false,
            "required" : [
                "nit",
                "nrc",
                "nombre",
                "codActividad",
                "descActividad",
                "nombreComercial",
                "direccion",
                "telefono",
                "correo"
            ]
        },
        "otrosDocumentos" : {
            "description" : "Documentos Asociados",
            "type" : [
                "array",
                "null"
            ],
            "items" : {
                "type" : "object",
                "properties" : {
                    "codDocAsociado" : {
                        "type" : "integer",
                        "description" : "Documento asociado",
                        "minimum" : 1,
                        "maximum" : 4
                    },
                    "descDocumento" : {
                        "type" : [
                            "string",
                            "null"
                        ],
                        "description" : "Identificación del documento asociado",
                        "maxLength" : 100
                    },
                    "detalleDocumento" : {
                        "type" : [
                            "string",
                            "null"
                        ],
                        "description" : "Descripción de documento asociado",
                        "maxLength" : 300
                    },
                    "medico" : {
                        "description" : "Médico",
                        "type" : [
                            "object",
                            "null"
                        ],
                        "properties" : {
                            "nombre" : {
                                "type" : "string",
                                "description" : "Nombre de médico que presta el Servicio",
                                "maxLength" : 100
                            },
                            "nit" : {
                                "type" : [
                                    "string",
                                    "null"
                                ],
                                "description" : "NIT de médico que presta el Servicio",
                                "pattern" : "^([0-9]{14}|[0-9]{9})$"
                            },
                            "docIdentificacion" : {
                                "type" : [
                                    "string",
                                    "null"
                                ],
                                "description" : "Documento de identificación de médico no domiciliados",
                                "maxLength" : 25,
                                "minLength" : 2
                            },
                            "tipoServicio" : {
                                "type" : "number",
                                "description" : "Código del Servicio realizado",
                                "minimum" : 1,
                                "maximum" : 6
                            }
                        },
                        "allOf" : [
                            {
                                "if" : {
                                    "properties" : {
                                        "nit" : {
                                            "type" : "null"
                                        }
                                    }
                                },
                                "then" : {
                                    "properties" : {
                                        "docIdentificacion" : {
                                            "type" : "string"
                                        }
                                    }
                                }
                            },
                            {
                                "if" : {
                                    "properties" : {
                                        "docIdentificacion" : {
                                            "type" : "null"
                                        }
                                    }
                                },
                                "then" : {
                                    "properties" : {
                                        "nit" : {
                                            "type" : "string"
                                        }
                                    }
                                }
                            }
                        ],
                        "additionalProperties" : false,
                        "required" : [
                            "nit",
                            "nombre",
                            "docIdentificacion",
                            "tipoServicio"
                        ]
                    }
                },
                "allOf" : [
                    {
                        "if" : {
                            "properties" : {
                                "codDocAsociado" : {
                                    "const" : 3
                                }
                            }
                        },
                        "then" : {
                            "properties" : {
                                "medico" : {
                                    "type" : "object"
                                },
                                "descDocumento" : {
                                    "type" : "null"
                                },
                                "detalleDocumento" : {
                                    "type" : "null"
                                }
                            }
                        },
                        "else" : {
                            "properties" : {
                                "descDocumento" : {
                                    "type" : "string"
                                },
                                "detalleDocumento" : {
                                    "type" : "string"
                                },
                                "medico" : {
                                    "type" : "null"
                                }
                            }
                        }
                    }
                ],
                "additionalProperties" : false,
                "required" : [
                    "codDocAsociado",
                    "descDocumento",
                    "detalleDocumento",
                    "medico"
                ]
            },
            "minItems" : 1,
            "maxItems" : 10
        },
        "ventaTercero" : {
            "description" : "Ventas por cuenta de terceros",
            "type" : [
                "object",
                "null"
            ],
            "properties" : {
                "nit" : {
                    "type" : "string",
                    "description" : "NIT por cuenta de Terceros",
                    "pattern" : "^([0-9]{14}|[0-9]{9})$"
                },
                "nombre" : {
                    "type" : "string",
                    "description" : "Nombre, denominación o razón social del Tercero",
                    "maxLength" : 200,
                    "minLength" : 3
                }
            },
            "additionalProperties" : false,
            "required" : [
                "nit",
                "nombre"
            ]
        },
        "cuerpoDocumento" : {
            "type" : "array",
            "description" : "Cuerpo del Documento",
            "items" : {
                "type" : "object",
                "properties" : {
                    "numItem" : {
                        "type" : "integer",
                        "description" : "N° de ítem",
                        "minimum" : 1,
                        "maximum" : 2000
                    },
                    "tipoItem" : {
                        "type" : "integer",
                        "description" : "Tipo de ítem",
                        "enum" : [
                            1,
                            2,
                            3,
                            4
                        ]
                    },
                    "numeroDocumento" : {
                        "description" : "Número de documento relacionado",
                        "type" : [
                            "string",
                            "null"
                        ],
                        "minLength" : 1,
                        "maxLength" : 36
                    },
                    "codigo" : {
                        "description" : "Código",
                        "type" : [
                            "string",
                            "null"
                        ],
                        "maxLength" : 25,
                        "minLength" : 1
                    },
                    "codTributo" : {
                        "description" : "Tributo sujeto a cálculo de IVA.",
                        "type" : [
                            "string",
                            "null"
                        ],
                        "enum" : [
                            null,
                            "A8",
                            "57",
                            "90",
                            "D4",
                            "D5",
                            "25",
                            "A6"
                        ],
                        "maxLength" : 2,
                        "minLength" : 2
                    },
                    "descripcion" : {
                        "type" : "string",
                        "description" : "Descripción",
                        "maxLength" : 1000
                    },
                    "cantidad" : {
                        "type" : "number",
                        "description" : "Cantidad",
                        "exclusiveMaximum" : 100000000000,
                        "exclusiveMinimum" : 0,
                        "multipleOf" : 0.00000001
                    },
                    "uniMedida" : {
                        "type" : "integer",
                        "description" : "Unidad de Medida",
                        "minimum" : 1,
                        "maximum" : 99
                    },
                    "precioUni" : {
                        "type" : "number",
                        "description" : "Precio Unitario",
                        "exclusiveMaximum" : 100000000000,
                        "minimum" : 0,
                        "multipleOf" : 0.00000001
                    },
                    "montoDescu" : {
                        "type" : "number",
                        "description" : "Descuento, Bonificación, Rebajas por ítem",
                        "minimum" : 0,
                        "exclusiveMaximum" : 100000000000,
                        "multipleOf" : 0.00000001
                    },
                    "ventaNoSuj" : {
                        "type" : "number",
                        "description" : "Ventas No Sujetas",
                        "minimum" : 0,
                        "exclusiveMaximum" : 100000000000,
                        "multipleOf" : 0.00000001
                    },
                    "ventaExenta" : {
                        "type" : "number",
                        "description" : "Ventas Exentas",
                        "minimum" : 0,
                        "exclusiveMaximum" : 100000000000,
                        "multipleOf" : 0.00000001
                    },
                    "ventaGravada" : {
                        "type" : "number",
                        "description" : "Ventas Gravadas",
                        "minimum" : 0,
                        "exclusiveMaximum" : 100000000000,
                        "multipleOf" : 0.00000001
                    },
                    "tributos" : {
                        "description" : "Código del Tributo",
                        "type" : [
                            "array",
                            "null"
                        ],
                        "items" : {
                            "type" : "string",
                            "maxLength" : 2,
                            "minLength" : 2
                        },
                        "minItems" : 1,
                        "uniqueItems" : true
                    },
                    "psv" : {
                        "type" : "number",
                        "description" : "Precio sugerido de venta",
                        "minimum" : 0,
                        "exclusiveMaximum" : 100000000000,
                        "multipleOf" : 0.00000001
                    },
                    "noGravado" : {
                        "type" : "number",
                        "description" : "Cargos / Abonos que no afectan la base imponible",
                        "exclusiveMaximum" : 100000000000,
                        "exclusiveMinimum" : -100000000000,
                        "multipleOf" : 0.00000001
                    }
                },
                "allOf" : [
                    {
                        "if" : {
                            "properties" : {
                                "ventaGravada" : {
                                    "maximum" : 0
                                }
                            }
                        },
                        "then" : {
                            "properties" : {
                                "tributos" : {
                                    "type" : "null"
                                }
                            }
                        },
                        "else" : {
                            "properties" : {
                                "tributos" : {
                                    "type" : "array",
                                    "minItems" : 1
                                }
                            }
                        }
                    },
                    {
                        "if" : {
                            "properties" : {
                                "tipoItem" : {
                                    "const" : 4
                                }
                            }
                        },
                        "then" : {
                            "properties" : {
                                "uniMedida" : {
                                    "const" : 99
                                },
                                "codTributo" : {
                                    "type" : "string"
                                },
                                "tributos" : {
                                    "type" : "array",
                                    "items" : {
                                        "const" : "20"
                                    }
                                }
                            }
                        },
                        "else" : {
                            "properties" : {
                                "codTributo" : {
                                    "type" : "null"
                                },
                                "tributos" : {
                                    "items" : {
                                        "enum" : [
                                            "20",
                                            "C3",
                                            "59",
                                            "71",
                                            "D1",
                                            "C5",
                                            "C6",
                                            "C7",
                                            "C8",
                                            "D5",
                                            "D4",
                                            "19",
                                            "28",
                                            "31",
                                            "32",
                                            "33",
                                            "34",
                                            "35",
                                            "36",
                                            "37",
                                            "38",
                                            "39",
                                            "42",
                                            "43",
                                            "44",
                                            "50",
                                            "51",
                                            "52",
                                            "53",
                                            "54",
                                            "55",
                                            "58",
                                            "77",
                                            "78",
                                            "79",
                                            "85",
                                            "86",
                                            "91",
                                            "92",
                                            "A1",
                                            "A5",
                                            "A7",
                                            "A9"
                                        ]
                                    }
                                }
                            }
                        }
                    }
                ],
                "additionalProperties" : false,
                "required" : [
                    "numItem",
                    "tipoItem",
                    "numeroDocumento",
                    "codigo",
                    "codTributo",
                    "descripcion",
                    "cantidad",
                    "uniMedida",
                    "precioUni",
                    "montoDescu",
                    "ventaNoSuj",
                    "ventaExenta",
                    "ventaGravada",
                    "tributos",
                    "psv",
                    "noGravado"
                ]
            },
            "minItems" : 1,
            "maxItems" : 2000
        },
        "resumen" : {
            "type" : "object",
            "description" : "Resumen",
            "properties" : {
                "totalNoSuj" : {
                    "type" : "number",
                    "description" : "Total de Operaciones no sujetas",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "totalExenta" : {
                    "type" : "number",
                    "description" : "Total de Operaciones Exentas",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "totalGravada" : {
                    "type" : "number",
                    "description" : "Total de Operaciones Gravadas",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "subTotalVentas" : {
                    "type" : "number",
                    "description" : "Suma de operaciones sin impuestos",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "descuNoSuj" : {
                    "type" : "number",
                    "description" : "Monto global de Descuento, Bonificación, Rebajas y otros a ventas no sujetas",
                    "exclusiveMaximum" : 100000000000,
                    "minimum" : 0,
                    "multipleOf" : 0.01
                },
                "descuExenta" : {
                    "type" : "number",
                    "description" : "Monto de Descuento, Bonificación, Rebajas y otros a ventas exentas",
                    "exclusiveMaximum" : 100000000000,
                    "minimum" : 0,
                    "multipleOf" : 0.01
                },
                "descuGravada" : {
                    "type" : "number",
                    "description" : "Monto de Descuento, Bonificación, Rebajas y otros a ventas gravadas",
                    "exclusiveMaximum" : 100000000000,
                    "minimum" : 0,
                    "multipleOf" : 0.01
                },
                "porcentajeDescuento" : {
                    "type" : "number",
                    "description" : "Porcentaje del monto global de Descuento, Bonificación, Rebajas y otros",
                    "maximum" : 100,
                    "minimum" : 0,
                    "multipleOf" : 0.01
                },
                "totalDescu" : {
                    "type" : "number",
                    "description" : "Total del monto de Descuento, Bonificación, Rebajas",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "tributos" : {
                    "type" : [
                        "array",
                        "null"
                    ],
                    "uniqueItems":true,
                    "description" : "Resumen de Tributos",
                    "items" : {
                        "type" : "object",
                        "properties" : {
                            "codigo" : {
                                "description" : "Resumen Código de Tributo",
                                "type" : "string",
                                "minLength" : 2,
                                "maxLength" : 2
                            },
                            "descripcion" : {
                                "description" : "Nombre del Tributo",
                                "type" : "string",
                                "minLength" : 2,
                                "maxLength" : 150
                            },
                            "valor" : {
                                "description" : "Valor del Tributo",
                                "type" : "number",
                                "minimum" : 0,
                                "exclusiveMaximum" : 100000000000,
                                "multipleOf" : 0.01
                            }
                        },
                        "additionalProperties" : false,
                        "required" : [
                            "codigo",
                            "descripcion",
                            "valor"
                        ]
                    }
                },
                "subTotal" : {
                    "type" : "number",
                    "description" : "Sub-Total",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "ivaPerci1" : {
                    "type" : "number",
                    "description" : "IVA Percibido",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "ivaRete1" : {
                    "type" : "number",
                    "description" : "IVA Retenido",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "reteRenta" : {
                    "type" : "number",
                    "description" : "Retención Renta",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "montoTotalOperacion" : {
                    "type" : "number",
                    "description" : "Monto Total de la Operación",
                    "exclusiveMinimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "totalNoGravado" : {
                    "type" : "number",
                    "description" : "Total Cargos/Abonos que no afectan la base imponible",
                    "exclusiveMaximum" : 100000000000,
                    "exclusiveMinimum" : -100000000000,
                    "multipleOf" : 0.01
                },
                "totalPagar" : {
                    "type" : "number",
                    "description" : "Total a Pagar",
                    "minimum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "totalLetras" : {
                    "type" : "string",
                    "description" : "Valor en Letras",
                    "maxLength" : 200
                },
                "saldoFavor" : {
                    "type" : "number",
                    "description" : "Saldo a Favor",
                    "maximum" : 0,
                    "exclusiveMaximum" : 100000000000,
                    "multipleOf" : 0.01
                },
                "condicionOperacion" : {
                    "type" : "number",
                    "description" : "Condición de la Operación",
                    "enum" : [
                        1,
                        2,
                        3
                    ]
                },
                "pagos" : {
                    "description" : "Pagos",
                    "type" : [
                        "array",
                        "null"
                    ],
                    "items" : {
                        "type" : "object",
                        "properties" : {
                            "codigo" : {
                                "type" : "string",
                                "description" : "Código de forma de pago",
                                "maxLength" : 2,
                                "pattern" : "^(0[1-9]||1[0-4]||99)$"
                            },
                            "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"
                                ],
                                "pattern" : "^0[1-3]$"
                            },
                            "periodo" : {
                                "description" : "Período de plazo",
                                "type" : [
                                    "number",
                                    "null"
                                ]
                            }
                        },
                        "additionalProperties" : false,
                        "required" : [
                            "codigo",
                            "montoPago",
                            "referencia",
                            "periodo",
                            "plazo"
                        ]
                    },
                    "minItems" : 1
                },
                "numPagoElectronico" : {
                    "description" : "Número de Pago Electrónico",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 100
                }
            },
            "allOf" : [
                {
                    "if" : {
                        "properties" : {
                            "condicionOperacion" : {
                                "enum" : [
                                    2
                                ]
                            }
                        }
                    },
                    "then" : {
                        "properties" : {
                            "pagos" : {
                                "items" : {
                                    "properties" : {
                                        "plazo" : {
                                            "type" : "string"
                                        },
                                        "periodo" : {
                                            "type" : "number"
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                {
                    "if" : {
                        "properties" : {
                            "totalGravada" : {
                                "maximum" : 0
                            }
                        }
                    },
                    "then" : {
                        "properties" : {
                            "ivaPerci1" : {
                                "maximum" : 0
                            },
                            "ivaRete1" : {
                                "maximum" : 0
                            }
                        }
                    }
                },
                {
                    "if" : {
                        "properties" : {
                            "totalPagar" : {
                                "minimum" : 0,
                                "maximum" : 0
                            }
                        }
                    },
                    "then" : {
                        "properties" : {
                            "condicionOperacion" : {
                                "const" : 1
                            }
                        }
                    }
                }
            ],
            "additionalProperties" : false,
            "required" : [
                "totalNoSuj",
                "totalExenta",
                "totalGravada",
                "subTotalVentas",
                "descuNoSuj",
                "descuExenta",
                "descuGravada",
                "porcentajeDescuento",
                "totalDescu",
                "tributos",
                "subTotal",
                "ivaPerci1",
                "ivaRete1",
                "reteRenta",
                "montoTotalOperacion",
                "totalNoGravado",
                "totalPagar",
                "totalLetras",
                "saldoFavor",
                "condicionOperacion",
                "pagos",
                "numPagoElectronico"
            ]
        },
        "extension" : {
            "type" : ["object","null"],
            "description" : "Extensión",
            "properties" : {
                "nombEntrega" : {
                    "description" : "Nombre del responsable que Genera el DTE",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 100,
                    "minLength" : 1
                },
                "docuEntrega" : {
                    "description" : "Documento de identificación de quien genera el DTE",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 25,
                    "minLength" : 1
                },
                "nombRecibe" : {
                    "description" : "Nombre del responsable de la operación por parte del receptor",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 100,
                    "minLength" : 1
                },
                "docuRecibe" : {
                    "description" : "Documento de identificación del responsable de la operación por parte del receptor",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 25,
                    "minLength" : 1
                },
                "observaciones" : {
                    "description" : "Observaciones",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 3000
                },
                "placaVehiculo" : {
                    "description" : "Placa de vehículo",
                    "type" : [
                        "string",
                        "null"
                    ],
                    "maxLength" : 10,
                    "minLength" : 2
                }
            },
            "additionalProperties" : false,
            "required" : [
                "nombEntrega",
                "docuEntrega",
                "nombRecibe",
                "docuRecibe",
                "observaciones",
                "placaVehiculo"
            ]
        },
        "apendice" : {
            "description" : "Apéndice",
            "type" : [
                "array",
                "null"
            ],
            "items" : {
                "type" : "object",
                "properties" : {
                    "campo" : {
                        "type" : "string",
                        "description" : "Nombre del campo",
                        "maxLength" : 25,
                        "minLength" : 2
                    },
                    "etiqueta" : {
                        "type" : "string",
                        "description" : "Descripción",
                        "maxLength" : 50,
                        "minLength" : 3
                    },
                    "valor" : {
                        "type" : "string",
                        "description" : "Valor/Dato",
                        "maxLength" : 150,
                        "minLength" : 1
                    }
                },
                "additionalProperties" : false,
                "required" : [
                    "campo",
                    "etiqueta",
                    "valor"
                ]
            },
            "minItems" : 1,
            "maxItems" : 10
        }
    },
    "additionalProperties" : false,
    "required" : [
        "identificacion",
        "documentoRelacionado",
        "emisor",
        "receptor",
        "otrosDocumentos",
        "ventaTercero",
        "resumen",
        "extension",
        "apendice"
    ]
}