Método para descargar el XML (DownloadDocumentXml)
Este método permite descargar el archivo XML de un documento utilizando el servicio GET DownloadDocumentXml.
Por medio de este método, se obtiene el archivo XML codificado en base 64 del documento consultado.
Para conectarse a esta funcionalidad será necesario que ingrese la URL de acuerdo con el ambiente a consumir:
https://developers.gosocket.net/api/v1/File/DownloadDocumentXmlhttps://developers-sbx.gosocket.net/api/v1/File/DownloadDocumentXml¿Cómo funciona el método DownloadDocumentXml?
Para realizar la petición, el método tiene los siguientes parámetros:
| DownloadDocumentXml (request) | |||
|---|---|---|---|
| Parámetro | Tipo | Descripción | Valores permitidos |
| globalDocumentId* | String | Identificación de documento en Gosocket. | UUID de 36 caracteres alfanuméricos xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| type | String | Tipo de xml a descargar | Ver tabla de Tipos de archivos a descargar |
*Requerido
| Tipos de Archivos a descargar | ||
|---|---|---|
| Type | Descripción | Países donde aplica |
| original | XML Fiscal (Tributario): XML que se envía a la Entidad Tributaria. Solo incluye los personalizados en los países que la Entidad los soporta dentro del XML. | AR, BO, CO, CR, DO, EC, PA, PE, PY, UY |
| default | XML de Gosocket: XML que se almacena en Inbox, incluye los campos personalizados | Todos |
| response | Respuesta Entidad Tributaria: Archivo con la respuesta de la Entidad Tributaria para el documento emitido. | Todos |
| smartsupply | XML de Smart Supply: XML que incluye los campos relacionados con la funcionalidad de SS. | Todos los países donde esté implementado SS |
| distribution | XML de Distribución: XML que se distribuye de forma obligatoria | CO |
| addenda | XML Addenda Comercial: XML con el nodo de Addenda | MX |
| integration | Archivo JSON de integración: Archivo con el request enviado a la API para la emisión del documento | Todos |
Ejemplo de petición
Los identificadores, ID fiscales y contenidos de estos ejemplos son ficticios; se incluyen solo para ilustrar el formato de las peticiones y respuestas.
GET https://developers-sbx.gosocket.net/api/v1/File/DownloadDocumentXml?globalDocumentId=aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa&type=original
Nota: Recuerde que antes de utilizar el método, debe realizar su autenticación dentro de la pestaña Authorization.
Para este método utilizamos la pestaña Params de Postman.
- Seleccione el tipo de método. En este caso, se debe seleccionar GET.
- Ingrese la URL del método.
- Ingrese los parámetros que se muestran en la tabla anterior con sus valores correspondientes.
- Presione Send.
Ejemplo de Respuesta para la descarga de XML Default (Gosocket)
{
"Name": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.xml",
"Description": "Xml Content for GlobalDocumentId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"Base64Content": "PD94bWwgdmVyc2lvbj0iMS4wIi...",
"Timestamp": "2023-09-20T16:25:46.7524651Z",
"Type": "xml"
}Puede convertir la respuesta del parámetro Base64Content cuyo resultado, para este ejemplo, es el siguiente (fragmento — incluye los campos personalizados dentro del nodo <Personalizados>):
<!-- … -->
<cac:InvoiceLine>
<cbc:ID>1</cbc:ID>
<cbc:Note>Cocina internacional, reposteria y cocteles. 200 Recetas.</cbc:Note>
<cbc:InvoicedQuantity unitCode="EA">1.000000</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="COP">1000000.00</cbc:LineExtensionAmount>
<cbc:FreeOfChargeIndicator>false</cbc:FreeOfChargeIndicator>
<cac:Delivery>
<cac:DeliveryLocation>
<cbc:ID schemeID="999" schemeName="EAN">613124312412</cbc:ID>
</cac:DeliveryLocation>
</cac:Delivery>
<cac:Item>
<cbc:Description>Articulo 1 Libro de cocina</cbc:Description>
<cac:SellersItemIdentification>
<cbc:ID>AOHV84-225</cbc:ID>
</cac:SellersItemIdentification>
<cac:StandardItemIdentification>
<cbc:ID schemeID="999" schemeName="EAN13">6543542313534</cbc:ID>
</cac:StandardItemIdentification>
</cac:Item>
<cac:Price>
<cbc:PriceAmount currencyID="COP">1000000.00</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="EA">1.000000</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
<Personalizados>
<DocPersonalizado dteID="">
<campoString name="QRCode">NumFac:=SETP990002796
FecFac:2023-09-20
HorFac:08:43:20-05:00
NitFac:900000000
DocAdq:800000000
ValFac:1000000.00
ValIva:0.00
ValOtroIm:
ValTolFac:1000000.00
CUFE:0123456789abcdef0123456789abcdef0123456789abcdef...
QRCode:https://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=0123456789abcdef...</campoString>
<campoString name="SERIE">SETP</campoString>
<campoString name="FOLIO">990002796</campoString>
<campoString name="FechaGeneracion">2023-09-20</campoString>
<campoString name="NoInterno">02633</campoString>
<campoString name="HoraGeneracion">16:25:46</campoString>
</DocPersonalizado>
</Personalizados>
Ejemplo de Respuesta para la descarga de XML distribution
{
"Name": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.xml",
"Description": "Xml Content for GlobalDocumentId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"Base64Content": "UEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3U1dsQ2JHSnRUblpaUjJ4MVdub3dhVlpXVWtkTVZHZHBUSG84UzFCRlJqQkRSMVpxWVVkYWJIS1JSMkR6...",
"Timestamp": "2023-09-20T16:25:46.7524651Z",
"Type": "xml"
}Puede convertir la respuesta del parámetro Base64Content cuyo resultado, para este ejemplo, es el siguiente (fragmento):
<?xml version="1.0" encoding="UTF-8"?>
<AttachedDocument xmlns="urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:sts="dian:gov:co:facturaelectronica:Structures-2-1"
xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ext:UBLExtensions/>
<cbc:UBLVersionID>UBL 2.1</cbc:UBLVersionID>
<cbc:CustomizationID>05</cbc:CustomizationID>
<cbc:ProfileID>DIAN 2.1: Factura Electrónica de Venta</cbc:ProfileID>
<cbc:ProfileExecutionID>2</cbc:ProfileExecutionID>
<cbc:ID>1695268803</cbc:ID>
<cbc:IssueDate>2023-09-26</cbc:IssueDate>
<cbc:IssueTime>22:17:49-05:00</cbc:IssueTime>
<cbc:DocumentType>Contenedor de Factura Electrónica</cbc:DocumentType>
<cbc:ParentDocumentID>SETP990002796</cbc:ParentDocumentID>
<cac:SenderParty>
<cac:PartyTaxScheme>
<cbc:RegistrationName>EMPRESA EJEMPLO</cbc:RegistrationName>
<cbc:CompanyID schemeAgencyID="195" schemeID="4" schemeName="31">900000000</cbc:CompanyID>
<cbc:TaxLevelCode listName="05">O-99</cbc:TaxLevelCode>
<cac:TaxScheme>
<cbc:ID>01</cbc:ID>
<cbc:Name>IVA</cbc:Name>
</cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:SenderParty>
<cac:ReceiverParty>
<cac:PartyTaxScheme>
<cbc:RegistrationName>CLIENTE EJEMPLO</cbc:RegistrationName>
<cbc:CompanyID schemeAgencyID="195" schemeID="5" schemeName="31">800000000</cbc:CompanyID>
<cbc:TaxLevelCode listName="05">O-13</cbc:TaxLevelCode>
<cac:TaxScheme>
<cbc:ID>01</cbc:ID>
<cbc:Name>IVA</cbc:Name>
</cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:ReceiverParty>
<cac:Attachment>
<cac:ExternalReference>
<cbc:MimeCode>text/xml</cbc:MimeCode>
<cbc:EncodingCode>UTF-8</cbc:EncodingCode>
<cbc:Description><![CDATA[<?xml version="1.0" encoding="utf-8"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" ...]]></cbc:Description>
</cac:ExternalReference>
</cac:Attachment>
<cac:ParentDocumentLineReference>
<cbc:LineID>1</cbc:LineID>
<!-- … -->
Ejemplo de Respuesta para la descarga de XML original (XML de la Entidad Tributaria)
{
"Name": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.xml",
"Description": "Xml Content for GlobalDocumentId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"Base64Content": "PD94bWwgdmVyc2lvbj0iMS4wIi...",
"Timestamp": "2023-09-20T16:25:46.7524651Z",
"Type": "xml"
}Puede convertir la respuesta del parámetro Base64Content cuyo resultado, para este ejemplo, es el siguiente (fragmento):
<?xml version="1.0" encoding="UTF-8"?>
<AttachedDocument xmlns="urn:oasis:names:specification:ubl:schema:xsd:AttachedDocument-2"
xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
xmlns:ext="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2"
xmlns:sts="dian:gov:co:facturaelectronica:Structures-2-1"
xmlns:xades="http://uri.etsi.org/01903/v1.3.2#"
xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ext:UBLExtensions/>
<cbc:UBLVersionID>UBL 2.1</cbc:UBLVersionID>
<cbc:CustomizationID>05</cbc:CustomizationID>
<cbc:ProfileID>DIAN 2.1: Factura Electrónica de Venta</cbc:ProfileID>
<cbc:ProfileExecutionID>2</cbc:ProfileExecutionID>
<cbc:ID>1695268803</cbc:ID>
<cbc:IssueDate>2023-09-26</cbc:IssueDate>
<cbc:IssueTime>22:17:49-05:00</cbc:IssueTime>
<cbc:DocumentType>Contenedor de Factura Electrónica</cbc:DocumentType>
<cbc:ParentDocumentID>SETP990002796</cbc:ParentDocumentID>
<cac:SenderParty>
<cac:PartyTaxScheme>
<cbc:RegistrationName>EMPRESA EJEMPLO</cbc:RegistrationName>
<cbc:CompanyID schemeAgencyID="195" schemeID="4" schemeName="31">900000000</cbc:CompanyID>
<cbc:TaxLevelCode listName="05">O-99</cbc:TaxLevelCode>
<cac:TaxScheme>
<cbc:ID>01</cbc:ID>
<cbc:Name>IVA</cbc:Name>
</cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:SenderParty>
<cac:ReceiverParty>
<cac:PartyTaxScheme>
<cbc:RegistrationName>CLIENTE EJEMPLO</cbc:RegistrationName>
<cbc:CompanyID schemeAgencyID="195" schemeID="5" schemeName="31">800000000</cbc:CompanyID>
<cbc:TaxLevelCode listName="05">O-13</cbc:TaxLevelCode>
<cac:TaxScheme>
<cbc:ID>01</cbc:ID>
<cbc:Name>IVA</cbc:Name>
</cac:TaxScheme>
</cac:PartyTaxScheme>
</cac:ReceiverParty>
<cac:Attachment>
<cac:ExternalReference>
<cbc:MimeCode>text/xml</cbc:MimeCode>
<cbc:EncodingCode>UTF-8</cbc:EncodingCode>
<cbc:Description><![CDATA[<?xml version="1.0" encoding="utf-8"?><Invoice xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" ...]]></cbc:Description>
</cac:ExternalReference>
</cac:Attachment>
<!-- … -->
Nota: A diferencia de los otros tipos de XML, no contiene campos personalizados.
Ejemplo de Respuesta para la descarga de XML Smart Supply
{
"Name": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa.xml",
"Description": "Xml Content for GlobalDocumentId aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"Base64Content": "PD94bWwgdmVyc2lvbj0iMS4wIi...",
"Timestamp": "2023-09-20T16:25:46.7524651Z",
"Type": "xml"
}Puede convertir la respuesta del parámetro Base64Content cuyo resultado, para este ejemplo, es el siguiente (fragmento — incluye los campos de Smart Supply como IDESTADO, ESTADO, ValorOC y la referencia de orden de compra):
<!-- … -->
<cac:InvoiceLine>
<!-- … -->
<cac:Price>
<cbc:PriceAmount currencyID="COP">1000000.00</cbc:PriceAmount>
<cbc:BaseQuantity unitCode="EA">1.000000</cbc:BaseQuantity>
</cac:Price>
</cac:InvoiceLine>
<Personalizados>
<DocPersonalizado dteID="">
<campoString name="QRCode">NumFac:=SETP990002796
FecFac:2023-09-20
HorFac:08:43:20-05:00
NitFac:900000000
DocAdq:800000000
ValFac:1000000.00
ValIva:0.00
ValOtroIm:
ValTolFac:1000000.00
CUFE:0123456789abcdef0123456789abcdef0123456789abcdef...
QRCode:https://catalogo-vpfe-hab.dian.gov.co/document/searchqr?documentkey=0123456789abcdef...</campoString>
<campoString name="SERIE">SETP</campoString>
<campoString name="FOLIO">990002796</campoString>
<campoString name="FechaGeneracion">2023-09-20</campoString>
<campoString name="NoInterno">02633</campoString>
<campoString name="HoraGeneracion">16:25:46</campoString>
<IDESTADO>3</IDESTADO>
<ESTADO>ACEPTADO</ESTADO>
<ValorOC>1000000</ValorOC>
</DocPersonalizado>
</Personalizados>
<cac:OrderReference>
<cbc:ID>9011</cbc:ID>
</cac:OrderReference>
Parámetros de repuesta
| DownloadDocumentXml (response) | |||
|---|---|---|---|
| Parámetro | Tipo | Descripción | Valores permitidos |
| Name | String | Nombre del archivo XML descargado | globalDocumentId.xml |
| Description | String | Descripción del evento realizado. | Xml Content for GlobalDocumentId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| Base64Content | String | Archivo XML codificado en base 64 | |
| TimeStamp | String | Fecha y hora de creación del documento | aaaa-mm-ddThh:mm:ss |
| Type | String | Tipo de archivo | “xml” |
Características del método
-
Cuando no existe el Id del documento (globalDocumentId), el sistema responde un mensaje de error
404 Not Found:{"Message": "Document with GlobalDocumentId (00000000-0000-0000-0000-000000000000) does not exist"} -
Se puede descargar el archivo tantas veces como sea necesario.
-
Cuando no se especifica el parámetro type o se pone un valor fuera de la lista, la API responde con el XML tipo default.
-
El XML de distribución tiene doble codificación, por lo que será necesario decodificarlo 2 veces.