{"id":4078,"date":"2017-10-06T11:02:51","date_gmt":"2017-10-06T18:02:51","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4078"},"modified":"2025-06-13T17:23:09","modified_gmt":"2025-06-14T00:23:09","slug":"curl-comes-n1ql-querying-external-json-data","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/curl-comes-n1ql-querying-external-json-data\/","title":{"rendered":"CURL llega a N1QL: Consulta de datos JSON externos"},"content":{"rendered":"<p><b>JSON es una forma \u00fatil de transmitir datos. Ahora, N1QL puede consultarlo gracias a una actualizaci\u00f3n de CURL en Couchbase 5.0. Mira c\u00f3mo conectarte a varios endpoints para hacerlo.<\/b><\/p>\n<p><span style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/n1ql\/\">N1QL<\/a> tiene muchas funciones que te permiten realizar una operaci\u00f3n espec\u00edfica. Una de estas funciones que se ha a\u00f1adido en el nuevo Couchbase 5.0 DP es CURL.<\/span><\/p>\n<p><span style=\"font-weight: 400\">CURL le permite utilizar N1QL para interactuar con puntos finales JSON externos; es decir, API Rest que devuelven resultados y datos en formato JSON. Esta funci\u00f3n permitir\u00e1 a N1QL tener un conjunto conservador de funcionalidad curl incorporado en el lenguaje. La interacci\u00f3n consiste principalmente en la transferencia de datos hacia y desde un servidor utilizando los protocolos http y https. En resumen, la funci\u00f3n CURL en N1QL le proporciona a usted, el usuario, un subconjunto de la funcionalidad est\u00e1ndar de curl (<\/span><a href=\"https:\/\/curl.haxx.se\/docs\/manpage.html\"><span style=\"font-weight: 400\">https:\/\/curl.haxx.se\/docs\/manpage.html<\/span><\/a><span style=\"font-weight: 400\">) dentro de un lenguaje de consulta.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para recuperar datos de diferentes servidores (como Google Maps, Yahoo Finanzas, etc.), podemos realizar peticiones GET o HTTP POST utilizando la funci\u00f3n CURL. Esto se ve en el siguiente diagrama.<\/span><\/p>\n<h2><b>Definici\u00f3n de la funci\u00f3n<\/b><\/h2>\n<p><strong>CURL (URL, [opciones])<\/strong><\/p>\n<p><span style=\"font-weight: 400\">El primer argumento es la URL, que representa cualquier URL que apunte a un punto final JSON. S\u00f3lo se admiten URL con el protocolo https:\/\/ o https:\/\/. La redirecci\u00f3n est\u00e1 desactivada. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Los argumentos de entrada de la funci\u00f3n CURL() pueden ser tanto valores est\u00e1ticos como expresiones N1QL evaluables. <\/span><\/p>\n<p><span style=\"font-weight: 400\">M\u00e1s adelante en el art\u00edculo veremos ejemplos que consultan desde la API de Google Geocode, la API de Yahoo Finanzas, la b\u00fasqueda de texto completo de Couchbase y la API de Github. El segundo argumento es una lista de opciones. Se trata de un objeto JSON que contiene una lista de opciones de curl y sus valores correspondientes.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Soportamos una variedad de opciones que le permiten interactuar con cualquier punto final de manera efectiva. En general, se pueden clasificar en opciones relacionadas con la seguridad y opciones generales. Al final del art\u00edculo se incluye una tabla con las opciones soportadas.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><b>Funciones y mejoras de seguridad para CURL<\/b><\/h2>\n<p><span style=\"font-weight: 400\">Con la incorporaci\u00f3n de la funci\u00f3n CURL, para evitar vulnerabilidades de seguridad y controlar y minimizar los riesgos asociados a ella, se han implementado m\u00faltiples medidas de seguridad.<\/span><\/p>\n<h3><b>Uso de certificados CA con la funci\u00f3n CURL de N1QL<\/b><\/h3>\n<p><span style=\"font-weight: 400\">Los certificados utilizados por la funci\u00f3n N1QL CURL deben almacenarse en cada nodo de consulta dentro del cl\u00faster en el directorio n1qlcerts. La ubicaci\u00f3n donde este directorio debe ser creado por el usuario depende de la ubicaci\u00f3n de la instalaci\u00f3n couchbase. (Es espec\u00edfico del sistema operativo). A continuaci\u00f3n se asume la ubicaci\u00f3n de instalaci\u00f3n por defecto y se muestra d\u00f3nde se ha creado el directorio n1qlcerts. <\/span><\/p>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Linux \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400\"> \/opt\/couchbase\/var\/lib\/couchbase\/n1qlcerts \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Mac OSX<\/span><\/td>\n<td><span style=\"font-weight: 400\">\/Users\/couchbase\/Library\/Application\\ Support\/Couchbase\/var\/lib\/couchbase\/n1qlcerts<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">Windows<\/span><\/td>\n<td><span style=\"font-weight: 400\">C:Archivos de ProgramaCouchbase\\Servervar\\lib\\couchbase\\n1qlcerts<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><span style=\"font-weight: 400\">Para ubicaciones de instalaci\u00f3n no predeterminadas, es necesario crear la ruta relativa - \"..\/var\/lib\/couchbase\/n1qlcerts directory\" desde el directorio bin desde el que se ejecuta cbq-engine.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Este directorio debe crearse para cada nodo de consulta.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Una vez creado este directorio, a\u00f1ade aqu\u00ed el certificado que CURL va a utilizar. Para usar este certificado, usamos la opci\u00f3n cacert y pasamos el nombre del certificado. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Por ejemplo, si n1qlcerts\/usuario1.pem es el nombre del certificado, utilice la opci\u00f3n cacert -.<\/span><\/p>\n<p><strong>\"cacert\": \"usuario1.pem\"<\/strong><\/p>\n<p><span style=\"font-weight: 400\">S\u00f3lo son v\u00e1lidos los nombres, las rutas no son v\u00e1lidas y pasar una de ellas provocar\u00e1 un error. CURL() lanza un error en el caso de certificados inv\u00e1lidos y caducados.<\/span><\/p>\n<p><b>NOTA: El directorio n1qlcerts y su contenido deben replicarse en cada nodo de consulta del cl\u00faster.<\/b><\/p>\n<h3><b>Cabeceras y agente de usuario personalizados<\/b><\/h3>\n<p><span style=\"font-weight: 400\">CURL() se ejecuta en el nodo de consulta dentro de un cl\u00faster. Esto permite a la funci\u00f3n acceder a todos los puntos finales REST accesibles a trav\u00e9s del servicio de consulta (ya que es ah\u00ed donde se ejecuta la funci\u00f3n). Para evitar el acceso a dichos puntos finales inseguros, se a\u00f1ade una cabecera personalizada, que no puede ser modificada por el usuario, a todas las peticiones enviadas utilizando la funci\u00f3n curl N1QL. Tiene el formato \"X-N1QL-User-Agent: couchbase\/n1ql\/1.7.0-N1QL\". <\/span><\/p>\n<p><span style=\"font-weight: 400\">Tambi\u00e9n se establece siempre un user-agent por defecto. Se puede restablecer con la opci\u00f3n -user-agent. El valor por defecto es \"couchbase\/n1ql\/1.7.0-N1QL\".<\/span><\/p>\n<p><span style=\"font-weight: 400\">Ambos valores est\u00e1n dise\u00f1ados para permitir que los puntos finales internos y externos comprueben la cabecera\/agente-usuario y no permitan el acceso en su c\u00f3digo y denieguen el acceso a la funci\u00f3n. La \u00fanica advertencia al usar esto, sin embargo, es que todav\u00eda no podemos proteger contra cualquier software que no compruebe esta cabecera y las versiones existentes de software instalado localmente (tanto Couchbase como software que no sea Couchbase). Para estos casos, se ha a\u00f1adido la funci\u00f3n de curl whitelist (ver m\u00e1s abajo).<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><b>Creaci\u00f3n de una lista blanca para restringir el acceso a CURL.<\/b><\/h3>\n<p><span style=\"font-weight: 400\">Una lista blanca es un documento JSON que enumera los puntos finales REST permitidos y las URL a las que puede acceder la funci\u00f3n CURL(). Las propias URL deben coincidir con un prefijo. El documento de la lista blanca se crea dentro del directorio n1qlcerts (para ver la ubicaci\u00f3n, consulte m\u00e1s arriba) y se denomina curl_whitelist.json (este nombre es fijo y el usuario no puede cambiarlo). El archivo (curl_whitelist.json) debe ser creado por el administrador (o un usuario con acceso a la m\u00e1quina donde est\u00e1 instalado couchbase). <\/span><\/p>\n<p><span style=\"font-weight: 400\">Si la lista blanca no est\u00e1 configurada (....\/n1qlcerts\/curl_whitelist.json no existe) o si existe pero est\u00e1 vac\u00eda, la funci\u00f3n CURL no se puede utilizar. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Cualquier lista blanca necesita tener los siguientes campos - <\/span><\/p>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Campo<\/span><\/td>\n<td><span style=\"font-weight: 400\">Tipo<\/span><\/td>\n<td><span style=\"font-weight: 400\">Descripci\u00f3n<\/span><\/td>\n<td><span style=\"font-weight: 400\">Valor por defecto<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">todo_acceso<\/span><\/td>\n<td><span style=\"font-weight: 400\">booleano<\/span><\/td>\n<td><span style=\"font-weight: 400\">Esto decidir\u00e1 si el usuario tiene acceso a todas las urls o s\u00f3lo a las urls especificadas en el array allowed_urls.<\/span><\/td>\n<td><span style=\"font-weight: 400\">falso<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">rizos_permitidos<\/span><\/td>\n<td><span style=\"font-weight: 400\">matriz<\/span><\/td>\n<td><span style=\"font-weight: 400\">Lista de prefijos para urls que deseamos permitir.<\/span><\/td>\n<td><span style=\"font-weight: 400\">vac\u00edo<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">urls_no_permitidas<\/span><\/td>\n<td><span style=\"font-weight: 400\">matriz<\/span><\/td>\n<td><span style=\"font-weight: 400\">Lista de prefijos para urls que estar\u00e1n restringidas pase lo que pase<\/span><\/td>\n<td><span style=\"font-weight: 400\">vac\u00edo<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><span style=\"font-weight: 400\">Si el campo all_access es false, entonces el uso de la funci\u00f3n CURL ha sido completamente restringido. Para poder usar CURL() con cualquier endpoint en N1QL, el administrador necesita establecer allowed_urls y disallowed_urls en consecuencia. Para permitir el acceso a todas las urls, podemos establecer all_access a true. Esto esencialmente nos da acceso completo a CURL.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Digamos, por ejemplo, que deseamos permitir el acceso a todos los endpoints de la api de google maps pero restringir el acceso a todos los dem\u00e1s endpoints. Lo siguiente ser\u00e1 el contenido de la lista blanca. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Curl_whitelist.json <\/span><\/p>\n<pre class=\"lang:default decode:true\" title=\"curl_whitelist.json\">{\r\n\u00a0\"all_access\":false,\r\n\u00a0\"allowed_urls\":[\"https:\/\/maps.googleapis.com\"]\r\n}\r\n\r\n<\/pre>\n<p>Cualquier url en CURL() prefijada por <a href=\"https:\/\/maps.googleapis.com\/maps\/api\/geocode\/json\"><b>https:\/\/maps.googleapis.com\/<\/b><\/a> se permitir\u00e1.<\/p>\n<p><b>NOTA: La lista blanca debe replicarse en cada nodo de consulta del cl\u00faster.<\/b><\/p>\n<h3><b>Acceso basado en roles a la funci\u00f3n CURL<\/b><\/h3>\n<p><span style=\"font-weight: 400\">Algo importante que vale la pena mencionar aqu\u00ed es que CURL est\u00e1 dise\u00f1ado para que no pueda ser invocado arbitrariamente. Para evitar la inyecci\u00f3n de datos desde una fuente externa mediante la sentencia UPDATE, se ha a\u00f1adido un nuevo rol QUERY_EXTERNAL_ACCESS. S\u00f3lo un usuario que tenga asignado este rol tiene acceso a la funci\u00f3n CURL. Por defecto, este rol est\u00e1 vac\u00edo. S\u00f3lo puede acceder a la funci\u00f3n CURL un FULL_ADMIN o cualquier usuario al que el FULL_ADMIN haya asignado el rol QUERY_EXTERNAL_ACCESS. Para versiones anteriores de couchbase que no soportan el control de acceso basado en roles, se puede utilizar un bucket protegido por contrase\u00f1a. Tambi\u00e9n para la funcionalidad CURL(), internamente se soporta un conjunto espec\u00edfico de cifrados SSL (MEDIUM o HIGH). Esto depende de COUCHBASE_SSL_CIPHER_LIST.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><b>Restricci\u00f3n del tama\u00f1o de los resultados de CURL()<\/b><\/h3>\n<p><span style=\"font-weight: 400\">Un problema importante al utilizar la funci\u00f3n CURL() es cuando un usuario crea un archivo realmente largo, de m\u00e1s de 64 MB, e intenta leerlo. Dado que los datos se cargan en memoria, si no se limita el tama\u00f1o del resultado, el servicio de consulta podr\u00eda bloquearse. Debido a esta posibilidad, el tama\u00f1o m\u00e1ximo del resultado para los datos que puede devolver CURL() es de 64 MB (67 108 864 bytes). El usuario puede restringir la cantidad de memoria para los resultados CURL utilizando el par\u00e1metro <\/span><b><i>resultado-cap<\/i><\/b><span style=\"font-weight: 400\"> El valor m\u00ednimo (por defecto) de la opci\u00f3n result-cap es 20MB ( 20 971 520 bytes).<\/span><\/p>\n<p><span style=\"font-weight: 400\">Por ejemplo, si la consulta fija el l\u00edmite de resultado en 20 MB - \"result-cap\":20971520, cualquier respuesta que tenga un tama\u00f1o superior devolver\u00e1 un error.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><b>Interacci\u00f3n con diferentes puntos finales<\/b><\/h2>\n<p><span style=\"font-weight: 400\">Veamos como consultar diferentes endpoints usando la funci\u00f3n CURL en N1QL.<\/span><\/p>\n<h3><b>API de geocodificaci\u00f3n de Google Maps<\/b><\/h3>\n<p><span style=\"font-weight: 400\">La API de geocodificaci\u00f3n de Google Maps permite convertir direcciones est\u00e1ticas en coordenadas y viceversa mediante una solicitud HTTP. (Para m\u00e1s informaci\u00f3n, consulte <\/span><a href=\"https:\/\/developers.google.com\/maps\/documentation\/geocoding\/intro\"><span style=\"font-weight: 400\">https:\/\/developers.google.com\/maps\/documentation\/geocoding\/intro<\/span><\/a><span style=\"font-weight: 400\"> )<\/span><\/p>\n<p><span style=\"font-weight: 400\">Supongamos que quieres buscar Santa Cruz en Espa\u00f1a utilizando tu clave API de Google Dev. Para ello, puede utilizar la siguiente consulta:<\/span><\/p>\n<h4><b>Solicitud de rizos<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"Solicitud de rizo\">curl https:\/\/maps.googleapis.com\/maps\/api\/geocode\/json?address=santa+cruz&amp;components=country:ES&amp;key=&lt;Your Developer API key&gt;<\/pre>\n<p>&nbsp;<\/p>\n<h4><b>Consulta correspondiente<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"Consulta N1QL\">SELECT CURL(\"https:\/\/maps.googleapis.com\/maps\/api\/geocode\/json\", {\"get\":true,\"data\":\"address=santa+cruz&amp;components=country:ES&amp;key=&lt;Your Developer API key&gt;\"}) GEO;<\/pre>\n<pre class=\"lang:default decode:true\" title=\"Resultados\">\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"GEO\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"address_components\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"Santa Cruz de Tenerife\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"Santa Cruz de Tenerife\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"locality\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"Santa Cruz de Tenerife\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"TF\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"administrative_area_level_2\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"Canary Islands\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"CN\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"administrative_area_level_1\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"Spain\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"ES\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"country\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"formatted_address\": \"Santa Cruz de Tenerife, Spain\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"geometry\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"bounds\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"northeast\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 28.487616,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -16.2356646\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"southwest\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 28.4280248,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -16.3370045\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"location\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 28.4636296,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -16.2518467\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"location_type\": \"APPROXIMATE\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"viewport\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"northeast\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 28.487616,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -16.2356646\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"southwest\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 28.4280248,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -16.3370045\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"place_id\": \"ChIJcUElzOzMQQwRLuV30nMUEUM\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"locality\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"status\": \"OK\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]<\/pre>\n<p>Esta consulta recupera la direcci\u00f3n y los l\u00edmites de localizaci\u00f3n geogr\u00e1fica de la direcci\u00f3n, Santa Cruz, ES. Utilizamos la direcci\u00f3n, los componentes y los par\u00e1metros clave de la API REST de geocodificaci\u00f3n de Google Maps. La opci\u00f3n \"data\" representa la opci\u00f3n data de curl que representa datos HTTP POST.  Sin embargo, dado que se trata de una solicitud get, establecemos la opci\u00f3n \"get\" en true. Puedes proporcionar valores a todos los par\u00e1metros REST dentro de la opci\u00f3n \"data\".<\/p>\n<p><span style=\"font-weight: 400\">Ahora busquemos Half Moon Bay<\/span><\/p>\n<pre class=\"lang:default decode:true\" title=\"Consulta N1QL\">SELECT CURL(\"https:\/\/maps.googleapis.com\/maps\/api\/geocode\/json\", {\"data\":\"address=Half+Moon+Bay\", \"get\":true}) GEO;<\/pre>\n<pre class=\"lang:default decode:true\" title=\"resultados\">\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"GEO\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"address_components\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"Half Moon Bay\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"Half Moon Bay\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"locality\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"San Mateo County\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"San Mateo County\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"administrative_area_level_2\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"California\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"CA\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"administrative_area_level_1\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"long_name\": \"United States\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"short_name\": \"US\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"country\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"formatted_address\": \"Half Moon Bay, CA, USA\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"geometry\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"bounds\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"northeast\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 37.5226389,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -122.4165183\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"southwest\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 37.4249286,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -122.4778879\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"location\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 37.4635519,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -122.4285862\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"location_type\": \"APPROXIMATE\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"viewport\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"northeast\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 37.5226389,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -122.4165183\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"southwest\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lat\": 37.4249286,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"lng\": -122.4778879\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"place_id\": \"ChIJC8sZCqULj4ARVJvnNcic_V4\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"types\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"locality\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"political\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"status\": \"OK\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]<\/pre>\n<p><b style=\"color: #343e47;font-family: Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 40px\">API de Yahoo Finanzas<\/b><\/p>\n<p><span style=\"font-weight: 400\">La API de Yahoo Finanzas le permite utilizar el Lenguaje de consulta de Yahoo (YQL) para obtener cotizaciones burs\u00e1tiles (como se ve en <\/span><a href=\"https:\/\/meumobi.github.io\/stocks%20apis\/2016\/03\/13\/get-realtime-stock-quotes-yahoo-finance-api.html\"><span style=\"font-weight: 400\">https:\/\/meumobi.github.io\/stocks%20apis\/2016\/03\/13\/get-realtime-stock-quotes-yahoo-finance-api.html<\/span><\/a><span style=\"font-weight: 400\"> ). A continuaci\u00f3n se muestra la sentencia YQL SELECT para acceder a las acciones de Hortonworks Inc (HDP).<\/span><\/p>\n<pre class=\"lang:default decode:true\" title=\"consulta\">select * from yahoo.finance.quotes where symbol in (\"HDP\")<\/pre>\n<p><span style=\"font-weight: 400\">Para obtener los resultados en JSON puede utilizar la siguiente URL:<\/span><\/p>\n<p><a href=\"https:\/\/query.yahooapis.com\/v1\/public\/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22HDP%22)&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&amp;callback=\"><span style=\"font-weight: 400\">https:\/\/query.yahooapis.com\/v1\/public\/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22HDP%22)&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&amp;callback=<\/span><\/a><\/p>\n<h4><b>Solicitud de rizos<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"solicitud curl\">curl https:\/\/query.yahooapis.com\/v1\/public\/yql --data 'q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22HDP%22)&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&amp;callback='<\/pre>\n<h4><b>Consulta correspondiente<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"Consulta N1QL\">SELECT temp.query.results from\r\nCURL(\"https:\/\/query.yahooapis.com\/v1\/public\/yql\",\r\n\u00a0\u00a0\u00a0{\"data\":\"q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22HDP%22)&amp;format=json&amp;diagnostics=true&amp;env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&amp;callback=\"})temp;<\/pre>\n<pre class=\"lang:default decode:true\" title=\"resultados\">&quot;results&quot;: [\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;results&quot;: {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;quote&quot;: {\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;AfterHoursChangeRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;AnnualizedGain&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Ask&quot;: &quot;16.950&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;AskRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;AverageDailyVolume&quot;: &quot;952135&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Bid&quot;: &quot;16.940&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;BidRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;BookValue&quot;: &quot;-0.654&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Change&quot;: &quot;+0.075&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ChangeFromFiftydayMovingAverage&quot;: &quot;0.377&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ChangeFromTwoHundreddayMovingAverage&quot;: &quot;3.625&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ChangeFromYearHigh&quot;: &quot;-0.755&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ChangeFromYearLow&quot;: &quot;10.525&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ChangePercentRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ChangeRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Change_PercentChange&quot;: &quot;+0.075 - +0.445%&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ChangeinPercent&quot;: &quot;+0.445%&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Commission&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Currency&quot;: &quot;USD&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DaysHigh&quot;: &quot;17.010&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DaysLow&quot;: &quot;16.780&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DaysRange&quot;: &quot;16.780 - 17.010&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DaysRangeRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DaysValueChange&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DaysValueChangeRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DividendPayDate&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DividendShare&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;DividendYield&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;EBITDA&quot;: &quot;-223.00M&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;EPSEstimateCurrentYear&quot;: &quot;-1.720&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;EPSEstimateNextQuarter&quot;: &quot;-0.380&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;EPSEstimateNextYear&quot;: &quot;-1.190&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;EarningsShare&quot;: &quot;-3.737&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ErrorIndicationreturnedforsymbolchangedinvalid&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ExDividendDate&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;FiftydayMovingAverage&quot;: &quot;16.568&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;HighLimit&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;HoldingsGain&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;HoldingsGainPercent&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;HoldingsGainPercentRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;HoldingsGainRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;HoldingsValue&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;HoldingsValueRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;LastTradeDate&quot;: &quot;10\/5\/2017&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;LastTradePriceOnly&quot;: &quot;16.945&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;LastTradeRealtimeWithTime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;LastTradeTime&quot;: &quot;12:50pm&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;LastTradeWithTime&quot;: &quot;12:50pm - &lt;b&gt;16.945&lt;\/b&gt;&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;LowLimit&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MarketCapRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MarketCapitalization&quot;: &quot;700.96M&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;MoreInfo&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Name&quot;: &quot;Hortonworks, Inc.&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Notes&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;OneyrTargetPrice&quot;: &quot;18.930&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Open&quot;: &quot;17.010&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;OrderBookRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PEGRatio&quot;: &quot;-0.400&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PERatio&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PERatioRealtime&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PercebtChangeFromYearHigh&quot;: &quot;-4.266%&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PercentChange&quot;: &quot;+0.445%&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PercentChangeFromFiftydayMovingAverage&quot;: &quot;+2.275%&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PercentChangeFromTwoHundreddayMovingAverage&quot;: &quot;+27.214%&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PercentChangeFromYearLow&quot;: &quot;+163.941%&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PreviousClose&quot;: &quot;16.870&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PriceBook&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PriceEPSEstimateCurrentYear&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PriceEPSEstimateNextYear&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PricePaid&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;PriceSales&quot;: &quot;3.212&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;SharesOwned&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;ShortRatio&quot;: &quot;3.640&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;StockExchange&quot;: &quot;NMS&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Symbol&quot;: &quot;HDP&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TickerTrend&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TradeDate&quot;: null,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TwoHundreddayMovingAverage&quot;: &quot;13.320&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Volume&quot;: &quot;217430&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;YearHigh&quot;: &quot;17.700&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;YearLow&quot;: &quot;6.420&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;YearRange&quot;: &quot;6.420 - 17.700&quot;,\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;symbol&quot;: &quot;HDP&quot;\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}\r\n&nbsp;&nbsp;]<\/pre>\n<p>Para esta consulta, el valor de la opci\u00f3n data contiene los par\u00e1metros REST de Yahoo, q (para la consulta YQL), format (para devolver los datos en JSON) y algunos otros par\u00e1metros.<\/p>\n<h3><b>B\u00fasqueda de texto completo en Couchbase<\/b><\/h3>\n<p><span style=\"font-weight: 400\">La b\u00fasqueda de texto completo de Couchbase permite aplicar b\u00fasquedas difusas a los datos almacenados en Couchbase. Para m\u00e1s informaci\u00f3n <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-4.5-developer-preview-couchbase-fts\/\">https:\/\/www.couchbase.com\/blog\/couchbase-4.5-developer-preview-couchbase-fts\/<\/a><\/span><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Supongamos que creas un \u00edndice FTS llamado beers en el bucket beer-sample en Couchbase. Ahora puedes buscar cerveza tipo pale ale utilizando este \u00edndice, usando la funci\u00f3n CURL en N1QL. Es importante tener en cuenta que FTS actualmente acepta HTTP POST en lugar de GET. Para especificar expl\u00edcitamente el m\u00e9todo de petici\u00f3n POST, utilice la opci\u00f3n request. <\/span><\/p>\n<h4><b>Solicitud de rizos<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"solicitud curl\">curl \u2013u beer-sample:pass -XPOST -H \"Content-Type: application\/json\" https:\/\/127.0.0.1:8094\/api\/index\/beers\/query -d '{ \"explain\": true, \"fields\": [\"*\"],\"highlight\": {},\"query\": {\"query\": \"pale ale\"}}'<\/pre>\n<h4><b>Consulta correspondiente<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"Consulta N1QL\">SELECT result.total_hits, array_length(result.hits) hits_per_page\r\nFROM CURL(\"https:\/\/localhost:8094\/api\/index\/beers\/query\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\"request\":\"POST\",\"header\":\"Content-Type: application\/json\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"data\":'{\"explain\":false,\"fields\": [\"*\"],\"highlight\": {},\"query\": {\"query\": \"pale ale\"}}',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"user\":\"Administrator:password\"}) result;<\/pre>\n<pre class=\"lang:default decode:true\" title=\"resultados\">\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"hits_per_page\": 10,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"total_hits\": 3815\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n]<\/pre>\n<p><span style=\"font-weight: 400\">Damos m\u00faltiples opciones en esta consulta. La opci\u00f3n header permite pasar una cabecera personalizada al servidor. Content-Type : application\/json indica al servidor que los datos se proporcionan en formato JSON. Si tenemos un bucket protegido por contrase\u00f1a en Couchbase, entonces necesitamos pasar sus credenciales con la consulta. La opci\u00f3n user se puede utilizar para pasar un nombre de usuario y una contrase\u00f1a separados por dos puntos. La opci\u00f3n request especifica que se utiliza el m\u00e9todo POST.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Si desea recuperar s\u00f3lo los documentos de muestra-cerveza que devuelve la b\u00fasqueda anterior, puede escribir una consulta N1QL JOIN de la siguiente manera.<\/span><\/p>\n<pre class=\"lang:default decode:true\" title=\"Consulta N1QL\">SELECT ARRAY x.id for x in b1.result.hits END as hits,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0b1.result.total_hits as total,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0array_length(b1.result.hits),\r\n\u00a0\u00a0\u00a0\u00a0\u00a0b\r\nFROM (SELECT CURL(\"https:\/\/localhost:8094\/api\/index\/beers\/query\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\"request\":\"POST\",\"header\":\"Content-Type: application\/json\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"data\":'{\"explain\":false,\"fields\": [\"*\"],\"highlight\": {},\"query\": {\"query\": \"pale ale\"}}',\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"user\":\"Administrator:password\"}) result) b1\r\nINNER JOIN `beer-sample` b ON KEYS b1.result.hits[*].id LIMIT 1;<\/pre>\n<pre class=\"lang:default decode:true\" title=\"resultados\">\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"$1\": 10,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"b\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"abv\": 5.4,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"brewery_id\": \"stone_brewing_co\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"category\": \"North American Ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"description\": \"Our flagship ale, Stone Pale Ale is our Southern California interpretation of the classic British pale ale style. Deep amber in color, Stone Pale Ale is robust and full flavored. A delicate hop aroma is complemented by a rich maltiness. This is an ale for those who have learned to appreciate distinctive flavor. Stone Pale Ale is great by itself, or with food that requires a beer of character.\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"ibu\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"Stone Pale Ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"srm\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"style\": \"American-Style Pale Ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"beer\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"upc\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"updated\": \"2010-07-22 20:00:20\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"hits\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"stone_brewing_co-stone_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"flying_dog_brewery-classic_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"yards_brewing-yards_philadelphia_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"bell_s_brewery_inc-pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"sierra_nevada_brewing_co-sierra_nevada_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cooper_s_cave_ale_company-cooper_s_cave_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"appalachian_brewing_company-hoppy_trails_india_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"cooperstown_brewing_company-backyard_india_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"mogollon_brewing_company-superstition_pale_ale\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"troegs_brewing-troegs_pale_ale\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"total\": 3815\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]<\/pre>\n<p><span style=\"font-weight: 400\">Esto recuperar\u00e1 los ids de los documentos devueltos por la consulta FTS que busca pale ale, junto con el total de aciertos y todos los detalles del documento correspondiente en beer-sample.<\/span><\/p>\n<h2><b>API de Github <\/b><\/h2>\n<p><span style=\"font-weight: 400\">La API de Github es un poco diferente de las anteriores, ya que devuelve m\u00faltiples resultados en forma de una matriz JSON de valores de resultado. Consulte la documentaci\u00f3n de la API de Github en <\/span><a href=\"https:\/\/developer.github.com\/v3\/\"><span style=\"font-weight: 400\">https:\/\/developer.github.com\/v3\/<\/span><\/a><span style=\"font-weight: 400\"> para m\u00e1s detalles sobre lo que se puede consultar.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Digamos que quieres averiguar todos los repositorios vinculados a una cuenta de Github. La siguiente consulta lo hace<\/span><\/p>\n<h4><b>Solicitud de rizos<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"solicitud curl\">curl -H \"User-Agent: ikandaswamy\" https:\/\/api.github.com\/users\/ikandaswamy\/repos\r\n<\/pre>\n<h4><b>Consulta correspondiente<\/b><\/h4>\n<pre class=\"lang:default decode:true\" title=\"Consulta N1QL\">SELECT RAW list FROM CURL(\"https:\/\/api.github.com\/users\/ikandaswamy\/repos\")list LIMIT 1;\r\n<\/pre>\n<pre class=\"lang:default decode:true\" title=\"resultados\">\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"archive_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/{archive_format}{\/ref}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"assignees_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/assignees{\/user}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"blobs_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/git\/blobs{\/sha}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"branches_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/branches{\/branch}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"clone_url\": \"https:\/\/github.com\/ikandaswamy\/ds-algo.git\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"collaborators_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/collaborators{\/collaborator}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"comments_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/comments{\/number}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"commits_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/commits{\/sha}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"compare_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/compare\/{base}...{head}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"contents_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/contents\/{+path}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"contributors_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/contributors\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"created_at\": \"2017-09-07T22:42:03Z\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"default_branch\": \"master\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"deployments_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/deployments\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"description\": \"Use this to implement various fun problems while relearning Data Structures and Algorithms\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"downloads_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/downloads\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"events_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/events\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"fork\": false,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"forks\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"forks_count\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"forks_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/forks\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"full_name\": \"ikandaswamy\/ds-algo\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"git_commits_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/git\/commits{\/sha}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"git_refs_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/git\/refs{\/sha}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"git_tags_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/git\/tags{\/sha}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"git_url\": \"git:\/\/github.com\/ikandaswamy\/ds-algo.git\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"has_downloads\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"has_issues\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"has_pages\": false,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"has_projects\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"has_wiki\": true,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"homepage\": null,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"hooks_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/hooks\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"html_url\": \"https:\/\/github.com\/ikandaswamy\/ds-algo\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"id\": 102792479,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"issue_comment_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/issues\/comments{\/number}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"issue_events_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/issues\/events{\/number}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"issues_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/issues{\/number}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"keys_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/keys{\/key_id}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"labels_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/labels{\/name}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"language\": null,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"languages_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/languages\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"merges_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/merges\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"milestones_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/milestones{\/number}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"mirror_url\": null,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"name\": \"ds-algo\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"notifications_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/notifications{?since,all,participating}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"open_issues\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"open_issues_count\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"owner\": {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"avatar_url\": \"https:\/\/avatars1.githubusercontent.com\/u\/9203396?v=4\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"events_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/events{\/privacy}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"followers_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/followers\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"following_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/following{\/other_user}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"gists_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/gists{\/gist_id}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"gravatar_id\": \"\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"html_url\": \"https:\/\/github.com\/ikandaswamy\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"id\": 9203396,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"login\": \"ikandaswamy\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"organizations_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/orgs\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"received_events_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/received_events\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"repos_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/repos\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"site_admin\": false,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"starred_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/starred{\/owner}{\/repo}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"subscriptions_url\": \"https:\/\/api.github.com\/users\/ikandaswamy\/subscriptions\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"type\": \"User\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/api.github.com\/users\/ikandaswamy\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"private\": false,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"pulls_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/pulls{\/number}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"pushed_at\": \"2017-09-07T22:42:04Z\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"releases_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/releases{\/id}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"size\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"ssh_url\": \"git@github.com:ikandaswamy\/ds-algo.git\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"stargazers_count\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"stargazers_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/stargazers\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"statuses_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/statuses\/{sha}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"subscribers_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/subscribers\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"subscription_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/subscription\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"svn_url\": \"https:\/\/github.com\/ikandaswamy\/ds-algo\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"tags_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/tags\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"teams_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/teams\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"trees_url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\/git\/trees{\/sha}\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"updated_at\": \"2017-09-07T22:42:03Z\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"url\": \"https:\/\/api.github.com\/repos\/ikandaswamy\/ds-algo\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"watchers\": 0,\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"watchers_count\": 0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]<\/pre>\n<p><span style=\"font-weight: 400\">Si la cuenta tiene tres repositorios, la consulta devuelve tres resultados (aqu\u00ed he a\u00f1adido el l\u00edmite 1). La palabra clave RAW se utiliza para devolver el array de documentos que devuelve la consulta, sin un objeto envoltorio. Un punto que notar\u00e1s es que la opci\u00f3n de cabecera contiene el User-Agent con un nombre de usuario de github. Esto es ahora obligatorio para todas las peticiones a la API de Github.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Ahora, a partir de esta lista, digamos que le gustar\u00eda saber cu\u00e1l es la url de clonaci\u00f3n para cada uno de estos repos. La siguiente consulta logra esto<\/span><\/p>\n<pre class=\"lang:default decode:true\" title=\"Consulta N1QL\">SELECT clone_url FROM\r\n(SELECT RAW list\r\nFROM CURL(\"https:\/\/api.github.com\/users\/ikandaswamy\/repos\",\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\"header\":\"User-Agent: ikandaswamy\"}) list) s;<\/pre>\n<pre class=\"lang:default decode:true\" title=\"resultados\">\"results\": [\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"clone_url\": \"https:\/\/github.com\/ikandaswamy\/ds-algo.git\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"clone_url\": \"https:\/\/github.com\/ikandaswamy\/github-cheat-sheet.git\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0{\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"clone_url\": \"https:\/\/github.com\/ikandaswamy\/jsapp.git\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\r\n\u00a0\u00a0]<\/pre>\n<p><b style=\"color: #343e47;font-family: Lato, 'Helvetica Neue', Helvetica, Arial, sans-serif;font-size: 50px\">Resumen<\/b><\/p>\n<p><span style=\"font-weight: 400\">Como puedes ver con los ejemplos anteriores, usando la funci\u00f3n CURL, los usuarios de N1QL pueden ahora interactuar con cualquier API externa que devuelva resultados en formato JSON. Esto abre muchas posibilidades. Por ejemplo, si Couchbase contiene datos correspondientes a diferentes hoteles, entonces puedes utilizar la API de Google Maps para encontrar ubicaciones cercanas a cada uno de los hoteles correspondientes.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para disponer de un entorno seguro con la incorporaci\u00f3n de CURL() se han a\u00f1adido m\u00faltiples mejoras de seguridad. La siguiente es una breve lista<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CURL se ejecuta en el nodo de consulta dentro de un cl\u00faster.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">La funci\u00f3n CURL est\u00e1 desactivada por defecto.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CURL s\u00f3lo admite HTTP y HTTPS. Todos los dem\u00e1s protocolos est\u00e1n desactivados.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">No se permite la redirecci\u00f3n de URL. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">El encabezado personalizado para N1QL CURL es \"X-N1QL-User-Agent: couchbase\/n1ql\/1.7.0-N1QL\".<\/span><\/li>\n<li style=\"font-weight: 400\">El User-Agent es \"couchbase\/n1ql\/1.7.0-N1QL\".<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Restringir la cantidad de memoria para los resultados CURL utilizando result-cap. El l\u00edmite m\u00ednimo ser\u00e1 de 20 MB y el m\u00e1ximo de 64 MB.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">El rol FULL_ADMIN permitir\u00e1 el acceso a CURL. El rol QUERY_EXTERNAL_ACCESS puede ser asignado a un usuario por el FULL ADMIN. Esto permitir\u00e1 al usuario utilizar la funcionalidad CURL. <\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Los certificados deben almacenarse en la m\u00e1quina local - cada nodo de consulta dentro de un cluster. <\/span><span style=\"font-weight: 400\">Utilice ....\/Couchbase\/var\/lib\/couchbase\/n1qlcerts para almacenar los certificados.Utilice cacert para pasar el \"nombre\" del certificado a utilizar. S\u00f3lo son v\u00e1lidos los nombres, las rutas no son v\u00e1lidas. (Pasar una ruta provocar\u00e1 un error).<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">CURL lanza un error en caso de certificados inv\u00e1lidos\/expirados.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">El usuario tiene la posibilidad de poner puntos finales en la \"lista blanca\".<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">La implementaci\u00f3n N1QL de CURL utiliza la API golang libcurl -<\/span><a href=\"https:\/\/github.com\/andelf\/go-curl\"><span style=\"font-weight: 400\"> https:\/\/github.com\/andelf\/go-curl<\/span><\/a><\/p>\n<h2><b>Lista de opciones disponibles<\/b><\/h2>\n<h3><b>Opciones de seguridad<\/b><\/h3>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Opci\u00f3n<\/span><\/td>\n<td><span style=\"font-weight: 400\">Descripci\u00f3n<\/span><\/td>\n<td><span style=\"font-weight: 400\">valor<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">usuario<\/span><\/td>\n<td><span style=\"font-weight: 400\">Usuario y contrase\u00f1a del servidor<\/span><\/p>\n<p><span style=\"font-weight: 400\">Cuando la contrase\u00f1a est\u00e1 vac\u00eda se trata como una cadena de contrase\u00f1a vac\u00eda.<\/span><\/td>\n<td><span style=\"font-weight: 400\">NOMBRE DE USUARIO[:CONTRASE\u00d1A]<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">b\u00e1sico<\/span><\/td>\n<td><span style=\"font-weight: 400\">Utilizar autenticaci\u00f3n b\u00e1sica HTTP<\/span><\/td>\n<td><span style=\"font-weight: 400\">BOOLEANO (VERDADERO\/FALSO)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">inseguro \u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400\">Permitir conexiones a sitios SSL sin certificados (H)<\/span><\/td>\n<td><span style=\"font-weight: 400\">BOOLEANO (VERDADERO\/FALSO)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">anyauth<\/span><\/td>\n<td><span style=\"font-weight: 400\">curl para averiguar el m\u00e9todo de autenticaci\u00f3n por s\u00ed mismo, y utilizar el m\u00e1s seguro<\/span><\/td>\n<td><span style=\"font-weight: 400\">BOOLEANO (VERDADERO\/FALSO)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">cacert<\/span><\/td>\n<td><span style=\"font-weight: 400\">Especifique el nombre de archivo del certificado firmado por la CA<\/span><\/p>\n<p><span style=\"font-weight: 400\">Los certificados deben almacenarse en la m\u00e1quina local - cada nodo de consulta dentro de un cluster.<\/span><\/p>\n<p><span style=\"font-weight: 400\">\/Couchbase\/var\/lib\/couchbase\/n1qlcerts para almacenar certificados. Esto no es visible para el usuario.<\/span><\/p>\n<p><span style=\"font-weight: 400\">El nombre de archivo no puede contener una ruta. Si no coincide con el contenido existente del directorio n1qlcerts, la funci\u00f3n genera un error.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para los certificados caducados y no v\u00e1lidos lanzar un error.<\/span><\/td>\n<td><span style=\"font-weight: 400\">FILENAME (Este es el certificado, archivo pem para aws por ejemplo)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">resultado-cap<\/span><\/td>\n<td><span style=\"font-weight: 400\">Establecer la capacidad del b\u00fafer que almacena el resultado de la operaci\u00f3n CURL<\/span><\/td>\n<td><span style=\"font-weight: 400\">N\u00famero de MB. (El m\u00ednimo son 20 MB)<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><b>Otras opciones relacionadas con las transferencias<\/b><\/h3>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">Opci\u00f3n<\/span><\/td>\n<td><span style=\"font-weight: 400\">Descripci\u00f3n<\/span><\/td>\n<td><span style=\"font-weight: 400\">Valor<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">obtener, G<\/span><\/td>\n<td><span style=\"font-weight: 400\">Obtener solicitud para CURL<\/span><\/td>\n<td><span style=\"font-weight: 400\">BOOLEAN (verdadero\/falso)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">X, solicitud<\/span><\/td>\n<td><span style=\"font-weight: 400\">Establece el m\u00e9todo de solicitud. S\u00f3lo acepta GET o POST y distingue entre may\u00fasculas y min\u00fasculas.<\/span><\/p>\n<p><span style=\"font-weight: 400\">En todos los dem\u00e1s casos, se produce un error.<\/span><\/td>\n<td><span style=\"font-weight: 400\">{\"request\": \"POST\"}<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">tiempo de espera de conexi\u00f3n<\/span><\/td>\n<td><span style=\"font-weight: 400\">Tiempo m\u00e1ximo de conexi\u00f3n. <\/span><span style=\"font-weight: 400\">Debe contener el tiempo m\u00e1ximo en segundos que permite que dure la fase de conexi\u00f3n al servidor. Esto s\u00f3lo limita la fase de conexi\u00f3n, no tiene ning\u00fan impacto una vez que se ha conectado. P\u00f3ngalo a cero para cambiar al tiempo de espera de conexi\u00f3n incorporado por defecto - 300 segundos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Si el valor es flotante, lo truncamos al valor entero.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para todos los dem\u00e1s tipos (que no sean un n\u00famero) lanzar error.<\/span><\/td>\n<td><span style=\"font-weight: 400\">SEGUNDOS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">max-time<\/span><\/td>\n<td><span style=\"font-weight: 400\">Tiempo m\u00e1ximo permitido para la operaci\u00f3n de transferencia.<\/span><\/p>\n<p><span style=\"font-weight: 400\">El tiempo de espera por defecto es 0 (cero), lo que significa que nunca se agota durante la transferencia.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Si el valor es flotante, lo truncamos al valor entero.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para todos los dem\u00e1s tipos (que no sean un n\u00famero) lanzar error.<\/span><\/td>\n<td><span style=\"font-weight: 400\">SEGUNDOS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">datos \u00a0\u00a0\u00a0\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400\">Datos HTTP POST (H)<\/span><\/p>\n<p><span style=\"font-weight: 400\">Nos permite establecer todos los par\u00e1metros rest api para el endpoint dado.<\/span><\/td>\n<td><span style=\"font-weight: 400\">CADENA<\/span><\/p>\n<p><span style=\"font-weight: 400\">O<\/span><\/p>\n<p><span style=\"font-weight: 400\">[...cadena,cadena....]<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">cabecera \u00a0\u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400\">Pasar cadena de encabezado personalizada al servidor (H)<\/span><\/td>\n<td><span style=\"font-weight: 400\">CADENA<\/span><\/p>\n<p><span style=\"font-weight: 400\">O<\/span><\/p>\n<p><span style=\"font-weight: 400\">[...cadena,cadena....]<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">show-error<\/span><\/td>\n<td><span style=\"font-weight: 400\">Mostrar error.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Si es verdadero, muestra los errores cuando se producen.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Cuando es falso suprime los errores<\/span><\/td>\n<td><span style=\"font-weight: 400\">BOOLEANO (VERDADERO\/FALSO)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">silencioso<\/span><\/td>\n<td><span style=\"font-weight: 400\">Modo silencioso (no emite nada)<\/span><\/td>\n<td><span style=\"font-weight: 400\">BOOLEANO (VERDADERO\/FALSO)<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">keepalive-time<\/span><\/td>\n<td><span style=\"font-weight: 400\">Espera SEGUNDOS entre sondas keepalive para conectividad TCP de bajo nivel. (No afecta al nivel HTTP keep-alive)<\/span><\/td>\n<td><span style=\"font-weight: 400\">SEGUNDOS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">agente de usuario<\/span><\/td>\n<td><span style=\"font-weight: 400\">Valor para el User-Agent a enviar al servidor.<\/span><\/td>\n<td><span style=\"font-weight: 400\">CADENA<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">data-urlencode<\/span><\/td>\n<td><span style=\"font-weight: 400\">Codificar los datos y enviarlos al servidor.<\/span><\/p>\n<p><span style=\"font-weight: 400\">This is a test =&gt; this%20is%20a%20test \u00a0<\/span><\/td>\n<td><span style=\"font-weight: 400\">CADENA<\/span><\/p>\n<p><span style=\"font-weight: 400\">O<\/span><\/p>\n<p><span style=\"font-weight: 400\">[...cadena,cadena....]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>JSON is a helpful way to transmit data. Now, N1QL can query it thanks to a CURL update in Couchbase 5.0. See how to connect to various endpoints to do just that. N1QL has many functions that allow you to [&hellip;]<\/p>","protected":false},"author":6882,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1813,1812],"tags":[1771],"ppma_author":[9057],"class_list":["post-4078","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-security","category-n1ql-query","tag-curl"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>CURL Comes to N1QL: Querying External JSON Data - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Check out the examples which show using the CURL function, N1QL users can now interact with any external API\u2019s that return results in JSON format.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/curl-comes-n1ql-querying-external-json-data\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CURL Comes to N1QL: Querying External JSON Data\" \/>\n<meta property=\"og:description\" content=\"Check out the examples which show using the CURL function, N1QL users can now interact with any external API\u2019s that return results in JSON format.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/curl-comes-n1ql-querying-external-json-data\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-06T18:02:51+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:23:09+00:00\" \/>\n<meta name=\"author\" content=\"Isha Kandaswamy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isha Kandaswamy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/\"},\"author\":{\"name\":\"Isha Kandaswamy\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52\"},\"headline\":\"CURL Comes to N1QL: Querying External JSON Data\",\"datePublished\":\"2017-10-06T18:02:51+00:00\",\"dateModified\":\"2025-06-14T00:23:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/\"},\"wordCount\":2767,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"curl\"],\"articleSection\":[\"Couchbase Server\",\"Security\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/\",\"name\":\"CURL Comes to N1QL: Querying External JSON Data - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-10-06T18:02:51+00:00\",\"dateModified\":\"2025-06-14T00:23:09+00:00\",\"description\":\"Check out the examples which show using the CURL function, N1QL users can now interact with any external API\u2019s that return results in JSON format.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CURL Comes to N1QL: Querying External JSON Data\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52\",\"name\":\"Isha Kandaswamy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e8464106b598ad96e4e1446687ce93f6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g\",\"caption\":\"Isha Kandaswamy\"},\"description\":\"Isha Kandaswamy is a Senior Software Engineer at Couchbase. Isha is responsible for the development of designing the different features and tools for the N1QL Query Language -SQL for Json. Also, Designing and implementing features and tools for the N1QL query language.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/isha-kandaswamy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CURL Comes to N1QL: Querying External JSON Data - The Couchbase Blog","description":"Check out the examples which show using the CURL function, N1QL users can now interact with any external API\u2019s that return results in JSON format.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/curl-comes-n1ql-querying-external-json-data\/","og_locale":"es_MX","og_type":"article","og_title":"CURL Comes to N1QL: Querying External JSON Data","og_description":"Check out the examples which show using the CURL function, N1QL users can now interact with any external API\u2019s that return results in JSON format.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/curl-comes-n1ql-querying-external-json-data\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-10-06T18:02:51+00:00","article_modified_time":"2025-06-14T00:23:09+00:00","author":"Isha Kandaswamy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Isha Kandaswamy","Est. reading time":"15 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/"},"author":{"name":"Isha Kandaswamy","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52"},"headline":"CURL Comes to N1QL: Querying External JSON Data","datePublished":"2017-10-06T18:02:51+00:00","dateModified":"2025-06-14T00:23:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/"},"wordCount":2767,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["curl"],"articleSection":["Couchbase Server","Security","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/","url":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/","name":"CURL Comes to N1QL: Querying External JSON Data - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-10-06T18:02:51+00:00","dateModified":"2025-06-14T00:23:09+00:00","description":"Check out the examples which show using the CURL function, N1QL users can now interact with any external API\u2019s that return results in JSON format.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/curl-comes-n1ql-querying-external-json-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"CURL Comes to N1QL: Querying External JSON Data"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f236f76f209f447fbc8fd46d91eb7e52","name":"Isha Kandaswamy","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/e8464106b598ad96e4e1446687ce93f6","url":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","caption":"Isha Kandaswamy"},"description":"Isha Kandaswamy es Ingeniero de Software Senior en Couchbase. Isha es responsable del desarrollo del dise\u00f1o de las diferentes caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL -SQL para Json. Adem\u00e1s, dise\u00f1a e implementa caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/isha-kandaswamy\/"}]}},"authors":[{"term_id":9057,"user_id":6882,"is_guest":0,"slug":"isha-kandaswamy","display_name":"Isha Kandaswamy","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9c28181876ed38a9634b77ddbe73ada95b0f82838c0cce722be73968630d41e1?s=96&d=mm&r=g","author_category":"","last_name":"Kandaswamy","first_name":"Isha","job_title":"","user_url":"","description":"Isha Kandaswamy es Ingeniero de Software Senior en Couchbase. Isha es responsable del desarrollo del dise\u00f1o de las diferentes caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL -SQL para Json. Adem\u00e1s, dise\u00f1a e implementa caracter\u00edsticas y herramientas para el lenguaje de consulta N1QL."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/6882"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=4078"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/4078\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=4078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=4078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=4078"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=4078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}