== ¿Cómo usar el API de Murachi? == === Detalles de seguridad === [[Image(security.jpg,120px)]] Todos los recursos del API requieren autenticación básica HTTP (''Basic Authentication''). Por esta razón, en todas las solicitudes debe estar presente el encabezado ''Authorization'' lleno con los valores {{{app_id}}} y {{{app_key}}} que se generará para su consumo. Por ejemplo si las credenciales de su aplicación son las siguientes: * {{{app_id: murachi.test}}} * {{{app_key: 12345678}}} necesitará codificarlas con el algoritmo Base64: {{{Base64(app_id:app_key)}}}. El resultado debería ser como el siguiente encabezado HTTP: ''Authorization: Basic aG9sYTptdW5kbw==''. Puede convertir credenciales a Base64 con la siguiente línea de comando: {{{ echo -n APP_ID:APP_KEY | base64 }}} reemplazando APP_ID y APP_KEY con sus respectivas credenciales. '''NOTA:''' inicialmente para propósitos de prueba se estarán utilizando las credenciales * {{{app_id: admin}}} * {{{app_key: admin}}} Esto da como resultado: {{{YWRtaW46YWRtaW4=}}}. '''Entonces mientras se habilita el proceso de generación de API_KEY para clientes del API se utilizará lo siguiente:''' {{{ Authorization: Basic YWRtaW46YWRtaW4= }}} ''' al momento de consumir un recurso de Murachi. ''' === Documentación del API === [[Image(documentacion.png,link=https://murachi.cenditel.gob.ve/apidoc/,120px)]] Para consumir o hacer llamadas a los recursos del servicio Murachi puede revisar el siguiente enlace: [https://murachi.cenditel.gob.ve/apidoc/]. Allí encontrará todos los recursos disponibles hasta el momento con sus parámetros, respuestas, errores y ejemplos de uso. === Prueba básica con Ruby === [[Image(ruby.jpg,120px)]] En el siguiente código se cargan dos (02) archivos de texto y se agregan a un contenedor BDOC a través del recurso {{{https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/cargas}}}. Luego se listan los archivos que tiene el contenedor con el recurso {{{https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/lista/%s}}}. Para mayor información y documentación de los recursos disponibles siga el enlace: [https://murachi.cenditel.gob.ve/apidoc/]. * Crear el archivo {{{multipart.rb}}} con el siguiente contenido: {{{ require 'net/https' require 'net/http/post/multipart' require "openssl" require "json" # Solicitud POST #uri = URI.parse('https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/cargas') @uri = URI.parse('https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/cargas') @req = Net::HTTP::Post::Multipart.new @uri.path, "f1" => UploadIO.new(StringIO.new("cadena de prueba"), "text/plain", "file.txt"), "f2" => UploadIO.new(StringIO.new("SEGUNDA cadena de prueba"), "text/plain", "file2.txt") # Agregar cabezera para autenticación con murachí @req['Authorization'] = 'Basic YWRtaW46YWRtaW4=' @http = Net::HTTP.new(@uri.host, @uri.port) @http.use_ssl = true @http.verify_mode = OpenSSL::SSL::VERIFY_NONE # RESPUESTA --->> @res = @http.request(@req) # Body @json_resp = JSON.parse(@res.body) puts @json_resp['containerId'] # Listar archivos del contenedor registrado en la llamada anterior @uri = URI.parse 'https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/archivos/lista/%s' % @json_resp['containerId'] @req = Net::HTTP::Get.new @uri.path @req['Authorization'] = 'Basic YWRtaW46YWRtaW4=' @res = @http.request(@req) @json_resp = JSON.parse(@res.body) @json_resp['dataFiles'].each do |file| puts file['filename'] end }}} * Ejecutar: {{{ruby multipart.rb}}}