Documentación técnica del Manual del API Genérica de eFactory ERP v1.0 (Versión 18.02.10)
Información General del API Genérica de eFactory
El API Genérica de eFactory provee un conjunto limitado de servicios web de propósito general, que permiten ejecutar operaciones genérales de base de datos, principalmente seleccionar, insertar, actualizar, o eliminar registros, todo esto bajo ciertas restricciones.
Para utilizar el API Genérica de eFactory, es necesario primero configurar el API Key, que se debe presentar junto con los parámetros de las funciones del API.
Ayudas online de eFactory Software ERP/CRM en la nube:
https://efactoryerp.com/ayudas-manuales-online-software-efactory-erp-crm-en-la-nube.html
Modulos de las Soluciones eFactory:
Modulo de Obras y Proyectos:
https://efactoryerp.com/soluciones/software-gestion-obras-proyectos-erp-crm.html
Modulo de Contabilidad:
https://efactoryerp.com/soluciones/software-contabilidad-erp-crm.html
Modulo de Nomina y RRHH:
https://efactoryerp.com/soluciones/software-rrhh-nomina-erp-crm.html
Modulo de CRM:
https://efactoryerp.com/soluciones/software-crm.html
Modulo de Ventas:
https://efactoryerp.com/soluciones/software-ventas-erp-crm.html
Modulo de Compras:
https://efactoryerp.com/soluciones/software-compras-erp-crm.html
Modulo de Inventarios:
https://efactoryerp.com/soluciones/software-control-de-inventarios-erp-crm.html
Modulo de Ventas:
https://efactoryerp.com/soluciones/software-punto-de-ventas-erp-crm.html
Modulo de Tesoreria:
https://efactoryerp.com/soluciones/software-tesoreria-erp-crm.html
Modulo de Produccion:
https://efactoryerp.com/soluciones/software-control-de-produccion-erp-crm.html
Modulo de Costos y Gastos de Importaciones:
https://efactoryerp.com/soluciones/software-importaciones-erp-crm.html
Soluciones Moviles:
https://efactoryerp.com/soluciones/software-para-moviles-erp-crm.html
Modulo de Inmobiliarios:
https://efactoryerp.com/soluciones/software-inmobiliario-erp-crm.html
SoftDoit (Buscador/Comparador de Software):
https://www.softwaredoit.com/mx/factory-soft-venezuela-c.a./factory-soft-venezuela-c.a..html
3. Factory Soft 3
https://efactoryerp.com
Contenido
Historial de Cambios......................................................................................................................2
Información General del API Genérica de eFactory ..........................................................................4
Procedimiento para Configurar el API Key....................................................................................4
Funcionalidad Expuesta..................................................................................................................5
Uso del API General de eFactory.....................................................................................................6
Método: seleccionar...................................................................................................................6
Ejemplo con resultado=json ....................................................................................................6
Ejemplo con resultado=json2 ..................................................................................................7
Ejemplo con resultado=xml.....................................................................................................7
Limitaciones:..........................................................................................................................8
Método: actualizar.....................................................................................................................8
Método: insertar........................................................................................................................8
Método:eliminar.......................................................................................................................9
ConsideracionesAdicionales.......................................................................................................9
Servidor no Configurado .........................................................................................................9
Empresa no Configurada.......................................................................................................10
Operaciones no Permitidas ...................................................................................................10
4. Factory Soft 4
https://efactoryerp.com
Información General del API Genérica de eFactory
El API Genérica de eFactory provee un conjuntolimitado de servicios web de propósito general,que
permiten ejecutar operaciones genérales de base de datos, principalmente seleccionar, insertar,
actualizar, o eliminar registros, todo esto bajo ciertas restricciones.
Para utilizar el API Genérica de eFactory, es necesario primero configurar el API Key, que se debe
presentar junto con los parámetros de las funciones del API.
Procedimiento para Configurar el API Key
El API de eFactory requiere configurar en cada empresa, mediante opciones del sistema, un API Key
privada y un código de usuario con permisos de acceso a la empresa.
1. Ingresar a uno de los sistemas de eFactory donde pueda acceder al formulario de Opciones,
en el módulo de Sistemas: Administrativo, Nómina, Contabilidad, Project, MP…
2. En la pantallade Ingreso,seleccionarlaempresaparala cual se deseaconfigurarel APIKey,e
ingresar en ella.
3. Abrir el formulario de Opciones (Sistemas >> Operaciones >> Opciones). Este mostrará las
opciones y valores configurados para la empresa actual.
4. Seleccionar la empresa donde se desea configurar el API Key.
5. Buscar la Propiedad“APIKEYAPI –APIKeyparaaccesoal APIde eFactory”,yasignarle unvalor
de al menos20 caracteres.Debenserletras,números,ocaracteresimprimibles(nose permite
ningún tipo de carácter de espacio o de control).
6. Buscar la Propiedad“USUBDAPI – Usuario de Base de Datos del API de eFactory”,y asignarle
un código de usuario de base de datos válido, que tenga acceso a la base de datos de la
empresa actual.
7. Buscar la Propiedad“CLABDAPI –Clave parael usuariode Base de Datos del APIde eFactory”,
y asignarle la clave del usuario de base de datos definido en la propiedad “USUBDAPI”.
Los tres valores deben permanecer privados: el usuario y clave de base de datos solo deben ser
conocidospor personal de sistemasque requierenconfigurar el API,yadicionalmenteel ApiKeydebe
ser conocido por quienes accederán al API. En particular, al consumir el API Genérica de eFactory,el
API Key debe permanecer oculto de terceros; esto se puede lograr accediendo con el API Key
únicamente desde código de servidor.
5. Factory Soft 5
https://efactoryerp.com
Funcionalidad Expuesta
El API Genérica de eFactory permite ejecutar las siguientes operaciones:
Operación Descripción Observaciones
Seleccionar Permite obtener uno o más conjuntos
de datos (tablas)
El número de tablas, registros, y campos devuelto
por las operaciones de selección es limitado, tanto
en número como en tamaño en bytes. Otras
operaciones solo sepermiten en tablas temporales.
Actualizar Permite ejecutar sentencias de
actualización (UPDATE)
Otras operaciones solo se permiten en tablas
temporales.
Insertar Permite ejecutar sentencias de
inserción (INSERT)
Otras operaciones solo se permiten en tablas
temporales.
Eliminar Permite ejecutar sentencias de
eliminación (DELETE)
Otras operaciones solo se permiten en tablas
temporales.
6. Factory Soft 6
https://efactoryerp.com
Uso del API General de eFactory
Para usar el API General de eFactory en una empresa, debe tener:
Un API Key configurado en la empresa.
Un código de usuario válido y activo con acceso a la empresa.
El código de la empresa.
Toda conexiónconel APIdebe serrealizadaatravésde SSL para evitarexponeratercerostantoel API
Key como la información enviada y recibida por el API.
Método: seleccionar
Sintaxis:
GET https://host-efactory/api/generica/seleccionar?consulta=[CONSULTA]&respuesta=[json|json2|xml]
Content-Type: application/json; charset=utf-8
Custom-Header: apikey=[API-KEY]
Custom-Header: usuario=[CÓDIGO-DE-USUARIO]
Custom-Header: empresa=[CÓDIGO-DE-EMPRESA]
Parámetros:
consulta: Debe contener una consulta SQL que seleccione una o más tablas de datos. Las
sentenciasINSERT,DELETE,o UPDATE solose permitensobre tablastemporalescreadasenla
misma consulta. No se permiten sentencias que cambien el contexto de la base de datos, se
conectena otras basesde datos,alterenlaestructura de tablas no temporales,omodifiquen
de algún modo la configuración de seguridad.
resultado: debe tener uno de los tres valores “json”, “json2” o “xml”.
Respuesta:
Retorna un objeto JSON que contiene las tablas seleccionadas, con sus registros y campos.
Ejemplo con resultado=json
Si “data”esel objeto JavaScriptgeneradoapartirdel JSON devuelto: Paraaccederal primercampode
la primerafilade laprimeratabla usar “data.laTablas[0].laFilas[0][0]”;losnombresde loscampos
de la primera tabla se obtienen mediante “data.laTablas[0].laFilas”. Estructura:
{laTablas : [
{laCampos: ["campo_1", "campo_2", … "campo_M"],
laTipos: ["tipo_1", "tipo_2", … "tipo_M"],
laFilas: [
[valor, valor, … valor],
[valor, valor, … valor],
…
[valor, valor, … valor]
]
},
{laCampos: ["campo_1", "campo_2", … "campo_N"],
laTipos: ["tipo_1", "tipo_2", … "tipo_M"],
laFilas: [
[valor, valor, … valor],
[valor, valor, … valor],
…
[valor, valor, … valor]
]
}]
}
7. Factory Soft 7
https://efactoryerp.com
Ejemplo con resultado=json2
Si “data” es el objeto JavaScript generado a partir del JSON devuelto: Para acceder al primer campo
“campo_1” de la primera fila en la primera tabla usar “data.laTablas[0].laFilas[0].campo_1”.
Estructura:
{laTablas : [
[
{"campo_1":valor, "campo_2":valor, … "campo_M":valor},
{"campo_1":valor, "campo_2":valor, … "campo_M":valor},
…
{"campo_1":valor, "campo_2":valor, … "campo_M":valor}
],
[
{"campo_1":valor, "campo_2":valor, … "campo_N":valor},
{"campo_1":valor, "campo_2":valor, … "campo_N":valor},
…
{"campo_1":valor, "campo_2":valor, … "campo_N":valor}
]
]}
Ejemplo con resultado=xml
Si “data” es el objeto XMLDocument a partir del JSON devuelto: Para acceder al primer campo
“campo_1” de la primera fila en la primera tabla usar “data.querySelector('tablas>tabla:nth-
child(1)>fila:nth-child(1)>campo_1').textContent”. Estructura:
<?xml version="1.0" encoding="UTF-8"?>
<tablas>
<tabla>
<fila>
<campo_1>valor</campo_1>
<campo_2>valor</campo_2>
…
<campo_M>valor</campo_M>
</fila>
<fila>
<campo_1>valor</campo_1>
<campo_2>valor</campo_2>
…
<campo_M>valor</campo_M>
</fila>
…
<fila>
<campo_1>valor</campo_1>
<campo_2>valor</campo_2>
…
<campo_M>valor</campo_M>
</fila>
</tabla>
<tabla>
<fila>
<campo_1>valor</campo_1>
<campo_2>valor</campo_2>
…
<campo_N>valor</campo_N>
</fila>
<fila>
<campo_1>valor</campo_1>
<campo_2>valor</campo_2>
…
<campo_N>valor</campo_N>
</fila>
…
<fila>
<campo_1>valor</campo_1>
<campo_2>valor</campo_2>
…
<campo_N>valor</campo_N>
8. Factory Soft 8
https://efactoryerp.com
</fila>
</tabla>
</tablas>
Limitaciones
El métodoSeleccionar puede devolverhastaun máximode 5 tablas de resultados,cadauna de ellas
con un máximo de 50 columnas de datos, y con un tamaño total de 10MB. Se recomienda que al
seleccionar datos de tipo cadena se eliminen los espacios extra (caracteres en blanco a la derecha)
mediante la función SQL RTRIM().
Método: actualizar
Sintaxis:
POST https://host-efactory/api/generica/actualizar
Content-Type: application/json; charset=utf-8
Custom-Header: apikey=[API-KEY]
Custom-Header: usuario=[CÓDIGO-DE-USUARIO]
Custom-Header: empresa=[CÓDIGO-DE-EMPRESA]
Body: consulta=[CONSULTA]
Parámetros:
consulta: Debe contener una consulta SQL que actualice registros de una o más tablas de
datos.Las sentenciasINSERToDELETE solose permitensobretablastemporalescreadasenla
misma consulta. No se permiten sentencias que cambien el contexto de la base de datos, se
conectena otras basesde datos,alterenlaestructura de tablas no temporales,omodifiquen
de algún modo la configuración de seguridad.
Respuesta:
RetornaunobjetoJSON conunapropiedadqueindicael númerodefilasafectadasporlaactualización.
Estructura:
{lnFilasAfectadas : valor}
Método: insertar
Sintaxis:
POST https://host-efactory/api/generica/insertar
Content-Type: application/json; charset=utf-8
Custom-Header: apikey=[API-KEY]
Custom-Header: usuario=[CÓDIGO-DE-USUARIO]
Custom-Header: empresa=[CÓDIGO-DE-EMPRESA]
Body: consulta=[CONSULTA]
Parámetros:
consulta: Debe contener una consulta SQL que inserte registros una tabla de datos. Las
sentencias UPDATE o DELETE solo se permitensobre tablas temporales creadas en la misma
consulta.Nose permitensentenciasque cambienelcontextode labase de datos,se conecten
9. Factory Soft 9
https://efactoryerp.com
a otras basesde datos, alterenla estructurade tablas no temporales,omodifiquende algún
modo la configuración de seguridad.
Respuesta:
Retorna un objeto JSON con una propiedad que indica el número de filas insertadas.
Estructura:
{lnFilasAfectadas : valor}
Método: eliminar
Sintaxis:
POST https://host-efactory/api/generica/eliminar
Content-Type: application/json; charset=utf-8
Custom-Header: apikey=[API-KEY]
Custom-Header: usuario=[CÓDIGO-DE-USUARIO]
Custom-Header: empresa=[CÓDIGO-DE-EMPRESA]
Body: consulta=[CONSULTA]
Parámetros:
consulta: Debe contener una consulta SQL que elimine registros una tabla de datos. Las
sentencias UPDATE o INSERT solo se permiten sobre tablas temporales creadas en la misma
consulta.Nose permitensentenciasque cambienelcontextode labase de datos,se conecten
a otras basesde datos, alterenla estructurade tablas no temporales, omodifiquende algún
modo la configuración de seguridad.
Respuesta:
Retorna un objeto JSON con una propiedad que indica el número de filas eliminadas.
Estructura:
{lnFilasAfectadas : valor}
Consideraciones Adicionales
En caso de que no sea posible ejecutar exitosamente la llamada al API, la respuesta de la misma
contendráinformaciónque indiquelarazóndel error.Enespecial,podráreconocerse si lallamadafue
exitosa o no al inspeccionar el estatus de la respuesta.
Servidor no Configurado
Si el servidornoestáconfiguradoparausarel APIGenéricade eFactory,devolveráunode lossiguientes
mensajes de error:
400 – Bad Request
404 – Not Found
501 – Not Implemented
10. Factory Soft 10
https://efactoryerp.com
En cualquier caso, es necesario adecuar la configuración del servidor antes de continuar haciendo
llamadas al API.
Empresa no Configurada
Si el servidorestáconfigurado,peronose poseenpermisosparaaccederal APIolaempresade destino
no está correctamente configurada, las llamadas al API devolverán el siguiente mensaje de error:
401 – Unautorized:típicamente significaque no se suministróunusuario,empresa,oApiKey
válida
Operaciones no Permitidas
Esto puede ocurrir si el servidor y la empresa están correctamente configurados,y se cuenta con los
permisosde accesoapropiados,perose intentaejecutarunaoperaciónnopermitida.Eneste caso,las
llamadas al API devolverán uno de los siguientes mensajes de error:
403 – Forbiden:típicamente significaque estáintentandoejecutarunaoperaciónnoadmitida.
405 – Method Not Allowed: está intentando ejecutar el servicio con un verbo no admitido,
como al ejecutar el servicio Eliminar mediante el método PUT.
413 – PayloadToLarge: ocurre cuandolosparámetros ocabeceras enviadosal servicioesmuy
largo. El tamaño máximo permitido es de aproximadamente 1MB, pero este puede ser
ampliadooreducidoenel futuro. Se recomiendaque losparámetrosenviadosnoexcedande
5KB.
Tambiénesposible querecibaotroscódigosde error,quedependeránde laconfiguracióndelservidor
y/o proxis; por ejemplo “408 - Request Timeout” o “511 - Network Authentication Required”.
Estructura de Respuesta de Error
Adicionalmenteal códigoy descripcióndel errorenviadoenlacabecerade la respuesta,el cuerpode
la misma puede contener un texto largo que explique la causa del error; normalmente devolverá el
mensaje de error generadopor el servidor de base de datos en caso de un error de sintaxis SQL o al
violar alguna restricción (clave primaria, clave foránea…).
Estructura:
{
"lnEstatus": Valor_Entero,
"lcMensaje": "Mensaje descriptivo…"
}