Consultar estado y XML
# Consultar el estado de un documento (use el id devuelto al emitir).curl -s "https://tuempresa.gravitastec.com/api/v1/documents/$DOCUMENT_ID" \ -H "Authorization: Bearer $TOKEN"// Consultar el estado de un documento.using System.Net.Http.Headers;using System.Net.Http.Json;using System.Text.Json;
var api = new HttpClient { BaseAddress = new Uri("https://tuempresa.gravitastec.com/api/v1/") };var form = new FormUrlEncodedContent(new Dictionary<string, string>{ ["grant_type"] = "client_credentials", ["client_id"] = "YOUR_CLIENT_ID", ["client_secret"] = Environment.GetEnvironmentVariable("GRAVITAS_CLIENT_SECRET") ?? "YOUR_CLIENT_SECRET",});var tokenResponse = await api.PostAsync("oauth/token", form);tokenResponse.EnsureSuccessStatusCode();var token = JsonDocument.Parse(await tokenResponse.Content.ReadAsStringAsync()).RootElement.GetProperty("access_token").GetString();api.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var documentId = args[0]; // id devuelto al emitirvar document = await api.GetFromJsonAsync<JsonElement>($"documents/{documentId}");Console.WriteLine(document.GetProperty("status"));// Consultar el estado de un documento. Node 20+.const baseUrl = 'https://tuempresa.gravitastec.com/api/v1';const tokenResponse = await fetch(`${baseUrl}/oauth/token`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ grant_type: 'client_credentials', client_id: 'YOUR_CLIENT_ID', client_secret: process.env.GRAVITAS_CLIENT_SECRET ?? 'YOUR_CLIENT_SECRET', }),});const { access_token: token } = await tokenResponse.json();const auth = { Authorization: `Bearer ${token}` };
const documentId = process.argv[2]; // id devuelto al emitirconst document = await (await fetch(`${baseUrl}/documents/${documentId}`, { headers: auth })).json();console.log(document.status);El detalle incluye el e-NCF, el ambiente, el estado ante la DGII, el TrackId, los mensajes de la DGII y el estado de entrega al comprador.
XML firmado
Sección titulada «XML firmado»# Descargar el XML firmado exactamente como se envió a la DGII.curl -s "https://tuempresa.gravitastec.com/api/v1/documents/$DOCUMENT_ID/xml" \ -H "Authorization: Bearer $TOKEN" \ -o documento.xml// Descargar el XML firmado exactamente como se envió a la DGII.using System.Net.Http.Headers;using System.Net.Http.Json;using System.Text.Json;
var api = new HttpClient { BaseAddress = new Uri("https://tuempresa.gravitastec.com/api/v1/") };var form = new FormUrlEncodedContent(new Dictionary<string, string>{ ["grant_type"] = "client_credentials", ["client_id"] = "YOUR_CLIENT_ID", ["client_secret"] = Environment.GetEnvironmentVariable("GRAVITAS_CLIENT_SECRET") ?? "YOUR_CLIENT_SECRET",});var tokenResponse = await api.PostAsync("oauth/token", form);tokenResponse.EnsureSuccessStatusCode();var token = JsonDocument.Parse(await tokenResponse.Content.ReadAsStringAsync()).RootElement.GetProperty("access_token").GetString();api.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var documentId = args[0];var bytes = await api.GetByteArrayAsync($"documents/{documentId}/xml");await File.WriteAllBytesAsync("documento.xml", bytes);// Descargar el XML firmado exactamente como se envió a la DGII. Node 20+.const baseUrl = 'https://tuempresa.gravitastec.com/api/v1';const tokenResponse = await fetch(`${baseUrl}/oauth/token`, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ grant_type: 'client_credentials', client_id: 'YOUR_CLIENT_ID', client_secret: process.env.GRAVITAS_CLIENT_SECRET ?? 'YOUR_CLIENT_SECRET', }),});const { access_token: token } = await tokenResponse.json();const auth = { Authorization: `Bearer ${token}` };
import { writeFile } from 'node:fs/promises';const documentId = process.argv[2];const xml = Buffer.from(await (await fetch(`${baseUrl}/documents/${documentId}/xml`, { headers: auth })).arrayBuffer());await writeFile('documento.xml', xml);El XML que descargas es byte por byte el que se envió a la DGII; puedes verificar su firma.
Otras descargas
Sección titulada «Otras descargas»GET /documents/{documentId}/printed: representación impresa en PDF con QR.GET /documents/{documentId}/exchanges: cada intercambio con la DGII y con el receptor, con la respuesta tal como llegó.