M.O.A. - Declaración


Solicitud
using System.Net.Http;
using System.Text;
using Newtonsoft.Json;

// Deben cambiar los datos de "params" por los que correspondan. 
// Esta request de ejemplo incluye todos posibles valores para 
// llamar al metodo ConsultarDenunciasDetallada, puede que algun valor sea opcional.
var data = new Dictionary<string, object> {
    ["environment"] = "dev",
    ["method"] = "ConsultarDenunciasDetallada",
    ["wsid"] = "wconsdeclaracion",
    ["params"] = new Dictionary<string, object> {
        ["argWSAutenticacionEmpresa"] = new Dictionary<string, object> {
            ["Token"] = "string",
            ["Sign"] = "string",
            ["CuitEmpresaConectada"] = 1,
            ["TipoAgente"] = "string",
            ["Rol"] = "string"
        },
        ["inputDenunciaDetallada"] = new Dictionary<string, object> {
            ["CuitImportadorExportador"] = "string",
            ["CuitDespachante"] = "string",
            ["IdentificadorDeclaracion"] = "string",
            ["FechaDenunciaDesde"] = "YYYY-MM-DDThh:mm:ss",
            ["FechaDenunciaHasta"] = "YYYY-MM-DDThh:mm:ss",
            ["NumeroExpediente"] = "string",
            ["Subregimen"] = "string",
            ["CodigoAduana"] = "string",
            ["CodigoMotivo"] = "string"
        }
    }
};

// Creamos un cliente HTTP para llamar a la API
var requestClient = new HttpClient();
var requestUrl = "https://app.afipsdk.com/api/v1/afip/requests";

// Reemplazar con tu access_token obtenido de https://app.afipsdk.com
var accessToken = "TU_TOKEN_AQUI";
requestClient.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}"); 

// Realizamos la llamada a la API
var dataJSON = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
var requestResponse = await requestClient.PostAsync(requestUrl, dataJSON);

// En caso de error lo mostramos por consola
if (!requestResponse.IsSuccessStatusCode) {
    Console.WriteLine($"Error en la request: {requestResponse.StatusCode}");
    var errorResponse = JsonConvert.DeserializeObject(await requestResponse.Content.ReadAsStringAsync());
    Console.WriteLine(errorResponse);

    return;
}

// Obtenemos la respuesta
var requestResponseBody = await requestResponse.Content.ReadAsStringAsync();

// Convertimos la respuesta en un objeto
dynamic response = JsonConvert.DeserializeObject(requestResponseBody);

// Mostramos la respuesta por consola
Console.WriteLine(response);
Respuesta
{
    "ConsultarDenunciasDetalladaResult": {
        "Server": "string",
        "TimeStamp": "datetime",
        "Resultado": {
            "DenunciaDetallada": [
                {
                    "Declaracion": "string",
                    "FechaOficializacion": "datetime",
                    "NumeroDenuncia": "string",
                    "FechaDenuncia": "datetime",
                    "NumeroExpediente": "string",
                    "UbicacionExpediente": "string",
                    "Fallo": "string",
                    "MontoAbonado": "decimal",
                    "OcasionaPerjuicioFiscal": "string",
                    "NumeroOMESefia": "string",
                    "ObservacionesDenuncia": "string",
                    "ListaMotivosDenuncia": {
                        "MotivoDenunciaDetallada": [
                            {
                                "MotivoDenuncia": "string",
                                "ObservacionesMotivoDenuncia": "string"
                            }
                        ]
                    },
                    "MotivosAgrupados": "string"
                }
            ]
        },
        "Errores": {
            "ErrorEjecucion": [
                {
                    "Codigo": "string",
                    "Descripcion": "string"
                }
            ]
        }
    }
}