record-many command and the
WireMock environment config file, wiremock.yaml. The environment configuration file specifies all the services you are
recording:
cloud_id field specifies the Mock API you want to save to where <mock_api_id>
is the ID of the Mock API that should receive the recorded stubs. At present you can get that value by browsing into a
Mock API at https://app.wiremock.cloud and extracting it from the URL - for instance in the URL
https://app.wiremock.cloud/mock-apis/33eye3l9/stubs/1e0d7dc0-06a0-49a2-81a7-f5d6a40bfa3d, the ID is 33eye3l9.
If you don’t already have a Mock API in WireMock Cloud that you are recording to, you can omit the cloud_id field
from your service definition and the WireMock CLI will create a new Mock API for you before saving the recorded stubs.
The environment config file will be updated with the id of the created Mock Api.
The type field specifies the type of the Mock API you are saving to. This field allows the 4 Mock API types supported
by WireMock Cloud:
- REST
- gRPC
- GraphQL
- Unstructured
port field allows you to specify the port number the WireMock CLI will listen on when recording to the endpoint
specified in the originals -> default field. The port field specified should be unique across all the services
you are specifying in your environment configuration. This is unless you are using a dynamic port where you would
specify 0 or -1 as the port.
To start a multi-domain recording session, you would run:
<path> is the path to the directory containing your saved wiremock.yaml environment configuration file. By
default this will be a directory called .wiremock in the current working directory, so the CLI will look for
./.wiremock/wiremock.yaml.
The CLI will then run a proxy server for each of the services you have configured, bound to http://localhost:<port>
where the port is the port you specified in the configuration file. Requests to those endpoints will be proxied to the
endpoint you want to record from. When you have finished the journey you want to record, press <enter> to save the
stubs to your Mock API in WireMock Cloud and the CLI will exit.
Choosing which services to record
It may be convenient to run a multi-domain recording session where all services defined in the environment configuration file are proxying through to the real service, but you only wish to actually record stubs for a subset of those services. You can achieve this using the--include-services option with a value that is a comma separated list of the YAML keys
(as defined in the environment configuration file) of the services you wish to record.
Importing recordings as you go along
By default, all the recorded requests are held in memory, and sent to the destination Mock API in WireMock Cloud at the end of the recording session. This may not be desirable; if you are doing a long recording session this may be prone to losing too much work. If you are doing a very large recording session the resulting import may be too large for WireMock Cloud (or other intermediate infrastructure) to cope. You may use the--max-batch-requests option to specify the maximum amount of requests to import into the destination
Mock API in a single request.
Given a max batch of N requests, an import to the mock API will occur for every N requests recorded.
The --max-batch-bytes option is also available if you need control over the exact amount of bytes that can be sent in
a single request to the destination Mock API.
Given a max batch of N bytes, an import to the mock API will occur for every N bytes recorded.
Note, if a single recorded request exceeds the maximum number of bytes, this request will still be sent (in a batch of
one).
Advanced Recording
The WireMock CLI accepts a configuration file to control how stubs are recorded:Recording with Mutual TLS
If you need to record from an API that authenticates clients with mutual TLS, the CLI can present your private client certificate in one of two ways:Via a PEM file
If you have a file containing a PEM encoded RSA private key and X509 certificate, you can provide it as so:Using a PKCS 12 certificate store
Keeping a private key in PEM format is a security risk, so we also support supplying your client certificate in a password protected PKCS 12 store as so:Non-interactive Recording Sessions
The WireMock CLIrecord-many command supports running in non-interactive mode, making it ideal for
CI/CD pipelines and automated environments where user interaction is not possible or desired. See the
Non-interactive Recording for more details.
Recording to an Environment
The WireMock CLIrecord-many command supports recording to an environment via the use of the --profile parameter.
See the Environments page for more details.