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:
- La API valida tu solicitud
- Si la solicitud es valida, la API crea tu solicitud en la base de datos y la marca como pendiente por procesar
- La API te regresa una respuesta con el
Status: 201
y en elbody
unApiRequest
con unId
asignado - Debes guardar este
Id
para posteriormente consultar elstatus
yresponse
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:
- Se crea la solicitud en la base de datos
- 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
.