Echolot
Référence

Valeurs dynamiques

Toutes les valeurs dynamiques d’Echolot, avec leurs arguments et un exemple, regroupées comme dans la liste qui s’ouvre quand vous tapez deux accolades ouvrantes.

Une valeur dynamique est une fonction placée dans {{ }} : {{$uuid}}, {{$base64('heidi:alpenglow')}}, {{$responseJSONPath('auth/sign-in', '$.access_token')}}. Echolot la calcule à l’envoi de la requête. Les valeurs dynamiques fonctionnent partout où les variables fonctionnent : l’URL, les en-têtes, les corps, les champs d’auth, les messages et les réglages. Pour savoir comment les choisir et les modifier dans l’app, voir valeurs dynamiques.

Les écrire

  • Une valeur dynamique commence par $ : {{$timestamp}}. Sans arguments, les parenthèses sont facultatives.
  • Les arguments se placent entre parenthèses, séparés par des virgules : du texte entre guillemets ('…' ou "…"), des nombres, des noms de variables sans guillemets, ou d’autres valeurs dynamiques.
  • Les arguments de texte peuvent contenir leurs propres jetons : {{$base64('{{email}}:{{password}}')}}. Un }} entre guillemets ne termine pas le jeton.
  • Tout ce qui ne s’analyse pas reste tel que vous l’avez écrit et est signalé : un {{ isolé ne casse donc jamais une requête.
{{$sha256('{{body}}', 'base64')}}
{{$date('yyyy-MM-dd', -86400, 'Europe/Zurich')}}
{{$hmacSha256(apiSecret, $timestamp)}}

Réponses

Ces valeurs lisent la dernière réponse d’une autre requête enregistrée, désignée par son chemin (folder/request, comme dans auth/sign-in). Chacune accepte un dernier argument facultatif qui indique si cette requête est envoyée d’abord :

Dernier argumentSignification
'if-missing' (par défaut)L’envoyer d’abord si elle n’a pas encore de réponse.
'fresh'L’envoyer d’abord à chaque fois ; dans une exécution, une fois par exécution.
'latest'Ne jamais l’envoyer ; utiliser la dernière réponse.
ValeurArgumentsCe qu’elle donne
$responseJSONPathRequête, JSONPathUne valeur du corps de la réponse, choisie avec JSONPath. {{$responseJSONPath('auth/sign-in', '$.access_token')}}
$responseKeyPathRequête, chemin de clésUne valeur choisie avec un chemin de clés comme data.items.0.id. {{$responseKeyPath('orders/list-orders', 'items.0.id')}}
$responseJqRequête, filtre jqCe qu’un filtre jq produit à partir du corps ; plusieurs résultats arrivent un par ligne. {{$responseJq('catalog/list-products', '.items[0].sku')}}
$responseXPathRequête, XPathUne valeur d’une réponse XML. {{$responseXPath('echo/xml', '/catalog/product[1]/@sku')}}
$responseRegexRequête, motifLa première correspondance d’une expression régulière dans le corps : son premier groupe s’il y en a un. {{$responseRegex('echo/html', '<title>(\\w+)</title>')}}
$responseHeaderRequête, en-têteUn en-tête de la réponse. {{$responseHeader('orders/create-order', 'Location')}}
$responseCookieRequête, cookieLa valeur d’un cookie défini par la réponse. {{$responseCookie('echo/set-cookie', 'flavour')}}
$responseStatusRequêteLe code d’état. {{$responseStatus('auth/sign-in')}}
$responseBodyRequêteTout le corps, en texte. {{$responseBody('auth/who-am-i')}}
$responseBodyLengthRequêteLa taille du corps en octets. {{$responseBodyLength('catalog/export')}}
$responseRequête, requête de sélectionN’importe laquelle des précédentes, selon la forme de la requête de sélection : un JSONPath ($.token), un XPath (/a/b, ou xpath:…), regex:…, jq:…, keypath:…, header:Name ou cookie:Name. {{$response('auth/sign-in', 'header:Content-Type')}}

Par exemple, Who am I peut prendre son jeton directement dans Sign in, en l’envoyant d’abord si nécessaire :

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

Une requête qui lit la réponse d’une autre en boucle est refusée, avec la boucle nommée. Les captures de réponse sont l’autre façon de transmettre des valeurs d’une requête à l’autre.

Requêtes

Ces valeurs lisent une requête telle qu’elle serait envoyée, une fois résolue. Le premier argument est le chemin d’une requête enregistrée, ou vide ('') pour la requête en cours d’envoi.

ValeurArgumentsCe qu’elle donne
$requestURLRequêteSon URL, résolue. {{$requestURL('')}}
$requestMethodRequêteSa méthode. {{$requestMethod('')}}
$requestHeaderRequête, en-têteUn en-tête, résolu, y compris ce que son auth ajoute. {{$requestHeader('', 'Content-Type')}}
$requestQueryRequête, paramètreUn paramètre de requête de son URL, décodé. {{$requestQuery('', 'page')}}
$requestBodyRequêteSon corps, résolu, en texte. {{$requestBody('')}}
$requestJSONPathRequête, JSONPathUne valeur de son corps JSON. {{$requestJSONPath('orders/create-order', '$.lines[0].sku')}}
$requestJqRequête, filtre jqCe qu’un filtre jq produit à partir de son corps JSON. {{$requestJq('', '.lines[0].quantity')}}
$requestVariableRequête, variableUne variable telle que cette requête la voit. {{$requestVariable('auth/sign-in', 'email')}}

L’usage habituel est de signer une requête avec ce qu’elle envoie :

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

Encodage

ValeurArgumentsCe qu’elle donne
$base64TexteLe texte en Base64. {{$base64('heidi:alpenglow')}}
$base64DecodeBase64Du Base64 ou Base64URL décodé en texte. {{$base64Decode('aGVpZGk=')}}
$base64UrlTexteLe texte en Base64URL, sans remplissage. {{$base64Url('{"alg":"none"}')}}
$urlEncodeTexteLe texte encodé en pourcentage pour un composant d’URL. {{$urlEncode('ultralight tent')}}
$urlDecodeTexteDu texte encodé en pourcentage, décodé ; + reste +. {{$urlDecode('ultralight%20tent')}}
$hexTexteLes octets UTF-8 du texte en hexadécimal. {{$hex('Grüezi')}}
$hexDecodeHexDe l’hexadécimal décodé en texte. {{$hexDecode('6869')}}
$jsonEscapeTexteLe texte échappé pour aller dans une chaîne JSON, sans les guillemets. {{$jsonEscape(note)}}
$newlineaucunUn saut de ligne (\n).
$craucunUn retour chariot (\r).
$crlfaucunUn retour chariot et un saut de ligne (\r\n).
$tabaucunUne tabulation.
$unescapeSéquenceDu texte dont les séquences d’échappement sont devenues des caractères : \n, \r, \t, \0, \\, \xHH, \uHHHH. {{$unescape('café')}}
$basicAuthUtilisateur, mot de passeUne valeur Authorization pour HTTP Basic : Basic et le Base64 de user:password. {{$basicAuth(email, password)}}
$jwtCharge utile, secret, algorithme (facultatif)Un JWT de la charge utile JSON, signé avec le secret : HS256 sauf si vous choisissez HS384 ou HS512. {{$jwt('{"sub": "heidi"}', jwtSecret)}}

Hachages et signatures

Chaque hachage prend le texte et, facultativement, la sortie : 'hex' (par défaut), 'base64' ou 'base64url'. Chaque HMAC prend la clé, le message et, facultativement, la sortie.

ValeurArgumentsCe qu’elle donne
$md5Texte, sortieLe MD5 du texte. {{$md5('alpenglow')}}
$sha1Texte, sortieLe SHA-1. {{$sha1('alpenglow')}}
$sha224Texte, sortieLe SHA-224.
$sha256Texte, sortieLe SHA-256. {{$sha256($requestBody(''), 'base64')}}
$sha384Texte, sortieLe SHA-384.
$sha512Texte, sortieLe SHA-512.
$hmacMd5Clé, message, sortieLe HMAC-MD5 du message avec la clé.
$hmacSha1Clé, message, sortieLe HMAC-SHA1.
$hmacSha224Clé, message, sortieLe HMAC-SHA224.
$hmacSha256Clé, message, sortieLe HMAC-SHA256. {{$hmacSha256(apiSecret, $timestamp)}}
$hmacSha384Clé, message, sortieLe HMAC-SHA384.
$hmacSha512Clé, message, sortieLe HMAC-SHA512.

Temps

Toutes ces valeurs correspondent au moment de l’envoi de la requête.

ValeurArgumentsCe qu’elle donne
$timestampaucunLe temps Unix en secondes : 1793525000.
$timestampMsaucunLe temps Unix en millisecondes : 1793525000123.
$isoTimestampaucunISO 8601 en UTC, avec les millisecondes : 2026-11-01T09:30:00.123Z.
$httpDateaucunUne date HTTP, pour Date ou If-Modified-Since : Sun, 01 Nov 2026 09:30:00 GMT.
$dateFormat, décalage en secondes (facultatif), fuseau horaire (facultatif)L’heure dans un motif de date Unicode, décalée du décalage, dans le fuseau horaire (UTC sauf indication). {{$date('yyyy-MM-dd')}}, {{$date('yyyy-MM-dd HH:mm', 3600, 'Europe/Zurich')}}

Aléatoire

Une nouvelle valeur à chaque envoi.

ValeurArgumentsCe qu’elle donne
$uuidaucunUn UUID aléatoire, en minuscules. Aussi $guid et $randomUUID. {{$uuid}}
$randomIntMinimum, maximumUn nombre entier entre les deux, bornes comprises. Un argument est le maximum, à partir de 0 ; aucun donne 0 à 1000. {{$randomInt(1, 5)}}
$randomStringLongueur, caractères (facultatif)Des caractères aléatoires, 16 sauf indication (jusqu’à 4096) : des lettres et des chiffres, ou les caractères donnés. {{$randomString(8, 'ABCDEF0123456789')}}
$randomHexOctetsDes octets aléatoires en hexadécimal, 16 sauf indication (jusqu’à 2048) ; deux fois plus de chiffres. {{$randomHex(8)}}

Create order d’Alpenglow envoie Idempotency-Key: {{$uuid}} : chaque commande qu’il passe est donc nouvelle.

Données fictives

Des valeurs inventées pour les corps de requête, les données de test et les routes de mock : noms, adresses, entreprises, prix, dates, lorem ipsum et plus, nouvelles à chaque envoi. Les noms sont les variables dynamiques de Postman : les collections qui les utilisent envoient donc de vraies valeurs ici. Dans la liste {{, elles sont sous Données fictives, par catégorie.

Les arguments sont facultatifs ; les nombres vont de -10^15 à 10^15. Les corps de mock peuvent aussi utiliser $uuid (sous la forme $randomUUID), $randomInt, $randomString, $randomHex, $timestamp, $timestampMs et $isoTimestamp, de Aléatoire et de Temps. Depuis Terminal, echolot fake remplit un modèle avec elles.

Courantes

ValeurArgumentsCe qu’elle donne
$randomFloatMinimum, Maximum, DécimalesUn nombre décimal entre les bornes (0 à 1000), avec 2 décimales sauf indication contraire.
$randomDigitsLongueurUne chaîne de chiffres aléatoires, 6 sauf si une longueur est donnée.
$randomBooleanaucuntrue ou false.
$randomElementChoixL’un des arguments, choisi au hasard : $randomElement(active, paused, closed).
$randomAlphaNumericaucunUne lettre ou un chiffre.
$randomColoraucunUn nom de couleur : teal.
$randomHexColoraucunUne couleur en hexadécimal : #3f8acb.
$randomAbbreviationaucunUne abréviation technique : SQL.

Noms et métiers

ValeurArgumentsCe qu’elle donne
$randomFirstNameaucunUn prénom : Amelia.
$randomLastNameaucunUn nom de famille : Okafor.
$randomFullNameaucunUn prénom et un nom : Amelia Okafor.
$randomNamePrefixaucunMr., Ms., Dr.…
$randomNameSuffixaucunJr., PhD…
$randomJobAreaaucunMobility, Security…
$randomJobDescriptoraucunLead, Senior…
$randomJobTitleaucunSenior Security Engineer.
$randomJobTypeaucunEngineer, Designer…

Internet

ValeurArgumentsCe qu’elle donne
$randomEmailaucunUne adresse e-mail : amelia.okafor@gmail.com.
$randomExampleEmailaucunUne adresse e-mail en example.com, example.net ou example.org.
$randomUserNameaucunUn nom d’utilisateur : amelia_okafor42.
$randomPasswordaucun15 lettres et chiffres aléatoires.
$randomUrlaucunhttps://northwind.io
$randomDomainNameaucunnorthwind.io
$randomDomainSuffixaucuncom, io, dev…
$randomDomainWordaucunnorthwind
$randomIPaucunUne adresse IPv4 : 192.168.14.7.
$randomIPV6aucunUne adresse IPv6.
$randomMACAddressaucunUne adresse MAC : 3a:f1:0c:5e:92:b4.
$randomProtocolaucunhttp ou https.
$randomSemveraucunUne version sémantique : 2.14.3.
$randomLocaleaucunUne locale : de_CH.
$randomUserAgentaucunLe User-Agent d’un navigateur.

Adresses et lieux

ValeurArgumentsCe qu’elle donne
$randomStreetNameaucunMaple Avenue
$randomStreetAddressaucun42 Maple Avenue
$randomCityaucunLisbon
$randomZipCodeaucunUn code postal à cinq chiffres. Aussi $randomZip.
$randomCountryaucunPortugal
$randomCountryCodeaucunUn code pays ISO 3166 : PT.
$randomLatitudeaucunUne latitude : 38.7223.
$randomLongitudeaucunUne longitude : -9.1393.

Téléphone

ValeurArgumentsCe qu’elle donne
$randomPhoneNumberaucunUn numéro de téléphone : 555-201-4417.
$randomPhoneNumberExtaucunUn numéro de téléphone avec indicatif de pays : +44 555-201-4417.

Entreprises

ValeurArgumentsCe qu’elle donne
$randomCompanyNameaucunNorthwind Labs
$randomCompanySuffixaucunInc, LLC, GmbH…
$randomBsaucunstreamline seamless platforms
$randomBsAdjectiveaucunseamless
$randomBsBuzzaucunstreamline
$randomBsNounaucunplatforms
$randomCatchPhraseaucunAdaptive real-time framework
$randomCatchPhraseAdjectiveaucunAdaptive
$randomCatchPhraseDescriptoraucunreal-time
$randomCatchPhraseNounaucunframework

Finance

ValeurArgumentsCe qu’elle donne
$randomPriceMinimum, MaximumUn prix à deux décimales, de 1 à 1000 sauf si des bornes sont données.
$randomCurrencyCodeaucunEUR
$randomCurrencyNameaucunEuro
$randomCurrencySymbolaucun€
$randomBankAccountaucunUn numéro de compte à 8 chiffres.
$randomBankAccountNameaucunSavings Account
$randomBankAccountIbanaucunUn IBAN avec des chiffres de contrôle valides.
$randomBankAccountBicaucunUn BIC (code SWIFT).
$randomCreditCardMaskaucunLes quatre derniers chiffres d’une carte.
$randomTransactionTypeaucundeposit, payment, refund…
$randomBitcoinaucunUne adresse bitcoin inventée.

Boutiques et produits

ValeurArgumentsCe qu’elle donne
$randomProductaucunChair
$randomProductNameaucunErgonomic Wooden Chair
$randomProductAdjectiveaucunErgonomic
$randomProductMaterialaucunWooden
$randomDepartmentaucunGarden

Dates

ValeurArgumentsCe qu’elle donne
$randomDatePastaucunUn moment de l’année écoulée, en ISO 8601.
$randomDateFutureaucunUn moment de l’année à venir, en ISO 8601.
$randomDateRecentaucunUn moment des deux derniers jours, en ISO 8601.
$randomDateaucunUn jour de l’année écoulée : 2026-03-14.
$randomWeekdayaucunTuesday
$randomMonthaucunMarch

Mots

ValeurArgumentsCe qu’elle donne
$randomWordaucunUn mot.
$randomWordsNombreQuelques mots, 3 sauf si un nombre est donné.
$randomNounaucunrouter
$randomVerbaucuncompile
$randomIngverbaucuncompiling
$randomAdjectiveaucunwireless
$randomPhraseaucunUne courte phrase faite des mots ci-dessus.

Lorem ipsum

ValeurArgumentsCe qu’elle donne
$randomLoremWordaucundolor
$randomLoremWordsNombreDes mots de lorem, 3 sauf si un nombre est donné.
$randomLoremSentenceaucunUne phrase.
$randomLoremSentencesNombreQuelques phrases, de 2 à 6 sauf si un nombre est donné.
$randomLoremParagraphaucunUn paragraphe.
$randomLoremParagraphsNombreDes paragraphes, 3 sauf si un nombre est donné.
$randomLoremTextaucunUne phrase ou quelques-unes.
$randomLoremSlugaucundolor-sit-amet
$randomLoremLinesaucunQuelques phrases, une par ligne.

Fichiers

ValeurArgumentsCe qu’elle donne
$randomFileNameaucunrouter_matrix.pdf
$randomFileTypeaucunimage, text, video…
$randomFileExtaucunpdf
$randomCommonFileNameaucunUn nom de fichier avec une extension courante.
$randomCommonFileTypeaucunimage, video, text…
$randomCommonFileExtaucunpng
$randomFilePathaucun/var/reports/router_matrix.pdf
$randomDirectoryPathaucun/var/reports
$randomMimeTypeaucunapplication/pdf

Images

ValeurArgumentsCe qu’elle donne
$randomAvatarImageaucunL’adresse d’une image d’avatar.
$randomImageUrlaucunL’adresse d’une image de 640×480.
$randomAbstractImageaucunL’adresse d’une image de 640×480 sur le thème abstract. Les autres thèmes : $randomAnimalsImage, $randomBusinessImage, $randomCatsImage, $randomCityImage, $randomFoodImage, $randomNightlifeImage, $randomFashionImage, $randomPeopleImage, $randomNatureImage, $randomSportsImage, $randomTransportImage.
$randomImageDataUriaucunUne petite image SVG sous forme d’URI data:.

Bases de données

ValeurArgumentsCe qu’elle donne
$randomDatabaseColumnaucuncreatedAt
$randomDatabaseTypeaucunvarchar
$randomDatabaseCollationaucunutf8mb4_unicode_ci
$randomDatabaseEngineaucunInnoDB

Texte

ValeurArgumentsCe qu’elle donne
$lowercaseTexteLe texte en minuscules. {{$lowercase(email)}}
$uppercaseTexteLe texte en majuscules. {{$uppercase(productId)}}
$trimTexteLe texte sans les espaces ni les sauts de ligne à chaque extrémité. {{$trim($responseBody('auth/who-am-i'))}}

Fichiers et système

ValeurArgumentsCe qu’elle donne
$fileCheminLe contenu d’un fichier : un chemin relatif à l’espace de travail, ou absolu. {{$file('fixtures/order.json')}}
$envNomUne variable d’environnement du processus Echolot. {{$env('HOME')}}

Valeurs dynamiques et agents

Quand un agent IA envoie une requête (via le serveur MCP d’Echolot ou l’Assistant), $env ne donne rien, et $file ne lit que des fichiers situés dans l’espace de travail. Les valeurs secrètes n’arrivent jamais jusqu’à l’agent. Voir agents.

Sur cette page