Echolot
Referencia

Valores dinámicos

Todos los valores dinámicos de Echolot, con sus argumentos y un ejemplo, agrupados como en la lista que se abre al escribir llaves dobles.

Un valor dinámico es una función dentro de {{ }}: {{$uuid}}, {{$base64('heidi:alpenglow')}}, {{$responseJSONPath('auth/sign-in', '$.access_token')}}. Echolot lo calcula cuando se envía la solicitud. Los valores dinámicos funcionan donde funcionan las variables: la URL, las cabeceras, los cuerpos, los campos de autenticación, los mensajes y los ajustes. Para saber cómo elegirlos y editarlos en la app, consulta valores dinámicos.

Cómo escribirlos

  • Un valor dinámico empieza por $: {{$timestamp}}. Sin argumentos, los paréntesis son opcionales.
  • Los argumentos van entre paréntesis, separados por comas: texto entre comillas ('…' o "…"), números, nombres de variable sin comillas u otros valores dinámicos.
  • Los argumentos de texto pueden contener tokens propios: {{$base64('{{email}}:{{password}}')}}. Un }} dentro de comillas no cierra el token.
  • Todo lo que no se puede analizar se queda como lo escribiste y se notifica, así que un {{ suelto nunca rompe una solicitud.
{{$sha256('{{body}}', 'base64')}}
{{$date('yyyy-MM-dd', -86400, 'Europe/Zurich')}}
{{$hmacSha256(apiSecret, $timestamp)}}

Respuestas

Estos leen la última respuesta de otra solicitud guardada, indicada por su ruta (folder/request, como en auth/sign-in). Todos admiten un último argumento opcional que indica si esa solicitud se envía antes:

Último argumentoSignifica
'if-missing' (predeterminado)Envíala antes cuando aún no tiene respuesta.
'fresh'Envíala antes cada vez; en una ejecución, una vez por ejecución.
'latest'No la envíes nunca; usa la última respuesta.
ValorArgumentosQué da
$responseJSONPathSolicitud, JSONPathUn valor del cuerpo de la respuesta, elegido con JSONPath. {{$responseJSONPath('auth/sign-in', '$.access_token')}}
$responseKeyPathSolicitud, ruta de clavesUn valor elegido con una ruta de claves como data.items.0.id. {{$responseKeyPath('orders/list-orders', 'items.0.id')}}
$responseJqSolicitud, filtro jqLo que un filtro jq hace con el cuerpo; varios resultados salen uno por línea. {{$responseJq('catalog/list-products', '.items[0].sku')}}
$responseXPathSolicitud, XPathUn valor de una respuesta XML. {{$responseXPath('echo/xml', '/catalog/product[1]/@sku')}}
$responseRegexSolicitud, patrónLa primera coincidencia de una expresión regular en el cuerpo: su primer grupo, si lo tiene. {{$responseRegex('echo/html', '<title>(\\w+)</title>')}}
$responseHeaderSolicitud, cabeceraUna cabecera de la respuesta. {{$responseHeader('orders/create-order', 'Location')}}
$responseCookieSolicitud, cookieEl valor de una cookie que fijó la respuesta. {{$responseCookie('echo/set-cookie', 'flavour')}}
$responseStatusSolicitudEl código de estado. {{$responseStatus('auth/sign-in')}}
$responseBodySolicitudTodo el cuerpo, como texto. {{$responseBody('auth/who-am-i')}}
$responseBodyLengthSolicitudEl tamaño del cuerpo en bytes. {{$responseBodyLength('catalog/export')}}
$responseSolicitud, consultaCualquiera de los anteriores según la forma de la consulta: un JSONPath ($.token), un XPath (/a/b, o xpath:…), regex:…, jq:…, keypath:…, header:Name o cookie:Name. {{$response('auth/sign-in', 'header:Content-Type')}}

Por ejemplo, Who am I podría tomar su token directamente de Sign in, enviándola antes si hace falta:

Authorization: Bearer {{$responseJSONPath('auth/sign-in', '$.access_token')}}

Una solicitud que lee la respuesta de otra en círculo se rechaza, con el círculo indicado. Las capturas de respuesta son la otra forma de llevar valores de una solicitud a otra.

Solicitudes

Estos leen una solicitud tal como se enviaría, ya resuelta. El primer argumento es la ruta de una solicitud guardada, o vacío ('') para la solicitud que se está enviando.

ValorArgumentosQué da
$requestURLSolicitudSu URL, resuelta. {{$requestURL('')}}
$requestMethodSolicitudSu método. {{$requestMethod('')}}
$requestHeaderSolicitud, cabeceraUna cabecera, resuelta, incluido lo que añade su autenticación. {{$requestHeader('', 'Content-Type')}}
$requestQuerySolicitud, parámetroUn parámetro de consulta de su URL, decodificado. {{$requestQuery('', 'page')}}
$requestBodySolicitudSu cuerpo, resuelto, como texto. {{$requestBody('')}}
$requestJSONPathSolicitud, JSONPathUn valor de su cuerpo JSON. {{$requestJSONPath('orders/create-order', '$.lines[0].sku')}}
$requestJqSolicitud, filtro jqLo que un filtro jq hace con su cuerpo JSON. {{$requestJq('', '.lines[0].quantity')}}
$requestVariableSolicitud, variableUna variable tal como la ve esa solicitud. {{$requestVariable('auth/sign-in', 'email')}}

Lo habitual es firmar una solicitud con lo que envía:

X-Signature: {{$hmacSha256(apiSecret, $requestBody(''))}}

Codificación

ValorArgumentosQué da
$base64TextoEl texto en Base64. {{$base64('heidi:alpenglow')}}
$base64DecodeBase64Base64 o Base64URL decodificado a texto. {{$base64Decode('aGVpZGk=')}}
$base64UrlTextoEl texto en Base64URL, sin relleno. {{$base64Url('{"alg":"none"}')}}
$urlEncodeTextoEl texto con codificación porcentual para un componente de URL. {{$urlEncode('ultralight tent')}}
$urlDecodeTextoTexto con codificación porcentual decodificado; + sigue siendo +. {{$urlDecode('ultralight%20tent')}}
$hexTextoLos bytes UTF-8 del texto en hexadecimal. {{$hex('Grüezi')}}
$hexDecodeHexHexadecimal decodificado a texto. {{$hexDecode('6869')}}
$jsonEscapeTextoEl texto escapado para ir dentro de una cadena JSON, sin las comillas. {{$jsonEscape(note)}}
$newlineningunoUn salto de línea (\n).
$crningunoUn retorno de carro (\r).
$crlfningunoUn retorno de carro y un salto de línea (\r\n).
$tabningunoUn tabulador.
$unescapeSecuenciaTexto con las secuencias de escape convertidas en caracteres: \n, \r, \t, \0, \\, \xHH, \uHHHH. {{$unescape('café')}}
$basicAuthUsuario, contraseñaUn valor de Authorization para HTTP Basic: Basic y el Base64 de user:password. {{$basicAuth(email, password)}}
$jwtPayload, secreto, algoritmo (opcional)Un JWT del payload JSON, firmado con el secreto: HS256, salvo que elijas HS384 o HS512. {{$jwt('{"sub": "heidi"}', jwtSecret)}}

Hashes y firmas

Cada hash admite el texto y, opcionalmente, la salida: 'hex' (la predeterminada), 'base64' o 'base64url'. Cada HMAC admite la clave, el mensaje y, opcionalmente, la salida.

ValorArgumentosQué da
$md5Texto, salidaEl MD5 del texto. {{$md5('alpenglow')}}
$sha1Texto, salidaEl SHA-1. {{$sha1('alpenglow')}}
$sha224Texto, salidaEl SHA-224.
$sha256Texto, salidaEl SHA-256. {{$sha256($requestBody(''), 'base64')}}
$sha384Texto, salidaEl SHA-384.
$sha512Texto, salidaEl SHA-512.
$hmacMd5Clave, mensaje, salidaEl HMAC-MD5 del mensaje con la clave.
$hmacSha1Clave, mensaje, salidaEl HMAC-SHA1.
$hmacSha224Clave, mensaje, salidaEl HMAC-SHA224.
$hmacSha256Clave, mensaje, salidaEl HMAC-SHA256. {{$hmacSha256(apiSecret, $timestamp)}}
$hmacSha384Clave, mensaje, salidaEl HMAC-SHA384.
$hmacSha512Clave, mensaje, salidaEl HMAC-SHA512.

Hora

Todos son el momento en que se envía la solicitud.

ValorArgumentosQué da
$timestampningunoHora Unix en segundos: 1793525000.
$timestampMsningunoHora Unix en milisegundos: 1793525000123.
$isoTimestampningunoISO 8601 en UTC, con milisegundos: 2026-11-01T09:30:00.123Z.
$httpDateningunoUna fecha HTTP, para Date o If-Modified-Since: Sun, 01 Nov 2026 09:30:00 GMT.
$dateFormato, desplazamiento en segundos (opcional), zona horaria (opcional)La hora en un patrón de fecha Unicode, desplazada por el desplazamiento, en la zona horaria (UTC si no se indica). {{$date('yyyy-MM-dd')}}, {{$date('yyyy-MM-dd HH:mm', 3600, 'Europe/Zurich')}}

Aleatorio

Un valor nuevo en cada envío.

ValorArgumentosQué da
$uuidningunoUn UUID aleatorio, en minúsculas. También $guid y $randomUUID. {{$uuid}}
$randomIntMínimo, máximoUn número entero entre los dos, ambos incluidos. Con un argumento es el máximo, desde 0; sin ninguno, de 0 a 1000. {{$randomInt(1, 5)}}
$randomStringLongitud, caracteres (opcional)Caracteres aleatorios, 16 si no se indica (hasta 4096): letras y dígitos, o los caracteres indicados. {{$randomString(8, 'ABCDEF0123456789')}}
$randomHexBytesBytes aleatorios en hexadecimal, 16 si no se indica (hasta 2048); el doble de dígitos. {{$randomHex(8)}}

Create order de Alpenglow envía Idempotency-Key: {{$uuid}}, así que cada pedido que hace es nuevo.

Datos falsos

Valores inventados para cuerpos de solicitud, datos de prueba y rutas de mock: nombres, direcciones, empresas, precios, fechas, lorem ipsum y más, nuevos en cada envío. Los nombres son las variables dinámicas de Postman, así que las colecciones que las usan envían aquí valores reales. En la lista de {{ están en Datos falsos, por grupos.

Los argumentos son opcionales; los números van de -10^15 a 10^15. Los cuerpos de los mocks también pueden usar $uuid (como $randomUUID), $randomInt, $randomString, $randomHex, $timestamp, $timestampMs y $isoTimestamp de Aleatorio y Hora. Desde Terminal, echolot fake rellena una plantilla con ellos.

Comunes

ValorArgumentosQué da
$randomFloatMínimo, máximo, decimalesUn número decimal entre los límites (0 a 1000), con 2 decimales salvo que se indique otra cosa.
$randomDigitsLongitudUna cadena de dígitos aleatorios, 6 salvo que se indique una longitud.
$randomBooleanningunotrue o false.
$randomElementOpcionesUno de los argumentos, elegido al azar: $randomElement(active, paused, closed).
$randomAlphaNumericningunoUna letra o un dígito.
$randomColorningunoEl nombre de un color: teal.
$randomHexColorningunoUn color en hexadecimal: #3f8acb.
$randomAbbreviationningunoUna abreviatura técnica: SQL.

Nombres y empleos

ValorArgumentosQué da
$randomFirstNameningunoUn nombre de pila: Amelia.
$randomLastNameningunoUn apellido: Okafor.
$randomFullNameningunoUn nombre y un apellido: Amelia Okafor.
$randomNamePrefixningunoMr., Ms., Dr.…
$randomNameSuffixningunoJr., PhD…
$randomJobAreaningunoMobility, Security…
$randomJobDescriptorningunoLead, Senior…
$randomJobTitleningunoSenior Security Engineer.
$randomJobTypeningunoEngineer, Designer…

Internet

ValorArgumentosQué da
$randomEmailningunoUna dirección de correo: amelia.okafor@gmail.com.
$randomExampleEmailningunoUna dirección de correo en example.com, example.net o example.org.
$randomUserNameningunoUn nombre de usuario: amelia_okafor42.
$randomPasswordninguno15 letras y dígitos aleatorios.
$randomUrlningunohttps://northwind.io
$randomDomainNameningunonorthwind.io
$randomDomainSuffixningunocom, io, dev…
$randomDomainWordningunonorthwind
$randomIPningunoUna dirección IPv4: 192.168.14.7.
$randomIPV6ningunoUna dirección IPv6.
$randomMACAddressningunoUna dirección MAC: 3a:f1:0c:5e:92:b4.
$randomProtocolningunohttp o https.
$randomSemverningunoUna versión semántica: 2.14.3.
$randomLocaleningunoUna configuración regional: de_CH.
$randomUserAgentningunoEl User-Agent de un navegador.

Direcciones y lugares

ValorArgumentosQué da
$randomStreetNameningunoMaple Avenue
$randomStreetAddressninguno42 Maple Avenue
$randomCityningunoLisbon
$randomZipCodeningunoUn código postal de cinco dígitos. También $randomZip.
$randomCountryningunoPortugal
$randomCountryCodeningunoUn código de país ISO 3166: PT.
$randomLatitudeningunoUna latitud: 38.7223.
$randomLongitudeningunoUna longitud: -9.1393.

Teléfono

ValorArgumentosQué da
$randomPhoneNumberningunoUn número de teléfono: 555-201-4417.
$randomPhoneNumberExtningunoUn número de teléfono con prefijo de país: +44 555-201-4417.

Empresas

ValorArgumentosQué da
$randomCompanyNameningunoNorthwind Labs
$randomCompanySuffixningunoInc, LLC, GmbH…
$randomBsningunostreamline seamless platforms
$randomBsAdjectiveningunoseamless
$randomBsBuzzningunostreamline
$randomBsNounningunoplatforms
$randomCatchPhraseningunoAdaptive real-time framework
$randomCatchPhraseAdjectiveningunoAdaptive
$randomCatchPhraseDescriptorningunoreal-time
$randomCatchPhraseNounningunoframework

Finanzas

ValorArgumentosQué da
$randomPriceMínimo, máximoUn precio con dos decimales, de 1 a 1000 salvo que se indiquen límites.
$randomCurrencyCodeningunoEUR
$randomCurrencyNameningunoEuro
$randomCurrencySymbolninguno€
$randomBankAccountningunoUn número de cuenta de 8 dígitos.
$randomBankAccountNameningunoSavings Account
$randomBankAccountIbanningunoUn IBAN con dígitos de control válidos.
$randomBankAccountBicningunoUn BIC (código SWIFT).
$randomCreditCardMaskningunoLos cuatro últimos dígitos de una tarjeta.
$randomTransactionTypeningunodeposit, payment, refund…
$randomBitcoinningunoUna dirección bitcoin inventada.

Tiendas y productos

ValorArgumentosQué da
$randomProductningunoChair
$randomProductNameningunoErgonomic Wooden Chair
$randomProductAdjectiveningunoErgonomic
$randomProductMaterialningunoWooden
$randomDepartmentningunoGarden

Fechas

ValorArgumentosQué da
$randomDatePastningunoUn momento del último año, en ISO 8601.
$randomDateFutureningunoUn momento del próximo año, en ISO 8601.
$randomDateRecentningunoUn momento de los dos últimos días, en ISO 8601.
$randomDateningunoUn día del último año: 2026-03-14.
$randomWeekdayningunoTuesday
$randomMonthningunoMarch

Palabras

ValorArgumentosQué da
$randomWordningunoUna palabra.
$randomWordsCantidadUnas pocas palabras, 3 salvo que se indique una cantidad.
$randomNounningunorouter
$randomVerbningunocompile
$randomIngverbningunocompiling
$randomAdjectiveningunowireless
$randomPhraseningunoUna frase corta hecha con las palabras anteriores.

Lorem ipsum

ValorArgumentosQué da
$randomLoremWordningunodolor
$randomLoremWordsCantidadPalabras lorem, 3 salvo que se indique una cantidad.
$randomLoremSentenceningunoUna oración.
$randomLoremSentencesCantidadUnas pocas oraciones, de 2 a 6 salvo que se indique una cantidad.
$randomLoremParagraphningunoUn párrafo.
$randomLoremParagraphsCantidadPárrafos, 3 salvo que se indique una cantidad.
$randomLoremTextningunoUna oración o unas pocas.
$randomLoremSlugningunodolor-sit-amet
$randomLoremLinesningunoUnas pocas oraciones, una por línea.

Archivos

ValorArgumentosQué da
$randomFileNameningunorouter_matrix.pdf
$randomFileTypeningunoimage, text, video…
$randomFileExtningunopdf
$randomCommonFileNameningunoUn nombre de archivo con una extensión habitual.
$randomCommonFileTypeningunoimage, video, text…
$randomCommonFileExtningunopng
$randomFilePathninguno/var/reports/router_matrix.pdf
$randomDirectoryPathninguno/var/reports
$randomMimeTypeningunoapplication/pdf

Imágenes

ValorArgumentosQué da
$randomAvatarImageningunoLa dirección de una imagen de avatar.
$randomImageUrlningunoLa dirección de una imagen de 640×480.
$randomAbstractImageningunoLa dirección de una imagen de 640×480 sobre el tema abstract. Los otros temas: $randomAnimalsImage, $randomBusinessImage, $randomCatsImage, $randomCityImage, $randomFoodImage, $randomNightlifeImage, $randomFashionImage, $randomPeopleImage, $randomNatureImage, $randomSportsImage, $randomTransportImage.
$randomImageDataUriningunoUna pequeña imagen SVG como URI data:.

Bases de datos

ValorArgumentosQué da
$randomDatabaseColumnningunocreatedAt
$randomDatabaseTypeningunovarchar
$randomDatabaseCollationningunoutf8mb4_unicode_ci
$randomDatabaseEngineningunoInnoDB

Texto

ValorArgumentosQué da
$lowercaseTextoEl texto en minúsculas. {{$lowercase(email)}}
$uppercaseTextoEl texto en mayúsculas. {{$uppercase(productId)}}
$trimTextoEl texto sin espacios ni saltos de línea en ninguno de los dos extremos. {{$trim($responseBody('auth/who-am-i'))}}

Archivos y sistema

ValorArgumentosQué da
$fileRutaEl contenido de un archivo: una ruta relativa al espacio de trabajo, o una absoluta. {{$file('fixtures/order.json')}}
$envNombreUna variable de entorno del proceso de Echolot. {{$env('HOME')}}

Valores dinámicos y agentes

Cuando un agente de IA envía una solicitud (mediante el servidor MCP de Echolot o el Asistente), $env no da nada y $file solo lee archivos dentro del espacio de trabajo. Los valores secretos nunca llegan al agente. Consulta agentes.

En esta página