Histrix Api
Histrix posee un API REST que permite interactuar con todas las aplicaciones instaladas.
La API de Histrix intenta ser auto explicativa y puede ser recorrida mediante un navegador apuntando al directorio de instalación /api
En ese momento obtendremos la respuesta de la API y los recursos disponibles.
/api
Histrix APIHistrix request response:Array( [resources] => Array ( [info] => get Histrix Info [help] => Histrix Api Help [db] => Available databases ) [welcomeMessage] => Welcome to Histrix Api! [Api version] => 0.1)/info
Brinda información de versión de la API
Histrix APIHistrix request response:Array( [name] => Histrix [version] => 2.0 [description] => Rapid web application platform [api_version] => 1.0)/help
La ayuda informa los parámetros disponibles
- El parametro POST requestFormat permite selección en que formato se quiere la respuesta
Histrix APIHistrix request response:Array( [title] => Api reference [POST parameters] => Array ( [requestFormat] => Array ( [application/json] => returns data in JSON format [application/xml] => returns data in XML format [application/php] => returns data as a PHP serialized array ) ))/db
Obtiene un listado de bases disponibles
Histrix APIHistrix request response:Array( [genus] => Array ( [id] => genus [name] => Estudio Genus [description] => Base del Estudio ) [cliente1] => Array ( [id] => cliente1 [name] => Cliente 1 [description] => Cliente Uno ))/db/id_base
Aquí obtenemos los recursos disponibles para la base seleccionada
Histrix APIHistrix request response:Array( [resources] => Array ( [token] => get access token [logout] => revoke token token [config] => GET config Data [menu] => user menu [app] => use application ) [database] => Array ( [id] => id_base [name] => nombre_base [description] => Base de prueba ))/db/id_base/token
Permite obtener un token de acceso, al ingresar vía navegador podemos ver las opciones disponibles
Histrix APIHistrix request response:Array( [message] => missign name or password, use token/ as route parameters and send username and password POST variables [help] => Array ( [method] => POST [grant_types] => Array ( [0] => password [1] => client_credentials [2] => refresh_token ) [parameters] => Array ( [username] => User Name [password] => User password ) ))Ejemplo de Autentificación
1 -Obtención de un token mediante curl
curl -u TestClient:TestSecret https://localhost/api/db/id_base/token-d 'grant_type=client_credentials&username=histrix&password=histrix123'Parametros:
- TestClient y TestSecret corresponden a las credenciales del Cliente que accede a la Api de Histrix y deben ser obtenidas en forma directa.
- grant_type=password - Indica el tipo de autentificación que se va a realizar, en este caso enviando las credenciales del Usuario
- username: Nombre del Usuario
- password: Contraseña del Usuario Esto no devolverá una respuesta en JSON de este tipo
{ "access_token":"f446bc61ebb06653cd86309f2e3f49b9481cf6a3", "expires_in":3600, "token_type":"Bearer", "scope":null, "refresh_token":"4e40020c4fd2c6ccd968ed69152b75bbb9460944"}2 - Uso del Token
Una vez que obtenemos el token este se debe utilizar para todas las solicitudes a la API de la siguiente forma:
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" http://localhost/api/db/id_base/menu//db/id_base/menu Con el comando
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" http://localhost/api/db/id_base/menu/Solicitamos los items del menú del usuario poseedor del token enviado.
{ "description": "Nested Tree Menu", "parameters": { "id": "menu id" }, "tree": [ { "id": "274", "title": "CONTABILIDAD", "childs": [ { "id": "1", "title": "TABLAS", "childs": [ { "id": "21", "title": "PLAN DE CUENTAS", "uri": "/app/contabilidad/cuentas_tree.xml" }, { "id": "3", "title": "COMPROBANTES CONTABLES", "uri": "/app/contabilidad/man/ctbconceptos_crud.xml" }, etc .../db/id_base/me Obtenemos los datos del Usuario conectado
/db/id_base/menu/id_menu Obtenemos 1 Item del menu exclusivamente
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" http://localhost/api/db/id_base/menu/3{ "description": "Nested Tree Menu", "parameters": { "id": "menu id" }, "tree": [ { "id": "3", "title": "COMPROBANTES CONTABLES", "uri": "localhost/api/db/id_base/app/contabilidad/man/ctbconceptos_crud.xml" } ]}/db/id_base/app/(uri) Podemos acceder a traves del recurso otorgado por el menú mediante diferentes metodos
Método: OPTIONS
Mediante el método OPTIONS obtenemos información de la estructura del contenedor en formato JSON.
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3"-X OPTIONS http://localhost/api/db/id_base/app/contabilidad/man/ctbconceptos_crud.xmlY obtenemos:
{ "resources": { "GET": "Get Data", "OPTIONS": "App Info", "EXPORT": "Export Data", "POST": "insert Data", "PUT": "Update Data", "DELETE": "Delete Data" }, "dataContainer": { "titulo": "Categorias de IVA", "tipoAbm": "abm", "tipo": "abm", "TablaBase": "GEN_IVA", "tablas": { "GEN_IVA": { "nombreTabla": "GEN_IVA", "campos": { "id_iva": { "NombreCampo": "id_iva", "Etiqueta": "código ", "Size": 12, "TipoDato": "varchar", "Suma": 0, "uid": "id_iva1390445306dc69f7daff", "id": "id_iva", "Parametro": { "id": "id_iva", "autoinc": "true", "noshow": "true" }, "autoinc": "true", "noshow": "true", "ayuda": "código de iva" }, "abreviacion_iva": { "NombreCampo": "abreviacion_iva", "Etiqueta": "abrev.", "Size": 12, "TipoDato": "varchar", "Suma": 0, "uid": "abreviacion_iva13904453064912d64369", "id": "abreviacion_iva", "Parametro": { "id": "abreviacion_iva" }, "ayuda": "nombre abreviado de la categoria de iva" }, "nombre_iva": { "NombreCampo": "nombre_iva", "Etiqueta": "nombre ", "Size": "15", "TipoDato": "varchar", "Suma": 0, "uid": "nombre_iva13904453064919cc", "id": "nombre_iva", "Parametro": { "id": "nombre_iva" }, "size": "15", "ayuda": "nombre de la categoria de iva", "oplogico": "and" }, "letra": { "NombreCampo": "letra", "Etiqueta": "letra", "Size": 12, "TipoDato": "varchar", "Suma": 0, "uid": "letra13904453063ba8f", "id": "letra", "Parametro": { "id": "letra" }, "ayuda": "letra", "opcion": { "": null, "A": "a", "B": "b", "C": "c" } } },...Método: GET
Este comando efectúa una consulta de los datos en la aplicación especificada:
Ej:
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3"-X GET http://localhost/api/db/id_base/app/general/iva_crud.xmlPara archivos:
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3"-X GET http://localhost/api/db/id_base/app/general/dirResultado:
{ "data": [ { "id_iva": "1", "abreviacion_iva": "R.Insc.", "nombre_iva": "Responsable Inscripto", "letra": "A" }, { "id_iva": "2", "abreviacion_iva": "RNI", "nombre_iva": "Resp. No Inscripto", "letra": "A" }, { "id_iva": "3", "abreviacion_iva": "Exe", "nombre_iva": "Exento", "letra": "B" }, { "id_iva": "4", "abreviacion_iva": "Exento", "nombre_iva": "Sujeto Exento", "letra": "B" }, { "id_iva": "5", "abreviacion_iva": "C.Final", "nombre_iva": "Consumidor Final", "letra": "B" }, { "id_iva": "6", "abreviacion_iva": "Monotrib", "nombre_iva": "Monotributista", "letra": "B" } ]}Filtros Ejemplo de consulta con parámetros
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3"-X GET http://localhost/api/db/id_base/app/general/iva_crud.xml?id_iva=1Este comando solamente va retornar el registro especificado por el campo especificado:
{ "data": [ { "id_iva": "1", "abreviacion_iva": "R.Insc.", "nombre_iva": "Responsable Inscripto", "letra": "A" } ]}Límites Para fijar un límite en los datos a buscar se debe utilizar el parametro: _limit
_limit : Numero de registros a buscar - (0) elimina limites pre-establecidosEjemplo:
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3"-X GET http://localhost/api/db/id_base/app/general/iva_crud.xml?_limit=3Rangos Para obtener un rango de datos se debe utilizar los parámetros predeterminados:
_f[] - Field : Nombre del campo_o[] - Operator : Operador a utilizar (=,!=,>=,<=,like)_v[] - Value : ValorEjemplo de uso del filtro con Rangos:
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3"-X GET http://localhost/api/db/id_base/app/general/iva_crud.xml?_f[]=id_iva&_o[]=>=&_v[]=3&_f[]=id_iva&_o[]=<&_v[]=5{ "data": [ { "id_iva": "3", "abreviacion_iva": "Exe", "nombre_iva": "Exento", "letra": "B" }, { "id_iva": "4", "abreviacion_iva": "Exento", "nombre_iva": "Sujeto Exento", "letra": "B" }, { "id_iva": "5", "abreviacion_iva": "C.Final", "nombre_iva": "Consumidor Final", "letra": "B" } ]}Método: POST
Esta operación va a insertar un registro en la tabla referenciada por la aplicación.
Debe enviarse en la variable ‘data’ un objeto JSON con los nombres de los campos y los valores a asignar.
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" -X POST-d 'data=[ { "nombre_iva": "TEST 2", "letra" :"X"}]' http://localhost/api/db/id_base/app/general/iva_crud.xmlPara imagenes o archivos:
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" -X POST http://localhost/api/db/id_base/app/general/files/rutacurl -F "file=@profile.jpg;filename=profile.jpg;type=image/jpeg"Método: PUT
Esta operación va a Modificar un registro en la tabla referenciada por la aplicación.
Parametros:
'data' = un objeto JSON con los nombres de los campos y los valores a asignar.'keys' = un objeto JSON con los nombres de los campos claves por los cuales referenciar el registro a modificar.curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" -X POST-d 'data=[ { "nombre_iva": "TEST 2", "letra" :"X"}],keys=[ { "id_iva": 7}]' http://localhost/api/db/id_base/app/general/iva_crud.xmlMétodo: DELETE
Esta operación borra los registros especificados con el parametro ‘keys’
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" -X POST-d 'keys=[ { "id_iva": 7}]' http://localhost/api/db/id_base/app/general/iva_crud.xmlMétodo: PATCH
Esta operación realiza una transacción de un Array de objetos, siguiendo los campos del xml al cual se le envia la petición
curl --header "Authorization: Bearer f446bc61ebb06653cd86309f2e3f49b9481cf6a3" -X PATCH-d 'jsonData=[{"clave": "valor", "clave2": "valor2"}, {"clave": "valor", "clave2: "valor2"}]' http://localhost/api/db/id_base/app/general/iva_crud.xml