Echolot
Справочник

Динамические значения

Все динамические значения Echolot с аргументами и примерами, сгруппированные так же, как в списке подсказок, который появляется после двух открывающих фигурных скобок.

Динамическое значение — это функция внутри {{ }}: {{$uuid}}, {{$base64('heidi:alpenglow')}}, {{$responseJSONPath('auth/sign-in', '$.access_token')}}. Echolot вычисляет её при отправке запроса. Динамические значения работают везде, где работают переменные: в URL, заголовках, телах, полях авторизации, сообщениях и настройках. О том, как выбирать и править их в приложении, см. динамические значения.

Как их писать

  • Динамическое значение начинается с $: {{$timestamp}}. Если аргументов нет, скобки можно не писать.
  • Аргументы идут в скобках через запятую: текст в кавычках ('…' или "…"), числа, имена переменных без кавычек или другие динамические значения.
  • В текстовых аргументах могут быть собственные токены: {{$base64('{{email}}:{{password}}')}}. }} внутри кавычек токен не завершает.
  • Всё, что не удалось разобрать, остаётся как вы написали, и об этом сообщается, поэтому случайная {{ никогда не сломает запрос.
{{$sha256('{{body}}', 'base64')}}
{{$date('yyyy-MM-dd', -86400, 'Europe/Zurich')}}
{{$hmacSha256(apiSecret, $timestamp)}}

Ответы

Эти значения читают последний ответ другого сохранённого запроса, заданного его путём (folder/request, например auth/sign-in). У каждого есть необязательный последний аргумент, который говорит, нужно ли сначала отправить этот запрос:

Последний аргументЧто значит
'if-missing' (по умолчанию)Сначала отправить, если ответа ещё нет.
'fresh'Каждый раз отправлять сначала; в прогоне — один раз за прогон.
'latest'Никогда не отправлять; взять последний ответ.
ЗначениеАргументыЧто даёт
$responseJSONPathЗапрос, JSONPathЗначение из тела ответа, выбранное по JSONPath. {{$responseJSONPath('auth/sign-in', '$.access_token')}}
$responseKeyPathЗапрос, путь по ключамЗначение, выбранное путём по ключам, например data.items.0.id. {{$responseKeyPath('orders/list-orders', 'items.0.id')}}
$responseJqЗапрос, фильтр jqРезультат применения фильтра jq к телу; если результатов несколько, каждый на своей строке. {{$responseJq('catalog/list-products', '.items[0].sku')}}
$responseXPathЗапрос, XPathЗначение из ответа в формате XML. {{$responseXPath('echo/xml', '/catalog/product[1]/@sku')}}
$responseRegexЗапрос, шаблонПервое совпадение регулярного выражения в теле: его первая группа, если она есть. {{$responseRegex('echo/html', '<title>(\\w+)</title>')}}
$responseHeaderЗапрос, заголовокЗаголовок ответа. {{$responseHeader('orders/create-order', 'Location')}}
$responseCookieЗапрос, cookieЗначение cookie, установленного ответом. {{$responseCookie('echo/set-cookie', 'flavour')}}
$responseStatusЗапросКод состояния. {{$responseStatus('auth/sign-in')}}
$responseBodyЗапросВсё тело как текст. {{$responseBody('auth/who-am-i')}}
$responseBodyLengthЗапросРазмер тела в байтах. {{$responseBodyLength('catalog/export')}}
$responseЗапрос, выражениеЛюбое из перечисленного, в зависимости от вида выражения: JSONPath ($.token), XPath (/a/b или xpath:…), regex:…, jq:…, keypath:…, header:Name или cookie:Name. {{$response('auth/sign-in', 'header:Content-Type')}}

Например, Who am I может брать токен прямо из Sign in, при необходимости отправляя его сначала:

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

Запрос, который по кругу читает ответ другого запроса, отклоняется с указанием этого круга. Захваты из ответов — другой способ переносить значения между запросами.

Запросы

Эти значения читают запрос в том виде, в каком он был бы отправлен, с подставленными значениями. Первый аргумент — путь сохранённого запроса или пустая строка ('') для запроса, который сейчас отправляется.

ЗначениеАргументыЧто даёт
$requestURLЗапросЕго URL с подставленными значениями. {{$requestURL('')}}
$requestMethodЗапросЕго метод. {{$requestMethod('')}}
$requestHeaderЗапрос, заголовокЗаголовок с подставленными значениями, включая то, что добавляет авторизация. {{$requestHeader('', 'Content-Type')}}
$requestQueryЗапрос, параметрПараметр запроса из его URL, декодированный. {{$requestQuery('', 'page')}}
$requestBodyЗапросЕго тело с подставленными значениями, как текст. {{$requestBody('')}}
$requestJSONPathЗапрос, JSONPathЗначение из его тела JSON. {{$requestJSONPath('orders/create-order', '$.lines[0].sku')}}
$requestJqЗапрос, фильтр jqРезультат применения фильтра jq к его телу JSON. {{$requestJq('', '.lines[0].quantity')}}
$requestVariableЗапрос, переменнаяПеременная в том виде, в каком её видит этот запрос. {{$requestVariable('auth/sign-in', 'email')}}

Обычно их используют, чтобы подписать запрос тем, что он отправляет:

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

Кодирование

ЗначениеАргументыЧто даёт
$base64ТекстТекст в Base64. {{$base64('heidi:alpenglow')}}
$base64DecodeBase64Base64 или Base64URL, декодированный в текст. {{$base64Decode('aGVpZGk=')}}
$base64UrlТекстТекст в Base64URL, без заполнения. {{$base64Url('{"alg":"none"}')}}
$urlEncodeТекстТекст, закодированный с процентным кодированием для компонента URL. {{$urlEncode('ultralight tent')}}
$urlDecodeТекстТекст с процентным кодированием, декодированный; + остаётся +. {{$urlDecode('ultralight%20tent')}}
$hexТекстБайты текста в UTF-8 в шестнадцатеричном виде. {{$hex('Grüezi')}}
$hexDecodeHexШестнадцатеричная запись, декодированная в текст. {{$hexDecode('6869')}}
$jsonEscapeТекстТекст, экранированный для вставки внутрь строки JSON, без кавычек. {{$jsonEscape(note)}}
$newlineнетПеревод строки (\n).
$crнетВозврат каретки (\r).
$crlfнетВозврат каретки и перевод строки (\r\n).
$tabнетТабуляция.
$unescapeПоследовательностьТекст, в котором управляющие последовательности заменены символами: \n, \r, \t, \0, \\, \xHH, \uHHHH. {{$unescape('café')}}
$basicAuthПользователь, парольЗначение Authorization для HTTP Basic: Basic и Base64 от user:password. {{$basicAuth(email, password)}}
$jwtПолезная нагрузка, секрет, алгоритм (необязательно)JWT с полезной нагрузкой JSON, подписанный секретом: HS256, если вы не выбрали HS384 или HS512. {{$jwt('{"sub": "heidi"}', jwtSecret)}}

Хеши и подписи

Каждый хеш принимает текст и, необязательно, формат вывода: 'hex' (по умолчанию), 'base64' или 'base64url'. Каждый HMAC принимает ключ, сообщение и, необязательно, формат вывода.

ЗначениеАргументыЧто даёт
$md5Текст, выводMD5 текста. {{$md5('alpenglow')}}
$sha1Текст, выводSHA-1. {{$sha1('alpenglow')}}
$sha224Текст, выводSHA-224.
$sha256Текст, выводSHA-256. {{$sha256($requestBody(''), 'base64')}}
$sha384Текст, выводSHA-384.
$sha512Текст, выводSHA-512.
$hmacMd5Ключ, сообщение, выводHMAC-MD5 сообщения с этим ключом.
$hmacSha1Ключ, сообщение, выводHMAC-SHA1.
$hmacSha224Ключ, сообщение, выводHMAC-SHA224.
$hmacSha256Ключ, сообщение, выводHMAC-SHA256. {{$hmacSha256(apiSecret, $timestamp)}}
$hmacSha384Ключ, сообщение, выводHMAC-SHA384.
$hmacSha512Ключ, сообщение, выводHMAC-SHA512.

Время

Все эти значения относятся к моменту отправки запроса.

ЗначениеАргументыЧто даёт
$timestampнетВремя Unix в секундах: 1793525000.
$timestampMsнетВремя Unix в миллисекундах: 1793525000123.
$isoTimestampнетISO 8601 в UTC, с миллисекундами: 2026-11-01T09:30:00.123Z.
$httpDateнетДата HTTP, для Date или If-Modified-Since: Sun, 01 Nov 2026 09:30:00 GMT.
$dateФормат, смещение в секундах (необязательно), часовой пояс (необязательно)Время по шаблону даты Unicode, сдвинутое на смещение, в заданном часовом поясе (UTC, если не указан). {{$date('yyyy-MM-dd')}}, {{$date('yyyy-MM-dd HH:mm', 3600, 'Europe/Zurich')}}

Случайные значения

Новое значение при каждой отправке.

ЗначениеАргументыЧто даёт
$uuidнетСлучайный UUID в нижнем регистре. Также $guid и $randomUUID. {{$uuid}}
$randomIntМинимум, максимумЦелое число между двумя значениями, включая оба. Один аргумент — максимум, от 0; без аргументов — от 0 до 1000. {{$randomInt(1, 5)}}
$randomStringДлина, символы (необязательно)Случайные символы, 16, если не указано (до 4096): буквы и цифры или заданные символы. {{$randomString(8, 'ABCDEF0123456789')}}
$randomHexБайтыСлучайные байты в шестнадцатеричном виде, 16, если не указано (до 2048); цифр вдвое больше. {{$randomHex(8)}}

Запрос Create order в Alpenglow отправляет Idempotency-Key: {{$uuid}}, так что каждый его заказ — новый.

Тестовые данные

Выдуманные значения для тел запросов, тестовых данных и маршрутов мока: имена, адреса, компании, цены, даты, lorem ipsum и многое другое, каждый раз новые. Имена взяты из динамических переменных Postman, поэтому коллекции, которые ими пользуются, отправляют здесь настоящие значения. В списке {{ они находятся в разделе Тестовые данные, по группам.

Аргументы необязательны; числа принимаются от -10^15 до 10^15. В телах моков можно пользоваться также $uuid (как $randomUUID), $randomInt, $randomString, $randomHex, $timestamp, $timestampMs и $isoTimestamp из разделов Случайные значения и Время. Из Терминала echolot fake заполняет ими шаблон.

Общие

ЗначениеАргументыЧто даёт
$randomFloatМинимум, максимум, число знаковДесятичное число между границами (от 0 до 1000), с 2 знаками после запятой, если не указано иное.
$randomDigitsДлинаСтрока из случайных цифр, 6, если длина не указана.
$randomBooleanнетtrue или false.
$randomElementВариантыОдин из аргументов, выбранный случайно: $randomElement(active, paused, closed).
$randomAlphaNumericнетОдна буква или цифра.
$randomColorнетНазвание цвета: teal.
$randomHexColorнетЦвет в шестнадцатеричном виде: #3f8acb.
$randomAbbreviationнетТехническая аббревиатура: SQL.

Имена и должности

ЗначениеАргументыЧто даёт
$randomFirstNameнетИмя: Amelia.
$randomLastNameнетФамилия: Okafor.
$randomFullNameнетИмя и фамилия: Amelia Okafor.
$randomNamePrefixнетMr., Ms., Dr.…
$randomNameSuffixнетJr., PhD…
$randomJobAreaнетMobility, Security…
$randomJobDescriptorнетLead, Senior…
$randomJobTitleнетSenior Security Engineer.
$randomJobTypeнетEngineer, Designer…

Интернет

ЗначениеАргументыЧто даёт
$randomEmailнетАдрес электронной почты: amelia.okafor@gmail.com.
$randomExampleEmailнетАдрес электронной почты на example.com, example.net или example.org.
$randomUserNameнетИмя пользователя: amelia_okafor42.
$randomPasswordнет15 случайных букв и цифр.
$randomUrlнетhttps://northwind.io
$randomDomainNameнетnorthwind.io
$randomDomainSuffixнетcom, io, dev…
$randomDomainWordнетnorthwind
$randomIPнетАдрес IPv4: 192.168.14.7.
$randomIPV6нетАдрес IPv6.
$randomMACAddressнетMAC-адрес: 3a:f1:0c:5e:92:b4.
$randomProtocolнетhttp или https.
$randomSemverнетСемантическая версия: 2.14.3.
$randomLocaleнетЛокаль: de_CH.
$randomUserAgentнетUser-Agent браузера.

Адреса и места

ЗначениеАргументыЧто даёт
$randomStreetNameнетMaple Avenue
$randomStreetAddressнет42 Maple Avenue
$randomCityнетLisbon
$randomZipCodeнетПятизначный почтовый индекс. Также $randomZip.
$randomCountryнетPortugal
$randomCountryCodeнетКод страны по ISO 3166: PT.
$randomLatitudeнетШирота: 38.7223.
$randomLongitudeнетДолгота: -9.1393.

Телефон

ЗначениеАргументыЧто даёт
$randomPhoneNumberнетНомер телефона: 555-201-4417.
$randomPhoneNumberExtнетНомер телефона с кодом страны: +44 555-201-4417.

Компании

ЗначениеАргументыЧто даёт
$randomCompanyNameнетNorthwind Labs
$randomCompanySuffixнетInc, LLC, GmbH…
$randomBsнетstreamline seamless platforms
$randomBsAdjectiveнетseamless
$randomBsBuzzнетstreamline
$randomBsNounнетplatforms
$randomCatchPhraseнетAdaptive real-time framework
$randomCatchPhraseAdjectiveнетAdaptive
$randomCatchPhraseDescriptorнетreal-time
$randomCatchPhraseNounнетframework

Финансы

ЗначениеАргументыЧто даёт
$randomPriceМинимум, максимумЦена с двумя знаками после запятой, от 1 до 1000, если границы не указаны.
$randomCurrencyCodeнетEUR
$randomCurrencyNameнетEuro
$randomCurrencySymbolнет€
$randomBankAccountнетНомер счёта из 8 цифр.
$randomBankAccountNameнетSavings Account
$randomBankAccountIbanнетIBAN с правильными контрольными цифрами.
$randomBankAccountBicнетBIC (код SWIFT).
$randomCreditCardMaskнетПоследние четыре цифры карты.
$randomTransactionTypeнетdeposit, payment, refund…
$randomBitcoinнетВыдуманный биткойн-адрес.

Магазины и товары

ЗначениеАргументыЧто даёт
$randomProductнетChair
$randomProductNameнетErgonomic Wooden Chair
$randomProductAdjectiveнетErgonomic
$randomProductMaterialнетWooden
$randomDepartmentнетGarden

Даты

ЗначениеАргументыЧто даёт
$randomDatePastнетМомент за последний год, ISO 8601.
$randomDateFutureнетМомент в течение следующего года, ISO 8601.
$randomDateRecentнетМомент за последние два дня, ISO 8601.
$randomDateнетДень за последний год: 2026-03-14.
$randomWeekdayнетTuesday
$randomMonthнетMarch

Слова

ЗначениеАргументыЧто даёт
$randomWordнетСлово.
$randomWordsКоличествоНесколько слов, 3, если количество не указано.
$randomNounнетrouter
$randomVerbнетcompile
$randomIngverbнетcompiling
$randomAdjectiveнетwireless
$randomPhraseнетКороткая фраза из перечисленных выше слов.

Lorem ipsum

ЗначениеАргументыЧто даёт
$randomLoremWordнетdolor
$randomLoremWordsКоличествоСлова lorem, 3, если количество не указано.
$randomLoremSentenceнетОдно предложение.
$randomLoremSentencesКоличествоНесколько предложений, от 2 до 6, если количество не указано.
$randomLoremParagraphнетОдин абзац.
$randomLoremParagraphsКоличествоАбзацы, 3, если количество не указано.
$randomLoremTextнетПредложение или несколько.
$randomLoremSlugнетdolor-sit-amet
$randomLoremLinesнетНесколько предложений, по одному на строке.

Файлы

ЗначениеАргументыЧто даёт
$randomFileNameнетrouter_matrix.pdf
$randomFileTypeнетimage, text, video…
$randomFileExtнетpdf
$randomCommonFileNameнетИмя файла с распространённым расширением.
$randomCommonFileTypeнетimage, video, text…
$randomCommonFileExtнетpng
$randomFilePathнет/var/reports/router_matrix.pdf
$randomDirectoryPathнет/var/reports
$randomMimeTypeнетapplication/pdf

Изображения

ЗначениеАргументыЧто даёт
$randomAvatarImageнетАдрес изображения аватара.
$randomImageUrlнетАдрес изображения 640×480.
$randomAbstractImageнетАдрес изображения 640×480 на тему abstract. Другие темы: $randomAnimalsImage, $randomBusinessImage, $randomCatsImage, $randomCityImage, $randomFoodImage, $randomNightlifeImage, $randomFashionImage, $randomPeopleImage, $randomNatureImage, $randomSportsImage, $randomTransportImage.
$randomImageDataUriнетНебольшое изображение SVG в виде data: URI.

Базы данных

ЗначениеАргументыЧто даёт
$randomDatabaseColumnнетcreatedAt
$randomDatabaseTypeнетvarchar
$randomDatabaseCollationнетutf8mb4_unicode_ci
$randomDatabaseEngineнетInnoDB

Текст

ЗначениеАргументыЧто даёт
$lowercaseТекстТекст в нижнем регистре. {{$lowercase(email)}}
$uppercaseТекстТекст в верхнем регистре. {{$uppercase(productId)}}
$trimТекстТекст без пробелов и переводов строки по краям. {{$trim($responseBody('auth/who-am-i'))}}

Файлы и система

ЗначениеАргументыЧто даёт
$fileПутьСодержимое файла: путь относительно рабочего пространства или абсолютный. {{$file('fixtures/order.json')}}
$envИмяПеременная окружения процесса Echolot. {{$env('HOME')}}

Динамические значения и агенты

Когда запрос отправляет ИИ-агент (через MCP-сервер Echolot или Ассистента), $env ничего не возвращает, а $file читает только файлы внутри рабочего пространства. Секретные значения никогда не попадают к агенту. См. агенты.

На этой странице