Enviar Solicitud - AndresRamos/ARSoftware.Contpaqi.Comercial.Api GitHub Wiki

Para crear una solicitud en la API debes enviar tu solicitud a /api/Requests.

El body de la solicitud debe ser un ContpaqiRequest.

Por ejemplo:

Si quieres mandar a timbrar un documento debes enviar un ContpaqiRequest de tipo TimbrarDocumentoRequest:

{
    "$type": "TimbrarDocumentoRequest",
    "model": {
        "llaveDocumento": {
            "conceptoCodigo": "400",
            "serie": "FE",
            "folio": 123
        },
        "contrasenaCertificado": "12345678a"
    },
    "options": {
        "nombreArchivo": "",
        "contenidoArchivo": ""
    }
}

Si quieres mandar a buscar el catalogo de clientes debes enviar un ContpaqiRequest de tipo BuscarClientesRequest:

{
    "$type": "BuscarClientesRequest",
    "model": {},
    "options": {}
}

Puedes encontrar el catalogo de todas las solicitudes disponibles en docs.

Ahi podras encontrar:

  • Ejemplos de las solicitudes en JSON
  • La coleccion de Postman con todas las solicitudes definidas
  • El Open API definition

Cuando envias una solicitud a la API:

  1. La API valida tu solicitud
  2. Si la solicitud es valida, la API crea tu solicitud en la base de datos y la marca como pendiente por procesar
  3. La API te regresa una respuesta con el Status: 201 y en el body un ApiRequest con un Id asignado
  4. Debes guardar este Id para posteriormente consultar el status y response en /api/Requests/{id}

Por ejemplo, si mandas una solicitud de tipo BuscarClientesRequest la API te regresa la siguiente respuesta:

{
    "id": "d2529a51-7759-4e87-e042-08db544117bc",
    "empresaRfc": "URE180429TM6",
    "dateCreated": "2023-05-14T01:04:35.0705637-05:00",
    "contpaqiRequestType": "BuscarClientesRequest",
    "contpaqiRequest": {
        "$type": "BuscarClientesRequest",
        "model": {
            "id": null,
            "codigo": null,
            "sqlQuery": null
        },
        "options": {
            "cargarDatosExtra": false
        }
    },
    "status": "Pending",
    "response": null
}

La respuesta tiene un id con el valor d2529a51-7759-4e87-e042-08db544117bc, un status con el valor Pending, y un response con el valor null. Hasta aqui tu solicitud ah sido recibida exitosamente pero todavia no ah sido procesada.

La API funciona en dos pasos:

  1. Se crea la solicitud en la base de datos
  2. El Sincronizador procesa la solicitud en el sistema CONTPAQi y envia el resultado de regreso a la API

Es por eso que debes guardar el id para posteriormente consultar el status y response de la solicitud.

Para consultar el estatus de la solicitud debes enviar un Get a /api/Requests/{id}.

Por ejemplo, si consultamos la solicitud en /api/Requests/d2529a51-7759-4e87-e042-08db544117bc y la solicitud ya fue procesada, la respuesta seria:

{
    "id": "d2529a51-7759-4e87-e042-08db544117bc",
    "empresaRfc": "URE180429TM6",
    "dateCreated": "2023-05-14T01:04:35.0705637-05:00",
    "contpaqiRequestType": "BuscarClientesRequest",
    "contpaqiRequest": {
        "$type": "BuscarClientesRequest",
        "model": {
            "id": null,
            "codigo": null,
            "sqlQuery": null
        },
        "options": {
            "cargarDatosExtra": false
        }
    },
    "status": "Processed",
    "response": {
        "id": "d2529a51-7759-4e87-e042-08db544117bc",
        "dateCreated": "2023-05-14T01:06:05.2789515-05:00",
        "isSuccess": true,
        "contpaqiResponseType": "BuscarClientesResponse",
        "contpaqiResponse": {
            "$type": "BuscarClientesResponse",
            "model": {
                "numeroRegistros": 2,
                "clientes": [
                    {
                        "tipo": "Cliente",
                        "codigo": "CTE001",
                        "razonSocial": "CLIENTE 1",
                        "rfc": "XAXX010101000",
                        "usoCfdi": "G03",
                        "regimenFiscal": "616",
                        "direccionFiscal": {
                            "calle": "CALLE 33-B # 536 INT A X 62-A Y AV. REFORMA",
                            "numeroExterior": "1",
                            "numeroInterior": "",
                            "colonia": "El Pedregal",
                            "ciudad": "Mérida",
                            "estado": "Yucatán",
                            "codigoPostal": "97070",
                            "pais": "México"
                        },
                        "datosExtra": {}
                    },
                    {
                        "tipo": "Cliente",
                        "codigo": "CTE002",
                        "razonSocial": "PUBLICO GENERAL",
                        "rfc": "XAXX010101000",
                        "usoCfdi": null,
                        "regimenFiscal": "626",
                        "direccionFiscal": {
                            "calle": "CALLE 33-B # 536",
                            "numeroExterior": "1",
                            "numeroInterior": "",
                            "colonia": "El Pedregal",
                            "ciudad": "Mérida",
                            "estado": "Yucatán",
                            "codigoPostal": "97070",
                            "pais": "México"
                        },
                        "datosExtra": {}
                    }
                ]
            }
        },
        "errorMessage": "",
        "executionTime": 275
    }
}

Como puedes ver, el status es Processed lo cual significa que la solicitud ya fue procesada. Y el response ya tiene un ApiResponse asignado con un contpaqiResponse de tipo BuscarClientesResponse.

Si la solicitud fue procesada pero ocurrio algun tipo de error, la propiedad isSuccess sera false y el mensaje de error lo encontraras en la propiedad errorMessage.