動的な値
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' | 毎回、先に送信します。ランでは、1回の実行につき1度です。 |
'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フィルタがボディから作った結果。複数の結果は1行に1つずつ。{{$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')}}別のリクエストのレスポンスを循環して読み取るリクエストは、循環の経路を示して拒否されます。 リクエスト間で値を受け渡すもう1つの方法は、レスポンスのキャプチャです。
リクエスト
これらは、送信されるとおりに解決されたリクエストを読み取ります。最初の引数は保存済みのリクエストのパスで、送信中のリクエストを指す場合は空('')にします。
| 値 | 引数 | 得られるもの |
|---|---|---|
$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')}} |
$base64Decode | Base64 | Base64またはBase64URLをデコードしたテキスト。{{$base64Decode('aGVpZGk=')}} |
$base64Url | テキスト | パディングなしのBase64URLにしたテキスト。{{$base64Url('{"alg":"none"}')}} |
$urlEncode | テキスト | URLの構成要素としてパーセントエンコードしたテキスト。{{$urlEncode('ultralight tent')}} |
$urlDecode | テキスト | パーセントエンコードされたテキストをデコードします。+は+のままです。{{$urlDecode('ultralight%20tent')}} |
$hex | テキスト | テキストのUTF-8バイトを16進数にしたもの。{{$hex('Grüezi')}} |
$hexDecode | 16進数 | 16進数をデコードしたテキスト。{{$hexDecode('6869')}} |
$jsonEscape | テキスト | JSON文字列の中に入れられるようにエスケープしたテキスト(引用符は含みません)。{{$jsonEscape(note)}} |
$newline | なし | ラインフィード(\n)。 |
$cr | なし | キャリッジリターン(\r)。 |
$crlf | なし | キャリッジリターンとラインフィード(\r\n)。 |
$tab | なし | タブ。 |
$unescape | シーケンス | エスケープシーケンスを文字に変換したテキスト:\n、\r、\t、\0、\\、\xHH、\uHHHH。{{$unescape('café')}} |
$basicAuth | ユーザー、パスワード | HTTP Basic用のAuthorizationの値:Basic とuser:passwordのBase64。{{$basicAuth(email, password)}} |
$jwt | ペイロード、シークレット、アルゴリズム(省略可) | JSONペイロードをシークレットで署名したJWT。HS384またはHS512を選ばない限りHS256。{{$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 | なし | UTCのISO 8601形式(ミリ秒付き):2026-11-01T09:30:00.123Z。 |
$httpDate | なし | DateやIf-Modified-Since用のHTTP日付:Sun, 01 Nov 2026 09:30:00 GMT。 |
$date | フォーマット、秒単位のオフセット(省略可)、タイムゾーン(省略可) | Unixの日付パターンで表した時刻。オフセット分だけずらし、指定したタイムゾーン(指定がなければUTC)で表します。{{$date('yyyy-MM-dd')}}、{{$date('yyyy-MM-dd HH:mm', 3600, 'Europe/Zurich')}} |
ランダム
送信のたびに新しい値になります。
| 値 | 引数 | 得られるもの |
|---|---|---|
$uuid | なし | ランダムなUUID(小文字)。$guidと$randomUUIDも同じです。{{$uuid}} |
$randomInt | 最小値、最大値 | 2つの値の間(両端を含む)の整数。引数が1つなら0からその値まで、なければ0から1000。{{$randomInt(1, 5)}} |
$randomString | 長さ、文字(省略可) | ランダムな文字列。長さの指定がなければ16(最大4096)。英数字、または指定した文字から作られます。{{$randomString(8, 'ABCDEF0123456789')}} |
$randomHex | バイト数 | ランダムなバイト列を16進数にしたもの。指定がなければ16バイト(最大2048)で、桁数はその2倍です。{{$randomHex(8)}} |
AlpenglowのCreate orderはIdempotency-Key: {{$uuid}}を送信するので、送信される注文はそのつど新しいものになります。
ダミーデータ
リクエストボディ、テストデータ、モックのルート用の作り物の値です。名前、住所、会社、価格、日付、ロレムイプサムなどがあり、送信のたびに新しくなります。
名前は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 | 選択肢 | 引数のうちランダムに選んだ1つ:$randomElement(active, paused, closed)。 |
$randomAlphaNumeric | なし | 英字または数字1文字。 |
$randomColor | なし | 色の名前:teal。 |
$randomHexColor | なし | 16進数の色:#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 | なし | 5桁の郵便番号。$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 | 最小値、最大値 | 小数2桁の価格。範囲の指定がなければ1から1000。 |
$randomCurrencyCode | なし | EUR |
$randomCurrencyName | なし | Euro |
$randomCurrencySymbol | なし | € |
$randomBankAccount | なし | 8桁の口座番号。 |
$randomBankAccountName | なし | Savings Account |
$randomBankAccountIban | なし | チェックディジットが正しいIBAN。 |
$randomBankAccountBic | なし | BIC(SWIFTコード)。 |
$randomCreditCardMask | なし | カードの下4桁。 |
$randomTransactionType | なし | deposit、payment、refund… |
$randomBitcoin | なし | 作り物のビットコインアドレス。 |
ショップと商品
| 値 | 引数 | 得られるもの |
|---|---|---|
$randomProduct | なし | Chair |
$randomProductName | なし | Ergonomic Wooden Chair |
$randomProductAdjective | なし | Ergonomic |
$randomProductMaterial | なし | Wooden |
$randomDepartment | なし | Garden |
日付
| 値 | 引数 | 得られるもの |
|---|---|---|
$randomDatePast | なし | 過去1年間のある時点(ISO 8601)。 |
$randomDateFuture | なし | 今後1年間のある時点(ISO 8601)。 |
$randomDateRecent | なし | 過去2日間のある時点(ISO 8601)。 |
$randomDate | なし | 過去1年間のある日:2026-03-14。 |
$randomWeekday | なし | Tuesday |
$randomMonth | なし | March |
単語
| 値 | 引数 | 得られるもの |
|---|---|---|
$randomWord | なし | 単語1つ。 |
$randomWords | 個数 | 数個の単語。個数の指定がなければ3個。 |
$randomNoun | なし | router |
$randomVerb | なし | compile |
$randomIngverb | なし | compiling |
$randomAdjective | なし | wireless |
$randomPhrase | なし | 上記の単語で作った短いフレーズ。 |
ロレムイプサム
| 値 | 引数 | 得られるもの |
|---|---|---|
$randomLoremWord | なし | dolor |
$randomLoremWords | 個数 | ロレムイプサムの単語。個数の指定がなければ3個。 |
$randomLoremSentence | なし | 1文。 |
$randomLoremSentences | 個数 | 数文。個数の指定がなければ2〜6文。 |
$randomLoremParagraph | なし | 1段落。 |
$randomLoremParagraphs | 個数 | 段落。個数の指定がなければ3段落。 |
$randomLoremText | なし | 1文から数文。 |
$randomLoremSlug | なし | dolor-sit-amet |
$randomLoremLines | なし | 数文を1行に1文ずつ。 |
ファイル
| 値 | 引数 | 得られるもの |
|---|---|---|
$randomFileName | なし | router_matrix.pdf |
$randomFileType | なし | image、text、video… |
$randomFileExt | なし | |
$randomCommonFileName | なし | 一般的な拡張子のファイル名。 |
$randomCommonFileType | なし | image、video、text… |
$randomCommonFileExt | なし | png |
$randomFilePath | なし | /var/reports/router_matrix.pdf |
$randomDirectoryPath | なし | /var/reports |
$randomMimeType | なし | application/pdf |
画像
| 値 | 引数 | 得られるもの |
|---|---|---|
$randomAvatarImage | なし | アバター画像のアドレス。 |
$randomImageUrl | なし | 640×480の画像のアドレス。 |
$randomAbstractImage | なし | abstractをテーマにした640×480の画像のアドレス。ほかのテーマ:$randomAnimalsImage、$randomBusinessImage、$randomCatsImage、$randomCityImage、$randomFoodImage、$randomNightlifeImage、$randomFashionImage、$randomPeopleImage、$randomNatureImage、$randomSportsImage、$randomTransportImage。 |
$randomImageDataUri | なし | data: URIとしての小さなSVG画像。 |
データベース
| 値 | 引数 | 得られるもの |
|---|---|---|
$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')}} |
動的な値とエージェント
AIエージェントがリクエストを送信するとき(EcholotのMCPサーバまたはアシスタント経由)、$envは何も返さず、$fileはワークスペース内のファイルだけを読み取ります。シークレットの値がエージェントに渡ることはありません。
エージェントを参照してください。