== ¿Cómo usar el API de Murachi? == === Detalles de seguridad === 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 === 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 === * Crear el archivo {{{multipart.rb}}} con el siguiente contenido: {{{ require 'net/https' require 'net/http/post/multipart' require "openssl" # Solicitud POST #uri = URI.parse('https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/bdocs/cargas') uri = URI.parse('https://192.168.12.125:8443/Murachi/0.1/archivos/bdocs/cargas') req = Net::HTTP::Post::Multipart.new uri.path, "data" => UploadIO.new(StringIO.new("cadena de prueba"), "text/plain", "file.txt") # "data" => StringIO.new("cadena de prueba") # "data" => UploadIO.new(File.new("./file.txt"), "text/plain", "file.txt") # Solicitud GET #uri = URI.parse('https://murachi.cenditel.gob.ve/Murachi/0.1/archivos/version') #uri = URI.parse('https://192.168.12.125:8443/Murachi/0.1/archivos/version') #req = Net::HTTP::Get.new uri.path http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE # RESPUESTA --->> res = http.request(req) # Headers puts res['Set-Cookie'] # => String puts res.get_fields('set-cookie') # => Array puts res.to_hash['set-cookie'] # => Array puts "Headers: #{res.to_hash.inspect}" # Status puts 'code',res.code # => '200' puts 'message',res.message # => 'OK' puts 'class.name',res.class.name # => 'HTTPOK' # Body puts res.body # "data" => StringIO.new("cadena de prueba") }}} * Ejecutar: {{{ruby multipart.rb}}}