+
+## Distributions
+
+WireMock provides the following generic distributions that allow running it as a
+[standalone server](./standalone.md)
+in a container or within a Java Virtual Machine.
+
+
+
+## By use-case
+
+Below you can find links to the documentation for WireMock key use-cases.
+You can find more documentation pages on the sidebar.
+
+
+
+## By protocol
+
+WireMock can serve all HTTP-based protocols and REST API.
+Through built-in features and extensions,
+it provides additional capabilities for widely used protocols.
+
+
+
+## By technology
+
+There are also solutions and guides for particular technologies and frameworks,
+provided by the WireMock community and external contributors.
+
+
diff --git a/_docs/advanced/deploy-to-servlet-container.md b/_docs/advanced/deploy-to-servlet-container.md
index 49963616..ef066a15 100644
--- a/_docs/advanced/deploy-to-servlet-container.md
+++ b/_docs/advanced/deploy-to-servlet-container.md
@@ -1,5 +1,4 @@
---
-layout: docs
title: Deploying into a servlet container
meta_title: Deploying into a servlet container | WireMock
description: "WireMock can be packaged up as a WAR and deployed into a servlet
diff --git a/_docs/advanced/java7.md b/_docs/advanced/java7.md
index b4b81f49..ed819a71 100644
--- a/_docs/advanced/java7.md
+++ b/_docs/advanced/java7.md
@@ -1,10 +1,11 @@
---
-layout: docs
-title: WireMock on Java 1.7
-meta_title: "Using old WireMock versions with Java 1.7"
-description: Recent WireMock versions do not support Java 1.7, but you can run older versions to achieve that
+description: >
+ Recent WireMock versions do not support Java 1.7,
+ but you can run older versions to achieve that
---
+# Using old WireMock versions with Java 1.7
+
> **WARNING:** Recent WireMock versions do not support Java 1.7, but you can run older versions to achieve that.
> The Java 7 version was deprecated in the 2.x line and version 2.27.2 is the last release available.
> There will be no bugfixes and security patches provided.
diff --git a/_docs/assets/images/favicon.svg b/_docs/assets/images/favicon.svg
new file mode 100644
index 00000000..071d4419
--- /dev/null
+++ b/_docs/assets/images/favicon.svg
@@ -0,0 +1,86 @@
+
+
diff --git a/_docs/community/slack.md b/_docs/community/slack.md
new file mode 100644
index 00000000..22bbded7
--- /dev/null
+++ b/_docs/community/slack.md
@@ -0,0 +1,46 @@
+---
+description: >
+ Need help with WireMock?
+ Want to share your experiences?
+ Interested in participating in the community or contributing?
+ We have a community Slack open to everyone!
+---
+
+# WireMock community Slack
+
+[![a](https://img.shields.io/badge/slack-Join%20us-brightgreen?style=flat&logo=slack)](https://slack.wiremock.org/)
+
+If you need help with WireMock,
+interested in participating in the community,
+or interested in contributing, please join us on the [WireMock Community Slack](https://slack.wiremock.org/).
+
+## How to join
+
+1. Go to [slack.wiremock.org](https://slack.wiremock.org/)
+2. Register in the `wiremock-slack` workspace using this link
+3. Open the Slack workspace using your favorite (or not so) client!
+4. Nice 2 have: Say hello and tell us about your WireMock use-cases
+ on the `#introduce-yourself` channel
+
+Welcome aboard!
+
+## Key channels
+
+- `#help` - channel for any questions regarding WireMock usage,
+ including developing test automation with WireMock or using the standalone instance
+- `#help-contributing` - the channel where you can ask any questions about contributing and get help from the community members
+- `#announcements` - Channel where we announce new releases and key updates in the WireMock ecosystem and the community
+- `#wiremock-cloud` - Anything about [WireMock Cloud](https://www.wiremock.io/product?utm_source=wiremock.org&utm_medium=referral&utm_campaign=community_slack),
+ including community support
+- `#wiremock-${your tech}` - channel for discussing WireMock usage on specific technology stacks, for example `java`, `python`, `dotnet` or `golang`
+
+## Slack Archive
+
+We use the free version of Slack, so our history is limited to 3 months.
+Nevertheless, you can access and search the conversation history
+on [community.wiremock.io](https://community.wiremock.io/),
+including searching for the issues in `#help`.
+
+## Other help channels
+
+- [WireMock on StackOverflow](https://stackoverflow.com/questions/tagged/wiremock) (`#wiremock` tag)
diff --git a/_docs/configuration.md b/_docs/configuration.md
index accf16a5..bcbd7208 100644
--- a/_docs/configuration.md
+++ b/_docs/configuration.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: "Java configuration"
-meta_title: Configuring WireMock in Java | WireMock
description: Configuring WireMock progammatically in Java.
---
+# Configuring WireMock in Java
+
Both `WireMockServer` and the `WireMockRule` take a configuration builder as the parameter to their constructor e.g.
```java
@@ -175,7 +174,7 @@ Gzipping of responses can be disabled.
## Extensions
-For details see [Extending WireMock](../extending-wiremock/).
+For details see [Extending WireMock](./extending-wiremock.md).
```java
// Add extensions
@@ -241,17 +240,22 @@ The ruleset is built and applied as follows:
## Filename template
-WireMock can set up specific filename template format based on stub information.
-The main rule for set up specify stub metadata information in handlebar format.
-For instance for endpoint `PUT /hosts/{id}` and format `{{{method}}}-{{{request.url}}}.json`
-will be generated: `put-hosts-id.json` filename. Default template: `{{{method}}}-{{{path}}}-{{{id}}}.json`.
+WireMock can set up specific filename template format based on stub information.
+The main rule for set up specify stub metadata information in handlebar format.
+For instance for endpoint `PUT /hosts/{id}` and format
+{% raw %} `{{{method}}}-{{{request.url}}}.json`{% endraw %}
+will be generated: `put-hosts-id.json` filename.
+Default template: {% raw %} `{{{method}}}-{{{path}}}-{{{id}}}.json` {% endraw %}.
+
+{% raw %}
```java
.filenameTemplate("{{{request.url}}}-{{{request.url}}}.json")
```
-Note: starting from [3.0.0-beta-8](https://github.com/wiremock/wiremock/releases/tag/3.0.0-beta-8)
+{% endraw %}
+Note: starting from [3.0.0-beta-8](https://github.com/wiremock/wiremock/releases/tag/3.0.0-beta-8)
## Listening for raw traffic
diff --git a/_docs/download-and-installation.md b/_docs/download-and-installation.md
index 6c7fa81a..76b61a4f 100644
--- a/_docs/download-and-installation.md
+++ b/_docs/download-and-installation.md
@@ -1,20 +1,11 @@
---
-layout: docs
-title: Download and Installation
-meta_title: "How to Download and Install WireMock"
-toc_rank: 13
description: >
- WireMock is available as a standalone service (for Docker of Java), Java library
- and integrations for modern languages and technology stacks.
-redirect_from:
- - "/download.html"
- - "/download/"
- - "/downloads.html"
- - "/downloads/"
- - "/docs/download.html"
- - "/docs/download/"
+ WireMock is available as a standalone service for Docker or Java,
+ Java library, NPM package or SaaS.
+ Learn how to download and install WireMock.
---
+# Download and Installation
## Download options
@@ -22,56 +13,42 @@ WireMock Java is distributed in two flavours - a standard JAR containing just Wi
WireMock plus all its dependencies.
Most of the standalone JAR's dependencies are shaded i.e. they are hidden in alternative packages. This allows WireMock to be used in projects with
-conflicting versions of its dependencies. The standalone JAR is also runnable (see [Running as a Standalone Process](../running-standalone/)).
-
-## Test dependencies
-
-
- {% include downloads.html %}
-
+conflicting versions of its dependencies. The standalone JAR is also runnable (see [Running as a Standalone Process](./running-standalone.md)).
## Standalone Service
Run the following in a terminal:
-{% codetabs %}
-
-{% codetab Docker %}
-
-```bash
-docker run -it --rm -p 8080:8080 --name wiremock \
- wiremock/wiremock:{{ site.wiremock_version }}
-```
-
-{% endcodetab %}
-
-{% codetab Maven %}
+=== "Docker"
-```xml
-
- org.wiremock
- wiremock-standalone
- {{ site.wiremock_version }}
- test
-
-```
+ ```bash
+ docker run -it --rm -p 8080:8080 --name wiremock \
+ wiremock/wiremock:{{ versions.wiremock_version }}
+ ```
-{% endcodetab %}
+## Declaring a dependency in your code
-{% codetab Gradle Groovy %}
+=== "Maven"
-```groovy
-testImplementation "org.wiremock:wiremock-standalone:{{ site.wiremock_version }}"
-```
+ ```xml
+
+ org.wiremock
+ wiremock-standalone
+ {{ versions.wiremock_version }}
+ test
+
+ ```
-{% endcodetab %}
+=== "Gradle Groovy"
-{% endcodetabs %}
+ ```groovy
+ testImplementation "org.wiremock:wiremock-standalone:{{ versions.wiremock_version }}"
+ ```
-Learn more in the [Docker guide](../docker).
+Learn more in the [Docker guide](./standalone/docker.md).
### Direct download
If you want to run WireMock as a standalone process you can
-download the standalone JAR from
+download the standalone JAR from
here
diff --git a/_docs/extending-wiremock.md b/_docs/extending-wiremock.md
index bebd4462..87fae062 100644
--- a/_docs/extending-wiremock.md
+++ b/_docs/extending-wiremock.md
@@ -1,32 +1,31 @@
---
-layout: docs
-title: Extending WireMock
-meta_title: Extending WireMock via custom code | WireMock
-toc_rank: 110
-redirect_from: "/extending-wiremock.html"
-description: You can register the extension programmatically via its class name, class or an instance
+description: >
+ How to create new WireMock extensions in your code,
+ and how to create and package redistributable extensions.
---
+# Extending WireMock
+
WireMock can be customised via a variety of extension points.
+You can register the extension programmatically via its class name, class or an instance.
Each extension point is defined by an interface that extends from `Extension` and extension implementations are loaded at startup time.
At present, the following extension interfaces are available:
* `RequestFilterV2`/`AdminRequestFilterV2`/`StubRequestFilterV2`: Intercept requests, modifying them or taking alternative actions based on their content.
-* `ResponseDefinitionTransformerV2`: Modify the response definition used to generate a response. See [Transforming responses](../extensibility/transforming-responses/).
-* `ResponseTransformerV2`: Modify the response served to the client. See [Transforming responses](../extensibility/transforming-responses/).
-* `ServeEventListener`: Listen for events at various points in the request processing lifecycle. See [Listening for Serve Events](../extensibility/listening-for-serve-events/).
-* `AdminApiExtension`: Add admin API functions. See [Admin API Extensions](../extensibility/extending-the-admin-api/).
-* `RequestMatcherExtension`: Implement custom request matching logic. See [Custom matching](../extensibility/custom-matching/).
-* `GlobalSettingsListener`: Listen for changes to the settings object. See [Listening for Settings Changes](../extensibility/listening-for-settings-changes/).
-* `StubLifecycleListener`: Listen for changes to the stub mappings. See [Listening for Stub Changes](../extensibility/listening-for-stub-changes/).
-* `TemplateHelperProviderExtension`: Provide custom Handlebars helpers to the template engine. See [Adding Template Helpers](../extensibility/adding-template-helpers/).
-* `TemplateModelDataProviderExtension`: Provide additional data to the model passed to response templates. See [Adding Template Model Data](../extensibility/adding-template-model-data/).
-* `MappingsLoaderExtension`: Provide additional source to load the stub mappings. See [Adding Mappings Loader](../extensibility/adding-mappings-loader/).
+* `ResponseDefinitionTransformerV2`: Modify the response definition used to generate a response. See [Transforming responses](./extensibility/transforming-responses.md).
+* `ResponseTransformerV2`: Modify the response served to the client. See [Transforming responses](./extensibility/transforming-responses.md).
+* `ServeEventListener`: Listen for events at various points in the request processing lifecycle. See [Listening for Serve Events](./extensibility/listening-for-serve-events.md).
+* `AdminApiExtension`: Add admin API functions. See [Admin API Extensions](./extensibility/extending-the-admin-api.md).
+* `RequestMatcherExtension`: Implement custom request matching logic. See [Custom matching](./extensibility/custom-matching.md).
+* `GlobalSettingsListener`: Listen for changes to the settings object. See [Listening for Settings Changes](./extensibility/listening-for-settings-changes.md).
+* `StubLifecycleListener`: Listen for changes to the stub mappings. See [Listening for Stub Changes](./extensibility/listening-for-stub-changes.md).
+* `TemplateHelperProviderExtension`: Provide custom Handlebars helpers to the template engine. See [Adding Template Helpers](./extensibility/adding-template-helpers.md).
+* `TemplateModelDataProviderExtension`: Provide additional data to the model passed to response templates. See [Adding Template Model Data](./extensibility/adding-template-model-data.md).
+* `MappingsLoaderExtension`: Provide additional source to load the stub mappings. See [Adding Mappings Loader](./extensibility/adding-mappings-loader.md).
The interfaces in this list ending with `V2` supercede deprecated equivalents with an older, more restrictive interface. Additionally `ServeEventListener` deprecates `PostServeAction`.
-
## Registering Extensions
You can directly register the extension programmatically via its class name,
@@ -43,7 +42,7 @@ new WireMockServer(wireMockConfig()
.extensions(new BodyContentTransformer(), new HeaderMangler()));
```
-See [Running as a Standalone Process](../running-standalone/) for details on running with extensions from the command line.
+See [Running as a Standalone Process](./standalone.md) for details on running with extensions from the command line.
### Factories
@@ -63,6 +62,7 @@ new WireMockServer(wireMockConfig()
```
Services currently available to extension factories are:
+
* `Admin`: the main WireMock functional interface for stubbing, verification and configuration tasks.
* `Options`: the configuration object built at startup.
* `Stores`: the root interface for gaining access to the various stores of WireMock's state and creating/using custom stores.
@@ -77,7 +77,6 @@ will be loaded automatically if they are placed on the classpath.
See [https://github.com/wiremock/wiremock/tree/master/test-extension](https://github.com/wiremock/wiremock/tree/master/test-extension) for an example of such an extension.
-
## Attaching sub-events during request processing
Sub-events are a used to report interesting/useful information during request processing. WireMock attaches the diff report generated when a request is not matched as a sub-event, and custom extension can exploit this approach to surface e.g. diagnostic and validation data in the serve event log, where it can be retrieved later via the API or exported to monitoring/observability tools via listeners.
diff --git a/_docs/extensibility/adding-mappings-loader.md b/_docs/extensibility/adding-mappings-loader.md
index df3339c6..5584391c 100644
--- a/_docs/extensibility/adding-mappings-loader.md
+++ b/_docs/extensibility/adding-mappings-loader.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Mappings Loader Extensions
-meta_title: Mappings Loader Extensions
description: Adding additional source of loading mappings via extensions.
---
+# Mappings Loader Extensions
+
Additional source to load the stub mappings can be configured by implementing `MappingsLoaderExtension`.
```java
diff --git a/_docs/extensibility/adding-template-helpers.md b/_docs/extensibility/adding-template-helpers.md
index 1fa7ed78..6cabdec3 100644
--- a/_docs/extensibility/adding-template-helpers.md
+++ b/_docs/extensibility/adding-template-helpers.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Adding Template Helpers
-meta_title: Adding custom template helpers
description: Adding custom Handlebars helpers to the template system via extensions
---
+# Adding Custom Template Helpers
+
Extensions that implement the `TemplateHelperProviderExtension` interface provide additional Handlebars helpers to the templating system:
```java
diff --git a/_docs/extensibility/adding-template-model-data.md b/_docs/extensibility/adding-template-model-data.md
index 7dc0f456..94ce8d8d 100644
--- a/_docs/extensibility/adding-template-model-data.md
+++ b/_docs/extensibility/adding-template-model-data.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Adding Template Model Data
-meta_title: Adding Template Model Data
description: Adding extra elements to the template model during request processing
---
+# Adding Template Model Data
+
Extensions that implement the `TemplateHelperProviderExtension` interface provide additional Handlebars helpers to the templating system:
```java
diff --git a/_docs/extensibility/custom-matching.md b/_docs/extensibility/custom-matching.md
index 5099bde6..1d2f459d 100644
--- a/_docs/extensibility/custom-matching.md
+++ b/_docs/extensibility/custom-matching.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Custom Matching
-meta_title: Adding custom request matchers
description: Adding custom request matchers via extensions
---
+# Adding custom request matchers
+
If WireMock's standard set of request matching strategies isn't
sufficient, you can register one or more request matcher classes
containing your own logic.
@@ -70,38 +69,30 @@ public class BodyLengthMatcher extends RequestMatcherExtension {
Then define a stub with it:
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-stubFor(requestMatching("body-too-long", Parameters.one("maxLength", 2048))
- .willReturn(aResponse().withStatus(422)));
-```
+=== "Java"
-{% endcodetab %}
+ ```java
+ stubFor(requestMatching("body-too-long", Parameters.one("maxLength", 2048))
+ .willReturn(aResponse().withStatus(422)));
+ ```
-{% codetab JSON %}
+=== "JSON"
-```json
-{
- "request": {
- "customMatcher": {
- "name": "body-too-long",
- "parameters": {
- "maxLength": 2048
+ ```json
+ {
+ "request": {
+ "customMatcher": {
+ "name": "body-too-long",
+ "parameters": {
+ "maxLength": 2048
+ }
}
+ },
+ "response": {
+ "status": 422
}
- },
- "response": {
- "status": 422
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
### Combining standard and custom request matchers
@@ -118,9 +109,7 @@ WireMock server. An exception will be thrown if attempting to use an inline cust
Custom matchers defined as extensions can also be combined with standard matchers.
-{% codetabs %}
-
-{% codetab Java %}
+=== "Java"
```java
stubFor(get(urlPathMatching("/the/.*/one"))
@@ -128,28 +117,22 @@ stubFor(get(urlPathMatching("/the/.*/one"))
.willReturn(ok()));
```
-{% endcodetab %}
-
-{% codetab JSON %}
-
-```json
-{
- "request": {
- "urlPathPattern": "/the/.*/one",
- "method": "GET",
- "customMatcher": {
- "name": "path-contains-param",
- "parameters": {
- "path": "correct"
+=== "JSON"
+
+ ```json
+ {
+ "request": {
+ "urlPathPattern": "/the/.*/one",
+ "method": "GET",
+ "customMatcher": {
+ "name": "path-contains-param",
+ "parameters": {
+ "path": "correct"
+ }
}
+ },
+ "response": {
+ "status": 200
}
- },
- "response": {
- "status": 200
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
diff --git a/_docs/extensibility/extending-the-admin-api.md b/_docs/extensibility/extending-the-admin-api.md
index adb50eab..ac6ceeab 100644
--- a/_docs/extensibility/extending-the-admin-api.md
+++ b/_docs/extensibility/extending-the-admin-api.md
@@ -1,8 +1,7 @@
---
-layout: docs
-title: Admin API Extensions
-meta_title: Admin API Extensions
description: Adding additional admin API functions via extensions.
---
+# Admin API Extensions
+
Additional API routes under WireMock's `/__admin` endpoint can be configured by implementing `AdminApiExtension`.
\ No newline at end of file
diff --git a/_docs/extensibility/filtering-requests.md b/_docs/extensibility/filtering-requests.md
index 3bda7a62..de2e66b1 100644
--- a/_docs/extensibility/filtering-requests.md
+++ b/_docs/extensibility/filtering-requests.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Filtering and Modifying Requests
-meta_title: Filtering and Modifying Requests
description: Filtering and modifying requests via extensions
---
+# Filtering and Modifying Requests
+
Requests to both stubs and the admin API can be intercepted and either modified or halted with an immediate response.
This supports a number of use cases including: authentication, URL rewriting and request header injection.
diff --git a/_docs/extensibility/listening-for-serve-events.md b/_docs/extensibility/listening-for-serve-events.md
index eacc08dc..4c49aafc 100644
--- a/_docs/extensibility/listening-for-serve-events.md
+++ b/_docs/extensibility/listening-for-serve-events.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Listening for Serve Events
-meta_title: Listening for Serve Events
description: Creating and registering serve event listeners
---
+# Listening for Serve Events
+
Serve event listeners are intended for use when you wish to take an action at a specific point in the request processing flow, without affecting processing in any way. For instance a serve event listener would be the most suitable extension point to use for exporting telemetry data to a monitoring/observability tool.
The `ServeEventListener` interface (which deprecates `PostServeAction`) supports two different modes of operation - you can either override specific methods if the listener should only fire at a specific point in the request processing flow, or you can override a generic method then configure which lifecycle points it's fired at when binding the listener to specific stubs. Or it can simply be made to fire at all lifecycle points.
diff --git a/_docs/extensibility/listening-for-settings-changes.md b/_docs/extensibility/listening-for-settings-changes.md
index 56cb99f1..7671c6c5 100644
--- a/_docs/extensibility/listening-for-settings-changes.md
+++ b/_docs/extensibility/listening-for-settings-changes.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Listening for Settings Changes
-meta_title: Listening for Settings Changes
description: Listening for Settings Changes
---
+# Listening for Settings Changes
+
You can listen for changes to the global settings object.
This is most useful when combined with other extension points, allowing extensions to define and make use of extended settings values rather than rolling their own configuration strategy.
diff --git a/_docs/extensibility/listening-for-stub-changes.md b/_docs/extensibility/listening-for-stub-changes.md
index 663deef4..9e3b0edc 100644
--- a/_docs/extensibility/listening-for-stub-changes.md
+++ b/_docs/extensibility/listening-for-stub-changes.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Listening for Stub Changes
-meta_title: Listening for Stub Changes
description: Listening for Stub Changes
---
+# Listening for Stub Changes
+
You can subscribe to changes in the state of WireMock's stubs via the `StubLifecycleListener` extension point.
For instance, to respond after a new stub has been created you would do the following:
diff --git a/_docs/extensibility/transforming-responses.md b/_docs/extensibility/transforming-responses.md
index cdf2f503..cc724afa 100644
--- a/_docs/extensibility/transforming-responses.md
+++ b/_docs/extensibility/transforming-responses.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Transforming Responses
-meta_title: Transforming response definitions and responses
description: Transforming response definitions and responses via extensions
---
+# Transforming response definitions and responses
+
Sometimes, returning wholly static responses to stub requests isn't
practical e.g. when there are transaction IDs being passed between
request/responses, dates that must be current. Via WireMock's extension
@@ -64,42 +63,34 @@ intend to register them via an instance as described below.
Parameters are supplied on a per stub mapping basis:
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-stubFor(get(urlEqualTo("/transform")).willReturn(
- aResponse()
- .withTransformerParameter("newValue", 66)
- .withTransformerParameter("inner", ImmutableMap.of("thing", "value")))); // ImmutableMap is from Guava, but any Map will do
-```
-
-{% endcodetab %}
-
-{% codetab JSON %}
-
-```json
-{
- "request": {
- "url": "/transform",
- "method": "GET"
- },
- "response": {
- "status": 200,
- "transformerParameters": {
- "newValue": 66,
- "inner": {
- "thing": "value"
+=== "Java"
+
+ ```java
+ stubFor(get(urlEqualTo("/transform")).willReturn(
+ aResponse()
+ .withTransformerParameter("newValue", 66)
+ .withTransformerParameter("inner", ImmutableMap.of("thing", "value")))); // ImmutableMap is from Guava, but any Map will do
+ ```
+
+=== "JSON"
+
+ ```json
+ {
+ "request": {
+ "url": "/transform",
+ "method": "GET"
+ },
+ "response": {
+ "status": 200,
+ "transformerParameters": {
+ "newValue": 66,
+ "inner": {
+ "thing": "value"
+ }
}
}
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
### Non-global transformations
@@ -116,37 +107,30 @@ public boolean applyGlobally() {
Then you add the transformation to specific stubs via its name:
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-stubFor(get(urlEqualTo("/local-transform")).willReturn(aResponse()
- .withStatus(200)
- .withBody("Original body")
- .withTransformers("my-transformer", "other-transformer")));
-```
-
-{% endcodetab %}
-
-{% codetab JSON %}
-
-```json
-{
- "request": {
- "method": "GET",
- "url": "/local-transform"
- },
- "response": {
- "status": 200,
- "body": "Original body",
- "transformers": ["my-transformer", "other-transformer"]
+=== "Java"
+
+ ```java
+ stubFor(get(urlEqualTo("/local-transform")).willReturn(aResponse()
+ .withStatus(200)
+ .withBody("Original body")
+ .withTransformers("my-transformer", "other-transformer")));
+ ```
+
+=== "JSON"
+
+ ```json
+ {
+ "request": {
+ "method": "GET",
+ "url": "/local-transform"
+ },
+ "response": {
+ "status": 200,
+ "body": "Original body",
+ "transformers": ["my-transformer", "other-transformer"]
+ }
}
-}
-```
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
The Java API also has a convenience method for adding transformers and
parameters in one call:
diff --git a/_docs/extensions/README.md b/_docs/extensions/README.md
new file mode 100644
index 00000000..82802781
--- /dev/null
+++ b/_docs/extensions/README.md
@@ -0,0 +1,14 @@
+# WireMock Extensions
+
+WireMock can be customized via a variety of extension points.
+The extensions allow implementing support for new protocols,
+request filters, response templating expressions,
+data storage and observability capabilities.
+
+## Available extensions
+
+See the list on the left panel.
+
+## Developing Extensions
+
+See [Extending WireMock](../extending-wiremock.md).
diff --git a/_docs/faq.md b/_docs/faq.md
index c69e5a51..e043a31a 100644
--- a/_docs/faq.md
+++ b/_docs/faq.md
@@ -1,11 +1,10 @@
---
-layout: docs
-title: Frequently Asked Questions
-meta_title: "Frequently Asked Questions in WireMock"
description: >
Frequently asked questions and best practices regarding anything WireMock.
---
+# Frequently Asked Questions
+
Here, you can find information about what API mocking and WireMock are, as well as recommendations and best practices for different challenges in various areas of WireMock.
## API mocking and WireMock as a service
@@ -30,9 +29,9 @@ WireMock supports several approaches for creating mock APIs - in code, via its R
### What makes WireMock unique?
-WireMock has a rich [matching system](../request-matching/), allowing any part of an incoming request to be matched against complex and precise criteria.
+WireMock has a rich [matching system](./request-matching.md), allowing any part of an incoming request to be matched against complex and precise criteria.
Responses of any complexity can be dynamically generated via the Handlebars based templating system.
-Finally, WireMock is easy to integrate into any workflow due to its numerous [extension points](../extending-wiremock/) and comprehensive APIs.
+Finally, WireMock is easy to integrate into any workflow due to its numerous [extension points](./extending-wiremock.md) and comprehensive APIs.
### Is WireMock open source?
@@ -50,8 +49,8 @@ WireMock is completely free under the Apache 2.0 license.
This question is valid especially when it is getting difficult to keep track of what test case(s) a particular mock was meant for.
#### Potential solutions
-- Create your stubs (or most of them at least) in the test cases themselves, then [reset them](../stubbing/#reset) each time.
-- Use the [`metadata` element](../stub-metadata/) in the stub data to tag stubs with info relating them to specific test cases.
+- Create your stubs (or most of them at least) in the test cases themselves, then [reset them](./stubbing.md#reset) each time.
+- Use the [`metadata` element](./stub-metadata.md) in the stub data to tag stubs with info relating them to specific test cases.
#### Potential solutions for WireMock standalone
- Use configuration-as-code, and store your definitions in a repository. You can have a hierarchical structure of Mappings and Files to specify teams.
diff --git a/_docs/getting-started.md b/_docs/getting-started.md
index 76c09df5..09390e31 100644
--- a/_docs/getting-started.md
+++ b/_docs/getting-started.md
@@ -1,14 +1,11 @@
---
-layout: docs
-title: WireMock Tutorials
-meta_title: Listing of WireMock Quick Starts and Tutorials
-toc_rank: 10
-redirect_from:
- - "/getting-started.html"
- - "/docs/tutorials.html"
-description: Provides links to WireMock tutorials and other entry materials
+description: >
+ How to get started with WireMock?
+ This page provides links to WireMock tutorials and other entry materials
---
+# WireMock Tutorials
+
Getting Started with WireMock in your project?
Check out the guidelines below.
@@ -16,14 +13,14 @@ Check out the guidelines below.
At the moment, we provide the following quick starts for beginners:
-- [API Mocking with Java and JUnit 4](../quickstart/java-junit)
-- [Downloading and Installing WireMock](../download-and-installation)
+- [API Mocking with Java and JUnit 4](./quickstart/java-junit.md)
+- [Downloading and Installing WireMock](./download-and-installation.md)
## Featured tutorials
-Here are some good tutorials from the [External Resources](/external-resources) you can use:
+Here are some good tutorials from the [External Resources](./resources/external.md) you can use:
- [WireMock Basics Workshop](https://github.com/basdijkstra/wiremock-workshop), by Bas Dijkstra
- [Running your acceptance tests in Kubernetes using WireMock](https://blog.sebastian-daschner.com/entries/acceptance_tests_wiremock_kubernetes), by Sebastian Daschner
diff --git a/_docs/grpc.md b/_docs/grpc.md
index 7d264bc3..ee42e372 100644
--- a/_docs/grpc.md
+++ b/_docs/grpc.md
@@ -1,16 +1,12 @@
---
-layout: docs
-title: Mocking gRPC services
-meta_title: Mocking gRPC services
-description: Mocking gRPC services with WireMock
+description: >
+ WireMock 3.2.0+ supports mocking of gRPC services via the WireMock extension for gRPC.
og_image: solutions/grpc/wiremock_grpc_opengraph.png
-header:
- image: solutions/grpc/header.png
-redirect_from:
-- "/grpc.html"
-- "/grpc/"
+hero: solutions/grpc/header.png
---
+# Mocking gRPC services
+
WireMock 3.2.0+ supports mocking of gRPC services via the
[WireMock extension for gRPC](https://github.com/wiremock/wiremock-grpc-extension).
@@ -19,7 +15,7 @@ The extension scans for descriptor files (generated from the service's `.proto`
Using these, it converts incoming messages to JSON before passing them to WireMock's core stubbing system which allows the existing JSON matchers to be used when matching requests.
It also converts JSON responses back into proto messages so that all of WireMock's response definition features including templating can be used.
-
+
The extension also adds a Java DSL that works with the Java classes generated by `protoc`, while also providing a more gRPC idiomatic way of defining stubs.
@@ -32,7 +28,7 @@ Add the extension JAR dependency to your project:
Gradle:
```gradle
-implementation 'org.wiremock:wiremock-grpc-extension:{{ site.grpc_extension_version }}'
+implementation 'org.wiremock:wiremock-grpc-extension:{{ versions.grpc_extension_version }}'
```
Maven:
@@ -41,7 +37,7 @@ Maven:
org.wiremockwiremock-grpc-extension
- {{ site.grpc_extension_version }}
+ {{ versions.grpc_extension_version }}
```
@@ -81,9 +77,10 @@ mockGreetingService.stubFor(
.willReturn(json("{ "greeting": "Hi Tom from JSON" }")));
```
-
Or with a templated response:
+{% raw %}
+
```java
mockGreetingService.stubFor(
method("greeting")
@@ -93,6 +90,8 @@ mockGreetingService.stubFor(
"{ \"greeting\": \"Hello {{jsonPath request.body '$.name'}}\" }")));
```
+{% endraw %}
+
### Stubbing via Java message objects
Matching and stubbing in the Java DSL can also be specified using the Java classes generated by `protoc`:
@@ -126,8 +125,8 @@ For a more complete set of examples, see the [Java demo project](https://github.
### Setup
-Download the standalone JAR at version 3.2.0 or above
- and the gRPC extension JAR into your working directory.
+Download the standalone JAR at version 3.2.0 or above
+ and the gRPC extension JAR into your working directory.
Create a WireMock data directory with a subdirectory for stub mappings and one for descriptor files:
@@ -144,7 +143,7 @@ protoc --descriptor_set_out wiremock/grpc/services.dsc ExampleServices.proto
Run WireMock with both on the classpath:
```bash
-java -cp wiremock-standalone-{{ site.wiremock_version }}.jar:wiremock-grpc-extension-standalone-{{ site.grpc_extension_version }}.jar \
+java -cp wiremock-standalone-{{ versions.wiremock_version }}.jar:wiremock-grpc-extension-standalone-{{ versions.grpc_extension_version }}.jar \
wiremock.Run \
--root-dir wiremock-data
```
@@ -174,4 +173,4 @@ gRPC stubs are defined using WireMock's standard JSON format. Requests should al
## More Demos
-For more see the [standalone demo project](https://github.com/wiremock/wiremock-grpc-demos/tree/main/standalone).
\ No newline at end of file
+For more see the [standalone demo project](https://github.com/wiremock/wiremock-grpc-demos/tree/main/standalone).
diff --git a/_docs/https.md b/_docs/https.md
index 289c16c4..a8248dc8 100644
--- a/_docs/https.md
+++ b/_docs/https.md
@@ -1,11 +1,11 @@
---
-layout: docs
-title: Serving HTTPs
-meta_title: Using WireMock with HTTPs using self-signed or custom certificates | WireMock
-redirect_from: "/https.html"
-description: WireMock can optionally accept requests over HTTPS. By default it will serve its own self-signed TLS certificate.
+description: >
+ WireMock can optionally accept requests over HTTPS using self-signed or custom certificates.
+ By default it will serve its own self-signed TLS certificate.
---
+# Serving HTTPs
+
WireMock can optionally accept requests over HTTPs. By default it will serve its own self-signed TLS certificate, but this can be
overridden if required by providing a keystore containing another certificate.
@@ -76,4 +76,4 @@ HTTP port with a client that's expecting HTTPS (i.e. has `https://` in the URL).
`org.apache.hc.core5.http.NoHttpResponseException: The target server failed to respond`: Could mean you've tried to connect to the HTTPS port with a
client expecting HTTP.
-`javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target`: You are using WireMock's default (self-signed) TLS certificate or another certificate that isn't signed by a CA. In this case you need to specifically configure your HTTP client to trust the certificate being presented, or to trust all certificates. Here is an example of [how to do this with the Apache HTTP client](https://github.com/tomakehurst/wiremock/blob/{{ site.wiremock_version }}/src/main/java/com/github/tomakehurst/wiremock/http/HttpClientFactory.java).
+`javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target`: You are using WireMock's default (self-signed) TLS certificate or another certificate that isn't signed by a CA. In this case you need to specifically configure your HTTP client to trust the certificate being presented, or to trust all certificates. Here is an example of [how to do this with the Apache HTTP client](https://github.com/wiremock/wiremock/blob/{{ versions.wiremock_version }}/src/main/java/com/github/tomakehurst/wiremock/http/HttpClientFactory.java).
diff --git a/images/WireMockShots.png b/_docs/images/WireMockShots.png
similarity index 100%
rename from images/WireMockShots.png
rename to _docs/images/WireMockShots.png
diff --git a/images/bio-photo.jpg b/_docs/images/bio-photo.jpg
similarity index 100%
rename from images/bio-photo.jpg
rename to _docs/images/bio-photo.jpg
diff --git a/images/blackGithubIcon.svg b/_docs/images/blackGithubIcon.svg
similarity index 100%
rename from images/blackGithubIcon.svg
rename to _docs/images/blackGithubIcon.svg
diff --git a/images/clients/em.jpg b/_docs/images/clients/em.jpg
similarity index 100%
rename from images/clients/em.jpg
rename to _docs/images/clients/em.jpg
diff --git a/images/clients/ft.jpg b/_docs/images/clients/ft.jpg
similarity index 100%
rename from images/clients/ft.jpg
rename to _docs/images/clients/ft.jpg
diff --git a/images/clients/intuit.jpg b/_docs/images/clients/intuit.jpg
similarity index 100%
rename from images/clients/intuit.jpg
rename to _docs/images/clients/intuit.jpg
diff --git a/images/clients/piksel.jpg b/_docs/images/clients/piksel.jpg
similarity index 100%
rename from images/clients/piksel.jpg
rename to _docs/images/clients/piksel.jpg
diff --git a/images/clients/pivotal.jpg b/_docs/images/clients/pivotal.jpg
similarity index 100%
rename from images/clients/pivotal.jpg
rename to _docs/images/clients/pivotal.jpg
diff --git a/images/clients/sky.jpg b/_docs/images/clients/sky.jpg
similarity index 100%
rename from images/clients/sky.jpg
rename to _docs/images/clients/sky.jpg
diff --git a/images/clients/softwire.jpg b/_docs/images/clients/softwire.jpg
similarity index 100%
rename from images/clients/softwire.jpg
rename to _docs/images/clients/softwire.jpg
diff --git a/images/clients/theguardian.jpg b/_docs/images/clients/theguardian.jpg
similarity index 100%
rename from images/clients/theguardian.jpg
rename to _docs/images/clients/theguardian.jpg
diff --git a/images/clients/yenlo.jpg b/_docs/images/clients/yenlo.jpg
similarity index 100%
rename from images/clients/yenlo.jpg
rename to _docs/images/clients/yenlo.jpg
diff --git a/_docs/images/closeMenuIcon.svg b/_docs/images/closeMenuIcon.svg
new file mode 100644
index 00000000..8ad74f0e
--- /dev/null
+++ b/_docs/images/closeMenuIcon.svg
@@ -0,0 +1,3 @@
+
diff --git a/images/closeModalIcon.png b/_docs/images/closeModalIcon.png
similarity index 100%
rename from images/closeModalIcon.png
rename to _docs/images/closeModalIcon.png
diff --git a/images/codeTabsFootergithubIcon.svg b/_docs/images/codeTabsFootergithubIcon.svg
similarity index 100%
rename from images/codeTabsFootergithubIcon.svg
rename to _docs/images/codeTabsFootergithubIcon.svg
diff --git a/images/ctDownloadIcon.svg b/_docs/images/ctDownloadIcon.svg
similarity index 100%
rename from images/ctDownloadIcon.svg
rename to _docs/images/ctDownloadIcon.svg
diff --git a/images/ctGithubDownloadIcon.svg b/_docs/images/ctGithubDownloadIcon.svg
similarity index 100%
rename from images/ctGithubDownloadIcon.svg
rename to _docs/images/ctGithubDownloadIcon.svg
diff --git a/images/ctStarIcon.svg b/_docs/images/ctStarIcon.svg
similarity index 100%
rename from images/ctStarIcon.svg
rename to _docs/images/ctStarIcon.svg
diff --git a/images/ctUserIcon.svg b/_docs/images/ctUserIcon.svg
similarity index 100%
rename from images/ctUserIcon.svg
rename to _docs/images/ctUserIcon.svg
diff --git a/_docs/images/faultIcon.svg b/_docs/images/faultIcon.svg
new file mode 100644
index 00000000..b3744027
--- /dev/null
+++ b/_docs/images/faultIcon.svg
@@ -0,0 +1,16 @@
+
diff --git a/images/firefox-proxy-screenshot.png b/_docs/images/firefox-proxy-screenshot.png
similarity index 100%
rename from images/firefox-proxy-screenshot.png
rename to _docs/images/firefox-proxy-screenshot.png
diff --git a/_docs/images/hamburgerMenuIcon.svg b/_docs/images/hamburgerMenuIcon.svg
new file mode 100644
index 00000000..be86660b
--- /dev/null
+++ b/_docs/images/hamburgerMenuIcon.svg
@@ -0,0 +1,3 @@
+
diff --git a/images/idea-comparison-failure.png b/_docs/images/idea-comparison-failure.png
similarity index 100%
rename from images/idea-comparison-failure.png
rename to _docs/images/idea-comparison-failure.png
diff --git a/images/idea-shots.png b/_docs/images/idea-shots.png
similarity index 100%
rename from images/idea-shots.png
rename to _docs/images/idea-shots.png
diff --git a/images/ivy.png b/_docs/images/ivy.png
similarity index 100%
rename from images/ivy.png
rename to _docs/images/ivy.png
diff --git a/images/java-wiremock-idea-shot.png b/_docs/images/java-wiremock-idea-shot.png
similarity index 100%
rename from images/java-wiremock-idea-shot.png
rename to _docs/images/java-wiremock-idea-shot.png
diff --git a/images/java-wiremock-sample-idea.png b/_docs/images/java-wiremock-sample-idea.png
similarity index 100%
rename from images/java-wiremock-sample-idea.png
rename to _docs/images/java-wiremock-sample-idea.png
diff --git a/images/java-wiremock-sample.jpg b/_docs/images/java-wiremock-sample.jpg
similarity index 100%
rename from images/java-wiremock-sample.jpg
rename to _docs/images/java-wiremock-sample.jpg
diff --git a/images/json-wiremock-sample.jpg b/_docs/images/json-wiremock-sample.jpg
similarity index 100%
rename from images/json-wiremock-sample.jpg
rename to _docs/images/json-wiremock-sample.jpg
diff --git a/images/leftHeaderHP.png b/_docs/images/leftHeaderHP.png
similarity index 100%
rename from images/leftHeaderHP.png
rename to _docs/images/leftHeaderHP.png
diff --git a/images/logos/EW-logo.png b/_docs/images/logos/EW-logo.png
similarity index 100%
rename from images/logos/EW-logo.png
rename to _docs/images/logos/EW-logo.png
diff --git a/images/logos/FT-Logo.jpg b/_docs/images/logos/FT-Logo.jpg
similarity index 100%
rename from images/logos/FT-Logo.jpg
rename to _docs/images/logos/FT-Logo.jpg
diff --git a/images/logos/Piksel_master.png b/_docs/images/logos/Piksel_master.png
similarity index 100%
rename from images/logos/Piksel_master.png
rename to _docs/images/logos/Piksel_master.png
diff --git a/images/logos/Pivotal_TealOnWhite.png b/_docs/images/logos/Pivotal_TealOnWhite.png
similarity index 100%
rename from images/logos/Pivotal_TealOnWhite.png
rename to _docs/images/logos/Pivotal_TealOnWhite.png
diff --git a/images/logos/Pivotal_WhiteOnTeal.png b/_docs/images/logos/Pivotal_WhiteOnTeal.png
similarity index 100%
rename from images/logos/Pivotal_WhiteOnTeal.png
rename to _docs/images/logos/Pivotal_WhiteOnTeal.png
diff --git a/images/logos/The_Guardian_logo.png b/_docs/images/logos/The_Guardian_logo.png
similarity index 100%
rename from images/logos/The_Guardian_logo.png
rename to _docs/images/logos/The_Guardian_logo.png
diff --git a/images/logos/Yenlo_logo_trans.png b/_docs/images/logos/Yenlo_logo_trans.png
similarity index 100%
rename from images/logos/Yenlo_logo_trans.png
rename to _docs/images/logos/Yenlo_logo_trans.png
diff --git a/_docs/images/logos/doc-sections/bug.svg b/_docs/images/logos/doc-sections/bug.svg
new file mode 100644
index 00000000..df6d6936
--- /dev/null
+++ b/_docs/images/logos/doc-sections/bug.svg
@@ -0,0 +1,13 @@
+
+
+
\ No newline at end of file
diff --git a/images/logos/doc-sections/checkcircle.svg b/_docs/images/logos/doc-sections/checkcircle.svg
similarity index 100%
rename from images/logos/doc-sections/checkcircle.svg
rename to _docs/images/logos/doc-sections/checkcircle.svg
diff --git a/_docs/images/logos/doc-sections/checklist.svg b/_docs/images/logos/doc-sections/checklist.svg
new file mode 100644
index 00000000..c1333273
--- /dev/null
+++ b/_docs/images/logos/doc-sections/checklist.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/images/logos/doc-sections/cloud.svg b/_docs/images/logos/doc-sections/cloud.svg
similarity index 100%
rename from images/logos/doc-sections/cloud.svg
rename to _docs/images/logos/doc-sections/cloud.svg
diff --git a/images/logos/doc-sections/community.svg b/_docs/images/logos/doc-sections/community.svg
similarity index 100%
rename from images/logos/doc-sections/community.svg
rename to _docs/images/logos/doc-sections/community.svg
diff --git a/images/logos/doc-sections/connect.svg b/_docs/images/logos/doc-sections/connect.svg
similarity index 100%
rename from images/logos/doc-sections/connect.svg
rename to _docs/images/logos/doc-sections/connect.svg
diff --git a/images/logos/doc-sections/document.svg b/_docs/images/logos/doc-sections/document.svg
similarity index 100%
rename from images/logos/doc-sections/document.svg
rename to _docs/images/logos/doc-sections/document.svg
diff --git a/images/logos/doc-sections/documentBar.svg b/_docs/images/logos/doc-sections/documentBar.svg
similarity index 100%
rename from images/logos/doc-sections/documentBar.svg
rename to _docs/images/logos/doc-sections/documentBar.svg
diff --git a/_docs/images/logos/doc-sections/download.svg b/_docs/images/logos/doc-sections/download.svg
new file mode 100644
index 00000000..f534de16
--- /dev/null
+++ b/_docs/images/logos/doc-sections/download.svg
@@ -0,0 +1,24 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/doc-sections/edit.svg b/_docs/images/logos/doc-sections/edit.svg
new file mode 100644
index 00000000..359132ad
--- /dev/null
+++ b/_docs/images/logos/doc-sections/edit.svg
@@ -0,0 +1,19 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/doc-sections/extensibility.svg b/_docs/images/logos/doc-sections/extensibility.svg
new file mode 100644
index 00000000..5e7de1d7
--- /dev/null
+++ b/_docs/images/logos/doc-sections/extensibility.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/images/logos/doc-sections/help-mono.svg b/_docs/images/logos/doc-sections/help-mono.svg
similarity index 100%
rename from images/logos/doc-sections/help-mono.svg
rename to _docs/images/logos/doc-sections/help-mono.svg
diff --git a/_docs/images/logos/doc-sections/help.svg b/_docs/images/logos/doc-sections/help.svg
new file mode 100644
index 00000000..352d91f7
--- /dev/null
+++ b/_docs/images/logos/doc-sections/help.svg
@@ -0,0 +1,51 @@
+
+
+
\ No newline at end of file
diff --git a/images/logos/doc-sections/helpsec.svg b/_docs/images/logos/doc-sections/helpsec.svg
similarity index 100%
rename from images/logos/doc-sections/helpsec.svg
rename to _docs/images/logos/doc-sections/helpsec.svg
diff --git a/_docs/images/logos/doc-sections/home.svg b/_docs/images/logos/doc-sections/home.svg
new file mode 100644
index 00000000..730b9914
--- /dev/null
+++ b/_docs/images/logos/doc-sections/home.svg
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/images/logos/doc-sections/link.svg b/_docs/images/logos/doc-sections/link.svg
similarity index 100%
rename from images/logos/doc-sections/link.svg
rename to _docs/images/logos/doc-sections/link.svg
diff --git a/images/logos/doc-sections/loudspeaker.svg b/_docs/images/logos/doc-sections/loudspeaker.svg
similarity index 100%
rename from images/logos/doc-sections/loudspeaker.svg
rename to _docs/images/logos/doc-sections/loudspeaker.svg
diff --git a/images/logos/doc-sections/plus.svg b/_docs/images/logos/doc-sections/plus.svg
similarity index 100%
rename from images/logos/doc-sections/plus.svg
rename to _docs/images/logos/doc-sections/plus.svg
diff --git a/images/logos/doc-sections/plusnew.svg b/_docs/images/logos/doc-sections/plusnew.svg
similarity index 100%
rename from images/logos/doc-sections/plusnew.svg
rename to _docs/images/logos/doc-sections/plusnew.svg
diff --git a/_docs/images/logos/doc-sections/quickstart.svg b/_docs/images/logos/doc-sections/quickstart.svg
new file mode 100644
index 00000000..3e65937a
--- /dev/null
+++ b/_docs/images/logos/doc-sections/quickstart.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/doc-sections/slack.svg b/_docs/images/logos/doc-sections/slack.svg
new file mode 100644
index 00000000..004e2663
--- /dev/null
+++ b/_docs/images/logos/doc-sections/slack.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_docs/images/logos/doc-sections/summary.svg b/_docs/images/logos/doc-sections/summary.svg
new file mode 100644
index 00000000..0a23259c
--- /dev/null
+++ b/_docs/images/logos/doc-sections/summary.svg
@@ -0,0 +1,8 @@
+
+
\ No newline at end of file
diff --git a/images/logos/doc-sections/team.svg b/_docs/images/logos/doc-sections/team.svg
similarity index 100%
rename from images/logos/doc-sections/team.svg
rename to _docs/images/logos/doc-sections/team.svg
diff --git a/_docs/images/logos/doc-sections/template.svg b/_docs/images/logos/doc-sections/template.svg
new file mode 100644
index 00000000..13246861
--- /dev/null
+++ b/_docs/images/logos/doc-sections/template.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/images/logos/intuit_blue.gif b/_docs/images/logos/intuit_blue.gif
similarity index 100%
rename from images/logos/intuit_blue.gif
rename to _docs/images/logos/intuit_blue.gif
diff --git a/images/logos/sky-logo.png b/_docs/images/logos/sky-logo.png
similarity index 100%
rename from images/logos/sky-logo.png
rename to _docs/images/logos/sky-logo.png
diff --git a/images/logos/softwire-logo.jpg b/_docs/images/logos/softwire-logo.jpg
similarity index 100%
rename from images/logos/softwire-logo.jpg
rename to _docs/images/logos/softwire-logo.jpg
diff --git a/_docs/images/logos/technology/android.svg b/_docs/images/logos/technology/android.svg
new file mode 100644
index 00000000..27460deb
--- /dev/null
+++ b/_docs/images/logos/technology/android.svg
@@ -0,0 +1,25 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/c.png b/_docs/images/logos/technology/c.png
new file mode 100644
index 00000000..dc7dbd7b
Binary files /dev/null and b/_docs/images/logos/technology/c.png differ
diff --git a/_docs/images/logos/technology/cpp.png b/_docs/images/logos/technology/cpp.png
new file mode 100644
index 00000000..aaeb184b
Binary files /dev/null and b/_docs/images/logos/technology/cpp.png differ
diff --git a/_docs/images/logos/technology/docker.svg b/_docs/images/logos/technology/docker.svg
new file mode 100644
index 00000000..8529e9d8
--- /dev/null
+++ b/_docs/images/logos/technology/docker.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/dotnet.svg b/_docs/images/logos/technology/dotnet.svg
new file mode 100644
index 00000000..f4a6b619
--- /dev/null
+++ b/_docs/images/logos/technology/dotnet.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/golang.svg b/_docs/images/logos/technology/golang.svg
new file mode 100644
index 00000000..dbbb46eb
--- /dev/null
+++ b/_docs/images/logos/technology/golang.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/gradle.svg b/_docs/images/logos/technology/gradle.svg
new file mode 100644
index 00000000..fb75dfee
--- /dev/null
+++ b/_docs/images/logos/technology/gradle.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/graphql.svg b/_docs/images/logos/technology/graphql.svg
new file mode 100644
index 00000000..779374f7
--- /dev/null
+++ b/_docs/images/logos/technology/graphql.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/groovy.svg b/_docs/images/logos/technology/groovy.svg
new file mode 100644
index 00000000..34bd134f
--- /dev/null
+++ b/_docs/images/logos/technology/groovy.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/grpc.png b/_docs/images/logos/technology/grpc.png
new file mode 100644
index 00000000..30061b6a
Binary files /dev/null and b/_docs/images/logos/technology/grpc.png differ
diff --git a/_docs/images/logos/technology/helm.svg b/_docs/images/logos/technology/helm.svg
new file mode 100644
index 00000000..f16e157a
--- /dev/null
+++ b/_docs/images/logos/technology/helm.svg
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/http.svg b/_docs/images/logos/technology/http.svg
new file mode 100644
index 00000000..1a1658a0
--- /dev/null
+++ b/_docs/images/logos/technology/http.svg
@@ -0,0 +1,28 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/https.svg b/_docs/images/logos/technology/https.svg
new file mode 100644
index 00000000..14e8f802
--- /dev/null
+++ b/_docs/images/logos/technology/https.svg
@@ -0,0 +1,28 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/jar.svg b/_docs/images/logos/technology/jar.svg
new file mode 100644
index 00000000..bae5c933
--- /dev/null
+++ b/_docs/images/logos/technology/jar.svg
@@ -0,0 +1,41 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/java.svg b/_docs/images/logos/technology/java.svg
new file mode 100644
index 00000000..9ad31efa
--- /dev/null
+++ b/_docs/images/logos/technology/java.svg
@@ -0,0 +1,38 @@
+
+
+
+
diff --git a/_docs/images/logos/technology/kotlin.svg b/_docs/images/logos/technology/kotlin.svg
new file mode 100644
index 00000000..05c2515d
--- /dev/null
+++ b/_docs/images/logos/technology/kotlin.svg
@@ -0,0 +1,19 @@
+
+
+
diff --git a/_docs/images/logos/technology/kubernetes.svg b/_docs/images/logos/technology/kubernetes.svg
new file mode 100644
index 00000000..58ab457b
--- /dev/null
+++ b/_docs/images/logos/technology/kubernetes.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/maven.svg b/_docs/images/logos/technology/maven.svg
new file mode 100644
index 00000000..6a5e1b02
--- /dev/null
+++ b/_docs/images/logos/technology/maven.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/micronaut.svg b/_docs/images/logos/technology/micronaut.svg
new file mode 100644
index 00000000..fd988896
--- /dev/null
+++ b/_docs/images/logos/technology/micronaut.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/nodejs.svg b/_docs/images/logos/technology/nodejs.svg
new file mode 100644
index 00000000..ec5b3096
--- /dev/null
+++ b/_docs/images/logos/technology/nodejs.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/npm.svg b/_docs/images/logos/technology/npm.svg
new file mode 100644
index 00000000..69647ede
--- /dev/null
+++ b/_docs/images/logos/technology/npm.svg
@@ -0,0 +1,5 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/openshift.svg b/_docs/images/logos/technology/openshift.svg
new file mode 100644
index 00000000..5759558e
--- /dev/null
+++ b/_docs/images/logos/technology/openshift.svg
@@ -0,0 +1,32 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/php.svg b/_docs/images/logos/technology/php.svg
new file mode 100644
index 00000000..357eb485
--- /dev/null
+++ b/_docs/images/logos/technology/php.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/prometheus.svg b/_docs/images/logos/technology/prometheus.svg
new file mode 100644
index 00000000..f39b1ba3
--- /dev/null
+++ b/_docs/images/logos/technology/prometheus.svg
@@ -0,0 +1,8 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/python.svg b/_docs/images/logos/technology/python.svg
new file mode 100644
index 00000000..8aa9a107
--- /dev/null
+++ b/_docs/images/logos/technology/python.svg
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/quarkus.svg b/_docs/images/logos/technology/quarkus.svg
new file mode 100644
index 00000000..be721de2
--- /dev/null
+++ b/_docs/images/logos/technology/quarkus.svg
@@ -0,0 +1,12 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/ruby.svg b/_docs/images/logos/technology/ruby.svg
new file mode 100644
index 00000000..d852a3ce
--- /dev/null
+++ b/_docs/images/logos/technology/ruby.svg
@@ -0,0 +1,121 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/rust.svg b/_docs/images/logos/technology/rust.svg
new file mode 100644
index 00000000..e4541543
--- /dev/null
+++ b/_docs/images/logos/technology/rust.svg
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/spring.svg b/_docs/images/logos/technology/spring.svg
new file mode 100644
index 00000000..04926d62
--- /dev/null
+++ b/_docs/images/logos/technology/spring.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/testcontainers.svg b/_docs/images/logos/technology/testcontainers.svg
new file mode 100644
index 00000000..7b0ee73d
--- /dev/null
+++ b/_docs/images/logos/technology/testcontainers.svg
@@ -0,0 +1,17 @@
+
+
\ No newline at end of file
diff --git a/_docs/images/logos/technology/webhooks.svg b/_docs/images/logos/technology/webhooks.svg
new file mode 100644
index 00000000..cfd60f01
--- /dev/null
+++ b/_docs/images/logos/technology/webhooks.svg
@@ -0,0 +1,12 @@
+
+
+
\ No newline at end of file
diff --git a/images/logos/wiremock/logo_small.svg b/_docs/images/logos/wiremock/logo_small.svg
similarity index 100%
rename from images/logos/wiremock/logo_small.svg
rename to _docs/images/logos/wiremock/logo_small.svg
diff --git a/images/logos/wiremock/logo_square.svg b/_docs/images/logos/wiremock/logo_square.svg
similarity index 100%
rename from images/logos/wiremock/logo_square.svg
rename to _docs/images/logos/wiremock/logo_square.svg
diff --git a/images/logos/wiremock/logo_wide.svg b/_docs/images/logos/wiremock/logo_wide.svg
similarity index 100%
rename from images/logos/wiremock/logo_wide.svg
rename to _docs/images/logos/wiremock/logo_wide.svg
diff --git a/images/mm-browser-mockups.png b/_docs/images/mm-browser-mockups.png
similarity index 100%
rename from images/mm-browser-mockups.png
rename to _docs/images/mm-browser-mockups.png
diff --git a/images/mm-layout-examples.png b/_docs/images/mm-layout-examples.png
similarity index 100%
rename from images/mm-layout-examples.png
rename to _docs/images/mm-layout-examples.png
diff --git a/images/mocklab/Mocklab_Logo_4x.png b/_docs/images/mocklab/Mocklab_Logo_4x.png
similarity index 100%
rename from images/mocklab/Mocklab_Logo_4x.png
rename to _docs/images/mocklab/Mocklab_Logo_4x.png
diff --git a/images/mocklab/Mocklab_Logo_4x_greyscale.png b/_docs/images/mocklab/Mocklab_Logo_4x_greyscale.png
similarity index 100%
rename from images/mocklab/Mocklab_Logo_4x_greyscale.png
rename to _docs/images/mocklab/Mocklab_Logo_4x_greyscale.png
diff --git a/images/mocklab/rest-example-stubs-screenshot.png b/_docs/images/mocklab/rest-example-stubs-screenshot.png
similarity index 100%
rename from images/mocklab/rest-example-stubs-screenshot.png
rename to _docs/images/mocklab/rest-example-stubs-screenshot.png
diff --git a/images/mocklab/stub-form-screenshot-5.png b/_docs/images/mocklab/stub-form-screenshot-5.png
similarity index 100%
rename from images/mocklab/stub-form-screenshot-5.png
rename to _docs/images/mocklab/stub-form-screenshot-5.png
diff --git a/images/openSourceRightIcon.svg b/_docs/images/openSourceRightIcon.svg
similarity index 100%
rename from images/openSourceRightIcon.svg
rename to _docs/images/openSourceRightIcon.svg
diff --git a/images/opengraphs/default.png b/_docs/images/opengraphs/default.png
similarity index 100%
rename from images/opengraphs/default.png
rename to _docs/images/opengraphs/default.png
diff --git a/images/paypalIcon.png b/_docs/images/paypalIcon.png
similarity index 100%
rename from images/paypalIcon.png
rename to _docs/images/paypalIcon.png
diff --git a/images/polygon-texture-2.jpg b/_docs/images/polygon-texture-2.jpg
old mode 100755
new mode 100644
similarity index 100%
rename from images/polygon-texture-2.jpg
rename to _docs/images/polygon-texture-2.jpg
diff --git a/_docs/images/recordIcon.svg b/_docs/images/recordIcon.svg
new file mode 100644
index 00000000..50b8a2d0
--- /dev/null
+++ b/_docs/images/recordIcon.svg
@@ -0,0 +1,12 @@
+
diff --git a/images/recorder-screenshot.png b/_docs/images/recorder-screenshot.png
similarity index 100%
rename from images/recorder-screenshot.png
rename to _docs/images/recorder-screenshot.png
diff --git a/_docs/images/requestIcon.svg b/_docs/images/requestIcon.svg
new file mode 100644
index 00000000..8d8c253d
--- /dev/null
+++ b/_docs/images/requestIcon.svg
@@ -0,0 +1,4 @@
+
diff --git a/_docs/images/responseIcon.svg b/_docs/images/responseIcon.svg
new file mode 100644
index 00000000..114c7214
--- /dev/null
+++ b/_docs/images/responseIcon.svg
@@ -0,0 +1,17 @@
+
diff --git a/images/rightHeaderHP.png b/_docs/images/rightHeaderHP.png
similarity index 100%
rename from images/rightHeaderHP.png
rename to _docs/images/rightHeaderHP.png
diff --git a/images/screenshots/advanced-section-body-match.png b/_docs/images/screenshots/advanced-section-body-match.png
similarity index 100%
rename from images/screenshots/advanced-section-body-match.png
rename to _docs/images/screenshots/advanced-section-body-match.png
diff --git a/images/screenshots/base-url.png b/_docs/images/screenshots/base-url.png
similarity index 100%
rename from images/screenshots/base-url.png
rename to _docs/images/screenshots/base-url.png
diff --git a/images/screenshots/basic-new-stub.png b/_docs/images/screenshots/basic-new-stub.png
similarity index 100%
rename from images/screenshots/basic-new-stub.png
rename to _docs/images/screenshots/basic-new-stub.png
diff --git a/images/screenshots/basic-response.png b/_docs/images/screenshots/basic-response.png
similarity index 100%
rename from images/screenshots/basic-response.png
rename to _docs/images/screenshots/basic-response.png
diff --git a/images/screenshots/body-template-screenshot.png b/_docs/images/screenshots/body-template-screenshot.png
similarity index 100%
rename from images/screenshots/body-template-screenshot.png
rename to _docs/images/screenshots/body-template-screenshot.png
diff --git a/images/screenshots/chunked-dribble-delay.png b/_docs/images/screenshots/chunked-dribble-delay.png
similarity index 100%
rename from images/screenshots/chunked-dribble-delay.png
rename to _docs/images/screenshots/chunked-dribble-delay.png
diff --git a/images/screenshots/clone-stub-button.png b/_docs/images/screenshots/clone-stub-button.png
similarity index 100%
rename from images/screenshots/clone-stub-button.png
rename to _docs/images/screenshots/clone-stub-button.png
diff --git a/images/screenshots/default-equal-to-json.png b/_docs/images/screenshots/default-equal-to-json.png
similarity index 100%
rename from images/screenshots/default-equal-to-json.png
rename to _docs/images/screenshots/default-equal-to-json.png
diff --git a/images/screenshots/default-response-example-request.png b/_docs/images/screenshots/default-response-example-request.png
similarity index 100%
rename from images/screenshots/default-response-example-request.png
rename to _docs/images/screenshots/default-response-example-request.png
diff --git a/images/screenshots/default-response-example-response.png b/_docs/images/screenshots/default-response-example-response.png
similarity index 100%
rename from images/screenshots/default-response-example-response.png
rename to _docs/images/screenshots/default-response-example-response.png
diff --git a/images/screenshots/enable-response-templating-screenshot.png b/_docs/images/screenshots/enable-response-templating-screenshot.png
similarity index 100%
rename from images/screenshots/enable-response-templating-screenshot.png
rename to _docs/images/screenshots/enable-response-templating-screenshot.png
diff --git a/images/screenshots/enable-xml-placeholders.png b/_docs/images/screenshots/enable-xml-placeholders.png
similarity index 100%
rename from images/screenshots/enable-xml-placeholders.png
rename to _docs/images/screenshots/enable-xml-placeholders.png
diff --git a/images/screenshots/equal-to-json.png b/_docs/images/screenshots/equal-to-json.png
similarity index 100%
rename from images/screenshots/equal-to-json.png
rename to _docs/images/screenshots/equal-to-json.png
diff --git a/images/screenshots/equal-to-xml-with-placeholders.png b/_docs/images/screenshots/equal-to-xml-with-placeholders.png
similarity index 100%
rename from images/screenshots/equal-to-xml-with-placeholders.png
rename to _docs/images/screenshots/equal-to-xml-with-placeholders.png
diff --git a/images/screenshots/equal-to-xml.png b/_docs/images/screenshots/equal-to-xml.png
similarity index 100%
rename from images/screenshots/equal-to-xml.png
rename to _docs/images/screenshots/equal-to-xml.png
diff --git a/images/screenshots/export-button-on-toolbar.png b/_docs/images/screenshots/export-button-on-toolbar.png
similarity index 100%
rename from images/screenshots/export-button-on-toolbar.png
rename to _docs/images/screenshots/export-button-on-toolbar.png
diff --git a/images/screenshots/export-stubs.png b/_docs/images/screenshots/export-stubs.png
similarity index 100%
rename from images/screenshots/export-stubs.png
rename to _docs/images/screenshots/export-stubs.png
diff --git a/images/screenshots/fault-response.png b/_docs/images/screenshots/fault-response.png
similarity index 100%
rename from images/screenshots/fault-response.png
rename to _docs/images/screenshots/fault-response.png
diff --git a/images/screenshots/fixed-delay.png b/_docs/images/screenshots/fixed-delay.png
similarity index 100%
rename from images/screenshots/fixed-delay.png
rename to _docs/images/screenshots/fixed-delay.png
diff --git a/images/screenshots/header-template-screenshot.png b/_docs/images/screenshots/header-template-screenshot.png
similarity index 100%
rename from images/screenshots/header-template-screenshot.png
rename to _docs/images/screenshots/header-template-screenshot.png
diff --git a/images/screenshots/ignore-array-order.png b/_docs/images/screenshots/ignore-array-order.png
similarity index 100%
rename from images/screenshots/ignore-array-order.png
rename to _docs/images/screenshots/ignore-array-order.png
diff --git a/images/screenshots/ignore-extra-elements.png b/_docs/images/screenshots/ignore-extra-elements.png
similarity index 100%
rename from images/screenshots/ignore-extra-elements.png
rename to _docs/images/screenshots/ignore-extra-elements.png
diff --git a/images/screenshots/import-button-on-toolbar.png b/_docs/images/screenshots/import-button-on-toolbar.png
similarity index 100%
rename from images/screenshots/import-button-on-toolbar.png
rename to _docs/images/screenshots/import-button-on-toolbar.png
diff --git a/images/screenshots/import-file.png b/_docs/images/screenshots/import-file.png
similarity index 100%
rename from images/screenshots/import-file.png
rename to _docs/images/screenshots/import-file.png
diff --git a/images/screenshots/import-text.png b/_docs/images/screenshots/import-text.png
similarity index 100%
rename from images/screenshots/import-text.png
rename to _docs/images/screenshots/import-text.png
diff --git a/images/screenshots/json-placeholders.png b/_docs/images/screenshots/json-placeholders.png
similarity index 100%
rename from images/screenshots/json-placeholders.png
rename to _docs/images/screenshots/json-placeholders.png
diff --git a/images/screenshots/jsonpath-no-submatch.png b/_docs/images/screenshots/jsonpath-no-submatch.png
similarity index 100%
rename from images/screenshots/jsonpath-no-submatch.png
rename to _docs/images/screenshots/jsonpath-no-submatch.png
diff --git a/images/screenshots/jsonpath-with-submatch.png b/_docs/images/screenshots/jsonpath-with-submatch.png
similarity index 100%
rename from images/screenshots/jsonpath-with-submatch.png
rename to _docs/images/screenshots/jsonpath-with-submatch.png
diff --git a/images/screenshots/matches-json-path.png b/_docs/images/screenshots/matches-json-path.png
similarity index 100%
rename from images/screenshots/matches-json-path.png
rename to _docs/images/screenshots/matches-json-path.png
diff --git a/images/screenshots/mock-api-browser-screenshot.png b/_docs/images/screenshots/mock-api-browser-screenshot.png
similarity index 100%
rename from images/screenshots/mock-api-browser-screenshot.png
rename to _docs/images/screenshots/mock-api-browser-screenshot.png
diff --git a/images/screenshots/mock-rest-api/503-error-test-request.png b/_docs/images/screenshots/mock-rest-api/503-error-test-request.png
similarity index 100%
rename from images/screenshots/mock-rest-api/503-error-test-request.png
rename to _docs/images/screenshots/mock-rest-api/503-error-test-request.png
diff --git a/images/screenshots/mock-rest-api/503-response.png b/_docs/images/screenshots/mock-rest-api/503-response.png
similarity index 100%
rename from images/screenshots/mock-rest-api/503-response.png
rename to _docs/images/screenshots/mock-rest-api/503-response.png
diff --git a/images/screenshots/mock-rest-api/companies-list-1.png b/_docs/images/screenshots/mock-rest-api/companies-list-1.png
similarity index 100%
rename from images/screenshots/mock-rest-api/companies-list-1.png
rename to _docs/images/screenshots/mock-rest-api/companies-list-1.png
diff --git a/images/screenshots/mock-rest-api/companies-list-2.png b/_docs/images/screenshots/mock-rest-api/companies-list-2.png
similarity index 100%
rename from images/screenshots/mock-rest-api/companies-list-2.png
rename to _docs/images/screenshots/mock-rest-api/companies-list-2.png
diff --git a/images/screenshots/mock-rest-api/companies-scenario-1.png b/_docs/images/screenshots/mock-rest-api/companies-scenario-1.png
similarity index 100%
rename from images/screenshots/mock-rest-api/companies-scenario-1.png
rename to _docs/images/screenshots/mock-rest-api/companies-scenario-1.png
diff --git a/images/screenshots/mock-rest-api/companies-scenario-2.png b/_docs/images/screenshots/mock-rest-api/companies-scenario-2.png
similarity index 100%
rename from images/screenshots/mock-rest-api/companies-scenario-2.png
rename to _docs/images/screenshots/mock-rest-api/companies-scenario-2.png
diff --git a/images/screenshots/mock-rest-api/companies-scenario-state-change.png b/_docs/images/screenshots/mock-rest-api/companies-scenario-state-change.png
similarity index 100%
rename from images/screenshots/mock-rest-api/companies-scenario-state-change.png
rename to _docs/images/screenshots/mock-rest-api/companies-scenario-state-change.png
diff --git a/images/screenshots/mock-rest-api/contact-list-request.png b/_docs/images/screenshots/mock-rest-api/contact-list-request.png
similarity index 100%
rename from images/screenshots/mock-rest-api/contact-list-request.png
rename to _docs/images/screenshots/mock-rest-api/contact-list-request.png
diff --git a/images/screenshots/mock-rest-api/contact-list-response.png b/_docs/images/screenshots/mock-rest-api/contact-list-response.png
similarity index 100%
rename from images/screenshots/mock-rest-api/contact-list-response.png
rename to _docs/images/screenshots/mock-rest-api/contact-list-response.png
diff --git a/images/screenshots/mock-rest-api/contact-list-test-request.png b/_docs/images/screenshots/mock-rest-api/contact-list-test-request.png
similarity index 100%
rename from images/screenshots/mock-rest-api/contact-list-test-request.png
rename to _docs/images/screenshots/mock-rest-api/contact-list-test-request.png
diff --git a/images/screenshots/mock-rest-api/filtered-contacts-response.png b/_docs/images/screenshots/mock-rest-api/filtered-contacts-response.png
similarity index 100%
rename from images/screenshots/mock-rest-api/filtered-contacts-response.png
rename to _docs/images/screenshots/mock-rest-api/filtered-contacts-response.png
diff --git a/images/screenshots/mock-rest-api/matches-json-path.png b/_docs/images/screenshots/mock-rest-api/matches-json-path.png
similarity index 100%
rename from images/screenshots/mock-rest-api/matches-json-path.png
rename to _docs/images/screenshots/mock-rest-api/matches-json-path.png
diff --git a/images/screenshots/mock-rest-api/new-company-post.png b/_docs/images/screenshots/mock-rest-api/new-company-post.png
similarity index 100%
rename from images/screenshots/mock-rest-api/new-company-post.png
rename to _docs/images/screenshots/mock-rest-api/new-company-post.png
diff --git a/images/screenshots/mock-rest-api/new-contact-body-pattern.png b/_docs/images/screenshots/mock-rest-api/new-contact-body-pattern.png
similarity index 100%
rename from images/screenshots/mock-rest-api/new-contact-body-pattern.png
rename to _docs/images/screenshots/mock-rest-api/new-contact-body-pattern.png
diff --git a/images/screenshots/mock-rest-api/new-contact-post-stub.png b/_docs/images/screenshots/mock-rest-api/new-contact-post-stub.png
similarity index 100%
rename from images/screenshots/mock-rest-api/new-contact-post-stub.png
rename to _docs/images/screenshots/mock-rest-api/new-contact-post-stub.png
diff --git a/images/screenshots/mock-rest-api/new-contact-postman-mismatch.png b/_docs/images/screenshots/mock-rest-api/new-contact-postman-mismatch.png
similarity index 100%
rename from images/screenshots/mock-rest-api/new-contact-postman-mismatch.png
rename to _docs/images/screenshots/mock-rest-api/new-contact-postman-mismatch.png
diff --git a/images/screenshots/mock-rest-api/query-parameter-match.png b/_docs/images/screenshots/mock-rest-api/query-parameter-match.png
similarity index 100%
rename from images/screenshots/mock-rest-api/query-parameter-match.png
rename to _docs/images/screenshots/mock-rest-api/query-parameter-match.png
diff --git a/images/screenshots/mock-rest-api/raised-priority.png b/_docs/images/screenshots/mock-rest-api/raised-priority.png
similarity index 100%
rename from images/screenshots/mock-rest-api/raised-priority.png
rename to _docs/images/screenshots/mock-rest-api/raised-priority.png
diff --git a/images/screenshots/mock-rest-api/rest-api-template.png b/_docs/images/screenshots/mock-rest-api/rest-api-template.png
similarity index 100%
rename from images/screenshots/mock-rest-api/rest-api-template.png
rename to _docs/images/screenshots/mock-rest-api/rest-api-template.png
diff --git a/images/screenshots/mock-rest-api/single-contact-request.png b/_docs/images/screenshots/mock-rest-api/single-contact-request.png
similarity index 100%
rename from images/screenshots/mock-rest-api/single-contact-request.png
rename to _docs/images/screenshots/mock-rest-api/single-contact-request.png
diff --git a/images/screenshots/mock-rest-api/single-contact-response.png b/_docs/images/screenshots/mock-rest-api/single-contact-response.png
similarity index 100%
rename from images/screenshots/mock-rest-api/single-contact-response.png
rename to _docs/images/screenshots/mock-rest-api/single-contact-response.png
diff --git a/images/screenshots/mock-rest-api/templated-contact-request.png b/_docs/images/screenshots/mock-rest-api/templated-contact-request.png
similarity index 100%
rename from images/screenshots/mock-rest-api/templated-contact-request.png
rename to _docs/images/screenshots/mock-rest-api/templated-contact-request.png
diff --git a/images/screenshots/mock-rest-api/templated-contact-response.png b/_docs/images/screenshots/mock-rest-api/templated-contact-response.png
similarity index 100%
rename from images/screenshots/mock-rest-api/templated-contact-response.png
rename to _docs/images/screenshots/mock-rest-api/templated-contact-response.png
diff --git a/images/screenshots/mock-rest-api/templated-contact-test-request.png b/_docs/images/screenshots/mock-rest-api/templated-contact-test-request.png
similarity index 100%
rename from images/screenshots/mock-rest-api/templated-contact-test-request.png
rename to _docs/images/screenshots/mock-rest-api/templated-contact-test-request.png
diff --git a/images/screenshots/multiple-xpath-soap-match.png b/_docs/images/screenshots/multiple-xpath-soap-match.png
similarity index 100%
rename from images/screenshots/multiple-xpath-soap-match.png
rename to _docs/images/screenshots/multiple-xpath-soap-match.png
diff --git a/images/screenshots/new-body-pattern-button.png b/_docs/images/screenshots/new-body-pattern-button.png
similarity index 100%
rename from images/screenshots/new-body-pattern-button.png
rename to _docs/images/screenshots/new-body-pattern-button.png
diff --git a/images/screenshots/new-header-button.png b/_docs/images/screenshots/new-header-button.png
similarity index 100%
rename from images/screenshots/new-header-button.png
rename to _docs/images/screenshots/new-header-button.png
diff --git a/images/screenshots/new-mock-api-button.png b/_docs/images/screenshots/new-mock-api-button.png
similarity index 100%
rename from images/screenshots/new-mock-api-button.png
rename to _docs/images/screenshots/new-mock-api-button.png
diff --git a/images/screenshots/new-stub-button.png b/_docs/images/screenshots/new-stub-button.png
similarity index 100%
rename from images/screenshots/new-stub-button.png
rename to _docs/images/screenshots/new-stub-button.png
diff --git a/images/screenshots/new-to-do-item-field.png b/_docs/images/screenshots/new-to-do-item-field.png
similarity index 100%
rename from images/screenshots/new-to-do-item-field.png
rename to _docs/images/screenshots/new-to-do-item-field.png
diff --git a/images/screenshots/plain-proxy-response.png b/_docs/images/screenshots/plain-proxy-response.png
similarity index 100%
rename from images/screenshots/plain-proxy-response.png
rename to _docs/images/screenshots/plain-proxy-response.png
diff --git a/images/screenshots/postman-empty-api.png b/_docs/images/screenshots/postman-empty-api.png
similarity index 100%
rename from images/screenshots/postman-empty-api.png
rename to _docs/images/screenshots/postman-empty-api.png
diff --git a/images/screenshots/postman.png b/_docs/images/screenshots/postman.png
similarity index 100%
rename from images/screenshots/postman.png
rename to _docs/images/screenshots/postman.png
diff --git a/images/screenshots/proxy-all-by-default-stub.png b/_docs/images/screenshots/proxy-all-by-default-stub.png
similarity index 100%
rename from images/screenshots/proxy-all-by-default-stub.png
rename to _docs/images/screenshots/proxy-all-by-default-stub.png
diff --git a/images/screenshots/random-lognormal-delay.png b/_docs/images/screenshots/random-lognormal-delay.png
similarity index 100%
rename from images/screenshots/random-lognormal-delay.png
rename to _docs/images/screenshots/random-lognormal-delay.png
diff --git a/images/screenshots/random-uniform-delay.png b/_docs/images/screenshots/random-uniform-delay.png
similarity index 100%
rename from images/screenshots/random-uniform-delay.png
rename to _docs/images/screenshots/random-uniform-delay.png
diff --git a/images/screenshots/record-button-screenshot.png b/_docs/images/screenshots/record-button-screenshot.png
similarity index 100%
rename from images/screenshots/record-button-screenshot.png
rename to _docs/images/screenshots/record-button-screenshot.png
diff --git a/images/screenshots/record-dialog-screenshot-3.png b/_docs/images/screenshots/record-dialog-screenshot-3.png
similarity index 100%
rename from images/screenshots/record-dialog-screenshot-3.png
rename to _docs/images/screenshots/record-dialog-screenshot-3.png
diff --git a/images/screenshots/request-parameters.png b/_docs/images/screenshots/request-parameters.png
similarity index 100%
rename from images/screenshots/request-parameters.png
rename to _docs/images/screenshots/request-parameters.png
diff --git a/images/screenshots/response-headers.png b/_docs/images/screenshots/response-headers.png
similarity index 100%
rename from images/screenshots/response-headers.png
rename to _docs/images/screenshots/response-headers.png
diff --git a/images/screenshots/scenario-reset-button.png b/_docs/images/screenshots/scenario-reset-button.png
similarity index 100%
rename from images/screenshots/scenario-reset-button.png
rename to _docs/images/screenshots/scenario-reset-button.png
diff --git a/images/screenshots/scenario-single-item-stub-request.png b/_docs/images/screenshots/scenario-single-item-stub-request.png
similarity index 100%
rename from images/screenshots/scenario-single-item-stub-request.png
rename to _docs/images/screenshots/scenario-single-item-stub-request.png
diff --git a/images/screenshots/scenario-single-item-stub-response.png b/_docs/images/screenshots/scenario-single-item-stub-response.png
similarity index 100%
rename from images/screenshots/scenario-single-item-stub-response.png
rename to _docs/images/screenshots/scenario-single-item-stub-response.png
diff --git a/images/screenshots/scenarios-empty-list-stub-request.png b/_docs/images/screenshots/scenarios-empty-list-stub-request.png
similarity index 100%
rename from images/screenshots/scenarios-empty-list-stub-request.png
rename to _docs/images/screenshots/scenarios-empty-list-stub-request.png
diff --git a/images/screenshots/scenarios-empty-list-stub-response.png b/_docs/images/screenshots/scenarios-empty-list-stub-response.png
similarity index 100%
rename from images/screenshots/scenarios-empty-list-stub-response.png
rename to _docs/images/screenshots/scenarios-empty-list-stub-response.png
diff --git a/images/screenshots/scenarios-post-item-stub.png b/_docs/images/screenshots/scenarios-post-item-stub.png
similarity index 100%
rename from images/screenshots/scenarios-post-item-stub.png
rename to _docs/images/screenshots/scenarios-post-item-stub.png
diff --git a/images/screenshots/soap-action-header.png b/_docs/images/screenshots/soap-action-header.png
similarity index 100%
rename from images/screenshots/soap-action-header.png
rename to _docs/images/screenshots/soap-action-header.png
diff --git a/images/screenshots/soap-placeholders.png b/_docs/images/screenshots/soap-placeholders.png
similarity index 100%
rename from images/screenshots/soap-placeholders.png
rename to _docs/images/screenshots/soap-placeholders.png
diff --git a/images/screenshots/soap-request.png b/_docs/images/screenshots/soap-request.png
similarity index 100%
rename from images/screenshots/soap-request.png
rename to _docs/images/screenshots/soap-request.png
diff --git a/images/screenshots/soap-response.png b/_docs/images/screenshots/soap-response.png
similarity index 100%
rename from images/screenshots/soap-response.png
rename to _docs/images/screenshots/soap-response.png
diff --git a/images/screenshots/start-button-screenshot.png b/_docs/images/screenshots/start-button-screenshot.png
similarity index 100%
rename from images/screenshots/start-button-screenshot.png
rename to _docs/images/screenshots/start-button-screenshot.png
diff --git a/images/screenshots/stop-button-screenshot.png b/_docs/images/screenshots/stop-button-screenshot.png
similarity index 100%
rename from images/screenshots/stop-button-screenshot.png
rename to _docs/images/screenshots/stop-button-screenshot.png
diff --git a/images/screenshots/templated-proxy-response.png b/_docs/images/screenshots/templated-proxy-response.png
similarity index 100%
rename from images/screenshots/templated-proxy-response.png
rename to _docs/images/screenshots/templated-proxy-response.png
diff --git a/images/screenshots/to-do-bad-post-stub-request.png b/_docs/images/screenshots/to-do-bad-post-stub-request.png
similarity index 100%
rename from images/screenshots/to-do-bad-post-stub-request.png
rename to _docs/images/screenshots/to-do-bad-post-stub-request.png
diff --git a/images/screenshots/to-do-bad-post-stub-response.png b/_docs/images/screenshots/to-do-bad-post-stub-response.png
similarity index 100%
rename from images/screenshots/to-do-bad-post-stub-response.png
rename to _docs/images/screenshots/to-do-bad-post-stub-response.png
diff --git a/images/screenshots/to-do-error-page.png b/_docs/images/screenshots/to-do-error-page.png
similarity index 100%
rename from images/screenshots/to-do-error-page.png
rename to _docs/images/screenshots/to-do-error-page.png
diff --git a/images/screenshots/to-do-list-app.png b/_docs/images/screenshots/to-do-list-app.png
similarity index 100%
rename from images/screenshots/to-do-list-app.png
rename to _docs/images/screenshots/to-do-list-app.png
diff --git a/images/screenshots/to-do-list-success-message.png b/_docs/images/screenshots/to-do-list-success-message.png
similarity index 100%
rename from images/screenshots/to-do-list-success-message.png
rename to _docs/images/screenshots/to-do-list-success-message.png
diff --git a/images/screenshots/to-do-post-stub-request.png b/_docs/images/screenshots/to-do-post-stub-request.png
similarity index 100%
rename from images/screenshots/to-do-post-stub-request.png
rename to _docs/images/screenshots/to-do-post-stub-request.png
diff --git a/images/screenshots/to-do-post-stub-response.png b/_docs/images/screenshots/to-do-post-stub-response.png
similarity index 100%
rename from images/screenshots/to-do-post-stub-response.png
rename to _docs/images/screenshots/to-do-post-stub-response.png
diff --git a/images/screenshots/to-do-post-stub.png b/_docs/images/screenshots/to-do-post-stub.png
similarity index 100%
rename from images/screenshots/to-do-post-stub.png
rename to _docs/images/screenshots/to-do-post-stub.png
diff --git a/images/screenshots/to-do-request-log.png b/_docs/images/screenshots/to-do-request-log.png
similarity index 100%
rename from images/screenshots/to-do-request-log.png
rename to _docs/images/screenshots/to-do-request-log.png
diff --git a/images/screenshots/to-do-stub-old.png b/_docs/images/screenshots/to-do-stub-old.png
similarity index 100%
rename from images/screenshots/to-do-stub-old.png
rename to _docs/images/screenshots/to-do-stub-old.png
diff --git a/images/screenshots/to-do-stub-request.png b/_docs/images/screenshots/to-do-stub-request.png
similarity index 100%
rename from images/screenshots/to-do-stub-request.png
rename to _docs/images/screenshots/to-do-stub-request.png
diff --git a/images/screenshots/to-do-stub-response.png b/_docs/images/screenshots/to-do-stub-response.png
similarity index 100%
rename from images/screenshots/to-do-stub-response.png
rename to _docs/images/screenshots/to-do-stub-response.png
diff --git a/images/screenshots/to-do-stub.png b/_docs/images/screenshots/to-do-stub.png
similarity index 100%
rename from images/screenshots/to-do-stub.png
rename to _docs/images/screenshots/to-do-stub.png
diff --git a/images/screenshots/url-match-type.png b/_docs/images/screenshots/url-match-type.png
similarity index 100%
rename from images/screenshots/url-match-type.png
rename to _docs/images/screenshots/url-match-type.png
diff --git a/images/screenshots/url-path-and-query.png b/_docs/images/screenshots/url-path-and-query.png
similarity index 100%
rename from images/screenshots/url-path-and-query.png
rename to _docs/images/screenshots/url-path-and-query.png
diff --git a/images/screenshots/url-path-matching.png b/_docs/images/screenshots/url-path-matching.png
similarity index 100%
rename from images/screenshots/url-path-matching.png
rename to _docs/images/screenshots/url-path-matching.png
diff --git a/images/screenshots/wiremock-folder-drop.png b/_docs/images/screenshots/wiremock-folder-drop.png
similarity index 100%
rename from images/screenshots/wiremock-folder-drop.png
rename to _docs/images/screenshots/wiremock-folder-drop.png
diff --git a/images/screenshots/xpath-body-match.png b/_docs/images/screenshots/xpath-body-match.png
similarity index 100%
rename from images/screenshots/xpath-body-match.png
rename to _docs/images/screenshots/xpath-body-match.png
diff --git a/images/screenshots/xpath-soap-match.png b/_docs/images/screenshots/xpath-soap-match.png
similarity index 100%
rename from images/screenshots/xpath-soap-match.png
rename to _docs/images/screenshots/xpath-soap-match.png
diff --git a/images/separatorLine.png b/_docs/images/separatorLine.png
similarity index 100%
rename from images/separatorLine.png
rename to _docs/images/separatorLine.png
diff --git a/images/signupModalRobot.png b/_docs/images/signupModalRobot.png
similarity index 100%
rename from images/signupModalRobot.png
rename to _docs/images/signupModalRobot.png
diff --git a/images/slackIcon.svg b/_docs/images/slackIcon.svg
similarity index 100%
rename from images/slackIcon.svg
rename to _docs/images/slackIcon.svg
diff --git a/images/small-json-idea-shot.png b/_docs/images/small-json-idea-shot.png
similarity index 100%
rename from images/small-json-idea-shot.png
rename to _docs/images/small-json-idea-shot.png
diff --git a/images/solutions/graphql/wiremock_graphql_opengraph.png b/_docs/images/solutions/graphql/wiremock_graphql_opengraph.png
similarity index 100%
rename from images/solutions/graphql/wiremock_graphql_opengraph.png
rename to _docs/images/solutions/graphql/wiremock_graphql_opengraph.png
diff --git a/images/solutions/grpc/header.png b/_docs/images/solutions/grpc/header.png
similarity index 100%
rename from images/solutions/grpc/header.png
rename to _docs/images/solutions/grpc/header.png
diff --git a/images/solutions/grpc/intro_schema.png b/_docs/images/solutions/grpc/intro_schema.png
similarity index 100%
rename from images/solutions/grpc/intro_schema.png
rename to _docs/images/solutions/grpc/intro_schema.png
diff --git a/images/solutions/grpc/wiremock-grpc-opengraph.png b/_docs/images/solutions/grpc/wiremock-grpc-opengraph.png
similarity index 100%
rename from images/solutions/grpc/wiremock-grpc-opengraph.png
rename to _docs/images/solutions/grpc/wiremock-grpc-opengraph.png
diff --git a/images/solutions/testcontainers/testcontainers_c_logo_square.png b/_docs/images/solutions/testcontainers/testcontainers_c_logo_square.png
similarity index 100%
rename from images/solutions/testcontainers/testcontainers_c_logo_square.png
rename to _docs/images/solutions/testcontainers/testcontainers_c_logo_square.png
diff --git a/images/solutions/testcontainers/testcontainers_c_logo_wide.png b/_docs/images/solutions/testcontainers/testcontainers_c_logo_wide.png
similarity index 100%
rename from images/solutions/testcontainers/testcontainers_c_logo_wide.png
rename to _docs/images/solutions/testcontainers/testcontainers_c_logo_wide.png
diff --git a/images/solutions/testcontainers/testcontainers_c_opengraph.png b/_docs/images/solutions/testcontainers/testcontainers_c_opengraph.png
similarity index 100%
rename from images/solutions/testcontainers/testcontainers_c_opengraph.png
rename to _docs/images/solutions/testcontainers/testcontainers_c_opengraph.png
diff --git a/images/studioRightIcon.svg b/_docs/images/studioRightIcon.svg
similarity index 100%
rename from images/studioRightIcon.svg
rename to _docs/images/studioRightIcon.svg
diff --git a/images/twitterIcon.svg b/_docs/images/twitterIcon.svg
similarity index 100%
rename from images/twitterIcon.svg
rename to _docs/images/twitterIcon.svg
diff --git a/images/ui-bg_glass_20_555555_1x400.png b/_docs/images/ui-bg_glass_20_555555_1x400.png
similarity index 100%
rename from images/ui-bg_glass_20_555555_1x400.png
rename to _docs/images/ui-bg_glass_20_555555_1x400.png
diff --git a/images/ui-bg_glass_40_7E8AA2_1x400.png b/_docs/images/ui-bg_glass_40_7E8AA2_1x400.png
similarity index 100%
rename from images/ui-bg_glass_40_7E8AA2_1x400.png
rename to _docs/images/ui-bg_glass_40_7E8AA2_1x400.png
diff --git a/images/ui-bg_glass_40_ffc73d_1x400.png b/_docs/images/ui-bg_glass_40_ffc73d_1x400.png
similarity index 100%
rename from images/ui-bg_glass_40_ffc73d_1x400.png
rename to _docs/images/ui-bg_glass_40_ffc73d_1x400.png
diff --git a/images/ui-bg_gloss-wave_25_333333_500x100.png b/_docs/images/ui-bg_gloss-wave_25_333333_500x100.png
similarity index 100%
rename from images/ui-bg_gloss-wave_25_333333_500x100.png
rename to _docs/images/ui-bg_gloss-wave_25_333333_500x100.png
diff --git a/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/_docs/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
similarity index 100%
rename from images/ui-bg_highlight-soft_80_eeeeee_1x100.png
rename to _docs/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
diff --git a/images/ui-bg_inset-soft_25_000000_1x100.png b/_docs/images/ui-bg_inset-soft_25_000000_1x100.png
similarity index 100%
rename from images/ui-bg_inset-soft_25_000000_1x100.png
rename to _docs/images/ui-bg_inset-soft_25_000000_1x100.png
diff --git a/images/ui-bg_inset-soft_30_FF9800_1x100.png b/_docs/images/ui-bg_inset-soft_30_FF9800_1x100.png
similarity index 100%
rename from images/ui-bg_inset-soft_30_FF9800_1x100.png
rename to _docs/images/ui-bg_inset-soft_30_FF9800_1x100.png
diff --git a/images/ui-icons_222222_256x240.png b/_docs/images/ui-icons_222222_256x240.png
similarity index 100%
rename from images/ui-icons_222222_256x240.png
rename to _docs/images/ui-icons_222222_256x240.png
diff --git a/images/ui-icons_4b8e0b_256x240.png b/_docs/images/ui-icons_4b8e0b_256x240.png
similarity index 100%
rename from images/ui-icons_4b8e0b_256x240.png
rename to _docs/images/ui-icons_4b8e0b_256x240.png
diff --git a/images/ui-icons_a83300_256x240.png b/_docs/images/ui-icons_a83300_256x240.png
similarity index 100%
rename from images/ui-icons_a83300_256x240.png
rename to _docs/images/ui-icons_a83300_256x240.png
diff --git a/images/ui-icons_cccccc_256x240.png b/_docs/images/ui-icons_cccccc_256x240.png
similarity index 100%
rename from images/ui-icons_cccccc_256x240.png
rename to _docs/images/ui-icons_cccccc_256x240.png
diff --git a/images/ui-icons_ffffff_256x240.png b/_docs/images/ui-icons_ffffff_256x240.png
similarity index 100%
rename from images/ui-icons_ffffff_256x240.png
rename to _docs/images/ui-icons_ffffff_256x240.png
diff --git a/images/verification-exception.png b/_docs/images/verification-exception.png
similarity index 100%
rename from images/verification-exception.png
rename to _docs/images/verification-exception.png
diff --git a/_docs/images/wiremock-cloud/wiremock_cloud_favicon.svg b/_docs/images/wiremock-cloud/wiremock_cloud_favicon.svg
new file mode 100644
index 00000000..051f2c18
--- /dev/null
+++ b/_docs/images/wiremock-cloud/wiremock_cloud_favicon.svg
@@ -0,0 +1,88 @@
+
+
diff --git a/_docs/images/wiremock-cloud/wiremock_cloud_logo.png b/_docs/images/wiremock-cloud/wiremock_cloud_logo.png
new file mode 100644
index 00000000..100ed77c
Binary files /dev/null and b/_docs/images/wiremock-cloud/wiremock_cloud_logo.png differ
diff --git a/_docs/images/wiremock-cloud/wiremock_cloud_logo.svg b/_docs/images/wiremock-cloud/wiremock_cloud_logo.svg
new file mode 100644
index 00000000..4e20271e
--- /dev/null
+++ b/_docs/images/wiremock-cloud/wiremock_cloud_logo.svg
@@ -0,0 +1,12 @@
+
diff --git a/images/wiremock-idea-shots.png b/_docs/images/wiremock-idea-shots.png
similarity index 100%
rename from images/wiremock-idea-shots.png
rename to _docs/images/wiremock-idea-shots.png
diff --git a/images/wiremockBYUP9.png b/_docs/images/wiremockBYUP9.png
similarity index 100%
rename from images/wiremockBYUP9.png
rename to _docs/images/wiremockBYUP9.png
diff --git a/images/wiremockDashboard.png b/_docs/images/wiremockDashboard.png
similarity index 100%
rename from images/wiremockDashboard.png
rename to _docs/images/wiremockDashboard.png
diff --git a/images/wiremockRobot.png b/_docs/images/wiremockRobot.png
similarity index 100%
rename from images/wiremockRobot.png
rename to _docs/images/wiremockRobot.png
diff --git a/images/wiremockRobotBG.png b/_docs/images/wiremockRobotBG.png
similarity index 100%
rename from images/wiremockRobotBG.png
rename to _docs/images/wiremockRobotBG.png
diff --git a/images/wiremockStudioLeft.png b/_docs/images/wiremockStudioLeft.png
similarity index 100%
rename from images/wiremockStudioLeft.png
rename to _docs/images/wiremockStudioLeft.png
diff --git a/images/wiremockStudioRight.png b/_docs/images/wiremockStudioRight.png
similarity index 100%
rename from images/wiremockStudioRight.png
rename to _docs/images/wiremockStudioRight.png
diff --git a/images/wiremockTypeExample.svg b/_docs/images/wiremockTypeExample.svg
similarity index 100%
rename from images/wiremockTypeExample.svg
rename to _docs/images/wiremockTypeExample.svg
diff --git a/images/wm-concept-01.svg b/_docs/images/wm-concept-01.svg
similarity index 98%
rename from images/wm-concept-01.svg
rename to _docs/images/wm-concept-01.svg
index f9fd5100..c686885f 100644
--- a/images/wm-concept-01.svg
+++ b/_docs/images/wm-concept-01.svg
@@ -1,58 +1,58 @@
-
-
-
-]>
-
+
+
+
+]>
+
diff --git a/_docs/index.html b/_docs/index.html
deleted file mode 100644
index 087b0d39..00000000
--- a/_docs/index.html
+++ /dev/null
@@ -1,320 +0,0 @@
----
-layout: docs
-title: "WireMock User Documentation"
-meta_title: "WireMock User Documentation | WireMock"
-crumbtitle: "Documentation"
-toc_rank: 1001
-permalink: /docs/
-docs-wide: true
-description: >
- All of WireMock’s features are accessible via its REST (JSON) interface and its Java API.
- Additionally, stubs can be configured via JSON files. Read the full doc here.
----
-
-
-
-
- WireMock is a popular open-source tool for API mock testing, with over 5
- million downloads per month. It can help you to create stable test and
- development environments, isolate yourself from flakey 3rd parties and
- simulate APIs that don't exist yet.
-
- WireMock provides the following generic distributions that allow running it as
- a
- standalone server
- in a container or within a Java Virtual Machine.
-
- WireMock can serve all HTTP-based protocols and REST API. Through built-in
- features and extensions, it provides additional capabilities for widely used
- protocols.
-
diff --git a/_docs/java-usage.md b/_docs/java-usage.md
index 964b9d26..9daf0776 100644
--- a/_docs/java-usage.md
+++ b/_docs/java-usage.md
@@ -1,13 +1,11 @@
---
-layout: docs
-title: Plain Java
-meta_title: Use WireMock from Java or other JVM languages | WireMock
-redirect_from:
- - "/java-usage.html"
- - "/docs/plain-java.html"
-description: If you want to use WireMock from Java (or any other JVM language) outside of JUnit you can programmatically create, start and stop the server.
+description: >
+ If you want to use WireMock from Java (or any other JVM language) outside of JUnit
+ you can programmatically create, start and stop the server.
---
+# Using WireMock from plain Java and other JVM Languages
+
If you're not using JUnit or neither of the WireMock rules manage its
lifecycle in a suitable way you can construct and start the server
directly.
@@ -27,9 +25,9 @@ wireMockServer.start();
wireMockServer.stop();
```
-For more details of the `options()` builder accepted by the constructor see [Configuration](../configuration/) for details.
+For more details of the `options()` builder accepted by the constructor see [Configuration](./configuration.md) for details.
-As with stubbing and verification via the [JUnit rule](../junit-rule/) you can call the
+As with stubbing and verification via the [JUnit rule](./junit-extensions.md) you can call the
stubbing/verifying DSL from the server object as an alternative to
calling the client.
diff --git a/_docs/junit-extensions.md b/_docs/junit-extensions.md
index aad4035b..ed96913b 100644
--- a/_docs/junit-extensions.md
+++ b/_docs/junit-extensions.md
@@ -1,16 +1,11 @@
---
-layout: docs
-title: 'JUnit 4 and Vintage'
-meta_title: Using Junit 4 and Vintage to Manage WireMock instances | WireMock
-redirect_from:
- - "/junit-rule.html"
- - "/docs/junit-rule/index.html"
- - "/docs/junit-rule/"
- - "/junit-rule/"
- - "/docs/junit-4.html"
-description: WireMock includes a JUnit rule, compatible with JUnit 4.x and JUnit 5 Vintage. This provides a convenient way to manage one or more WireMock instances in your test cases.
+description: >
+ WireMock includes a JUnit Rule, compatible with JUnit 4.x and JUnit 5 Vintage.
+ This provides a convenient way to manage one or more WireMock instances in your test cases.
---
+# Using WireMock in JUnit 4 and Vintage
+
WireMock includes a JUnit rule, compatible with JUnit 4.x and JUnit 5 Vintage.
This provides a convenient way to manage one or more WireMock instances in your
test cases. It handles the lifecycle for you, starting the server before
@@ -34,7 +29,7 @@ various settings. An `Options` implementation can be created via the
public WireMockRule wireMockRule = new WireMockRule(options().port(8888).httpsPort(8889));
```
-See [Configuration](../configuration/) for details.
+See [Configuration](./configuration.md) for details.
## Unmatched requests
diff --git a/_docs/junit-jupiter.md b/_docs/junit-jupiter.md
index 2645fb75..1e6da014 100644
--- a/_docs/junit-jupiter.md
+++ b/_docs/junit-jupiter.md
@@ -1,13 +1,12 @@
---
-layout: docs
-title: "JUnit 5+ Jupiter"
-meta_title: Using WireMock's JUnit Jupiter extension | WireMock
-description: WireMock includes a JUnit Jupiter extension which is used to manage the lifecycle and configuration of one or more WireMock instances in your test case.
-redirect_from:
- - "/docs/junit-5.html"
+description: >
+ WireMock includes a JUnit Jupiter extension which is used to manage the
+ lifecycle and configuration of one or more WireMock instances in your test case.
---
-The JUnit Jupiter extension simplifies running of one or more WireMock instances in a Jupiter test class.
+# Using WireMock in JUnit 5 (Jupiter)
+
+The JUnit 5+ Jupiter extension simplifies running of one or more WireMock instances in a Jupiter test class.
It supports two modes of operation - declarative (simple, limited configuration options) and programmatic (less simple, very configurable).
These are both explained in detail below.
@@ -163,7 +162,7 @@ This behavior can be changed by calling `.failOnUnmatchedRequests(false)` on the
## Proxy mode
The JUnit Jupiter extension can be configured to enable "proxy mode" which simplifies configuration and supports
-[multi-domain mocking](../multi-domain-mocking/).
+[multi-domain mocking](./multi-domain-mocking.md).
### Declarative
@@ -174,91 +173,83 @@ HTTP client honours the JVM's proxy system properties, you can specify different
Proxy mode can be enabled via the extension builder when using the programmatic form.
-{% codetabs %}
+=== "Declarative"
-{% codetab Declarative %}
+ ```java
+ @WireMockTest(proxyMode = true)
+ public class JUnitJupiterExtensionJvmProxyDeclarativeTest {
-```java
-@WireMockTest(proxyMode = true)
-public class JUnitJupiterExtensionJvmProxyDeclarativeTest {
-
- CloseableHttpClient client;
-
- @BeforeEach
- void init() {
- client = HttpClientBuilder.create()
- .useSystemProperties() // This must be enabled for auto proxy config
- .build();
- }
-
- @Test
- void configures_jvm_proxy_and_enables_browser_proxying() throws Exception {
- stubFor(get("/things")
- .withHost(equalTo("one.my.domain"))
- .willReturn(ok("1")));
-
- stubFor(get("/things")
- .withHost(equalTo("two.my.domain"))
- .willReturn(ok("2")));
-
- assertThat(getContent("http://one.my.domain/things"), is("1"));
- assertThat(getContent("http://two.my.domain/things"), is("2"));
- }
-
- private String getContent(String url) throws Exception {
- try (CloseableHttpResponse response = client.execute(new HttpGet(url))) {
- return EntityUtils.toString(response.getEntity());
- }
- }
-}
-```
+ CloseableHttpClient client;
-{% endcodetab %}
+ @BeforeEach
+ void init() {
+ client = HttpClientBuilder.create()
+ .useSystemProperties() // This must be enabled for auto proxy config
+ .build();
+ }
-{% codetab Programmatic %}
+ @Test
+ void configures_jvm_proxy_and_enables_browser_proxying() throws Exception {
+ stubFor(get("/things")
+ .withHost(equalTo("one.my.domain"))
+ .willReturn(ok("1")));
-```java
-public class JUnitJupiterProgrammaticProxyTest {
+ stubFor(get("/things")
+ .withHost(equalTo("two.my.domain"))
+ .willReturn(ok("2")));
- @RegisterExtension
- static WireMockExtension wm = WireMockExtension.newInstance()
- .proxyMode(true)
- .build();
-
- CloseableHttpClient client;
-
- @BeforeEach
- void init() {
- client = HttpClientBuilder.create()
- .useSystemProperties() // This must be enabled for auto proxy config
- .build();
- }
-
- @Test
- void configures_jvm_proxy_and_enables_browser_proxying() throws Exception {
- wm.stubFor(get("/things")
- .withHost(equalTo("one.my.domain"))
- .willReturn(ok("1")));
-
- wm.stubFor(get("/things")
- .withHost(equalTo("two.my.domain"))
- .willReturn(ok("2")));
-
- assertThat(getContent("http://one.my.domain/things"), is("1"));
- assertThat(getContent("http://two.my.domain/things"), is("2"));
- }
-
- private String getContent(String url) throws Exception {
- try (CloseableHttpResponse response = client.execute(new HttpGet(url))) {
- return EntityUtils.toString(response.getEntity());
- }
- }
-}
-```
+ assertThat(getContent("http://one.my.domain/things"), is("1"));
+ assertThat(getContent("http://two.my.domain/things"), is("2"));
+ }
-{% endcodetab %}
-
-{% endcodetabs %}
+ private String getContent(String url) throws Exception {
+ try (CloseableHttpResponse response = client.execute(new HttpGet(url))) {
+ return EntityUtils.toString(response.getEntity());
+ }
+ }
+ }
+ ```
+
+=== "Programmatic"
+
+ ```java
+ public class JUnitJupiterProgrammaticProxyTest {
+
+ @RegisterExtension
+ static WireMockExtension wm = WireMockExtension.newInstance()
+ .proxyMode(true)
+ .build();
+
+ CloseableHttpClient client;
+
+ @BeforeEach
+ void init() {
+ client = HttpClientBuilder.create()
+ .useSystemProperties() // This must be enabled for auto proxy config
+ .build();
+ }
+
+ @Test
+ void configures_jvm_proxy_and_enables_browser_proxying() throws Exception {
+ wm.stubFor(get("/things")
+ .withHost(equalTo("one.my.domain"))
+ .willReturn(ok("1")));
+
+ wm.stubFor(get("/things")
+ .withHost(equalTo("two.my.domain"))
+ .willReturn(ok("2")));
+
+ assertThat(getContent("http://one.my.domain/things"), is("1"));
+ assertThat(getContent("http://two.my.domain/things"), is("2"));
+ }
+
+ private String getContent(String url) throws Exception {
+ try (CloseableHttpResponse response = client.execute(new HttpGet(url))) {
+ return EntityUtils.toString(response.getEntity());
+ }
+ }
+ }
+ ```
## Subclassing the extension
diff --git a/_docs/mock-api-templates.md b/_docs/mock-api-templates/README.md
similarity index 93%
rename from _docs/mock-api-templates.md
rename to _docs/mock-api-templates/README.md
index aa0dbc56..38872484 100644
--- a/_docs/mock-api-templates.md
+++ b/_docs/mock-api-templates/README.md
@@ -1,13 +1,11 @@
---
-layout: docs
-title: WireMock API Templates Library
-meta_title: WireMock API Templates Library
-toc_rank: 66
description: >
The library.wiremock.org site provides a catalog of API Templates
that can be used with both WireMock or WireMock Cloud.
---
+# WireMock API Templates Library
+
The [library.wiremock.org](https://library.wiremock.org) site provides a catalog of API Templates
that can be used with both
[WireMock](https://wiremock.org/) or [WireMock Cloud](https://wiremock.io).
@@ -23,7 +21,7 @@ and get a running mock in seconds - on your local machine or in the cloud.
2. Choose a template you need. There are categories and search capabilities at your disposal
3. Click the _Download WireMock JSON_ button to download the JSON file
4. Use the JSON file to configure your WireMock instance
- See [Using Templates](./usage)
+ See [Using Templates](./usage.md)
## Using templates in WireMock Cloud
diff --git a/_docs/mock-api-templates/usage.md b/_docs/mock-api-templates/usage.md
index 1fc03706..2183f7b1 100644
--- a/_docs/mock-api-templates/usage.md
+++ b/_docs/mock-api-templates/usage.md
@@ -1,11 +1,9 @@
---
-layout: docs
-title: Using Mock API Templates
-meta_title: Using Mock API Templates
-toc_rank: 66
description: This guide explains how to run an API template after you've downloaded the JSON file from the library page
---
+# Using Mock API Templates
+
This guide explains how to run an API template after you've downloaded the JSON file from the library page.
## WireMock standalone JAR
@@ -15,10 +13,10 @@ This guide explains how to run an API template after you've downloaded the JSON
3. The JSON will be automatically loaded at startup, via the command line
```bash
-java -jar wiremock-jre8-standalone-{{ site.wiremock_version }}.jar
+java -jar wiremock-jre8-standalone-{{ versions.wiremock_version }}.jar
```
-See [this page](../../standalone/java-jar) for general details on running WireMock standalone.
+See [this page](./../standalone/java-jar.md) for general details on running WireMock standalone.
## In WireMock Docker
@@ -31,10 +29,10 @@ docker run -it --rm \
-p 8080:8080 \
--name wiremock \
-v $PWD:/home/wiremock \
- wiremock/wiremock:{{ site.wiremock_version }}
+ wiremock/wiremock:{{ versions.wiremock_version }}
```
-See [this page](../../standalone/java-jar) for general details on running WireMock Docker.
+See [this page](./../standalone/java-jar.md) for general details on running WireMock Docker.
## Plain Java
@@ -49,7 +47,7 @@ WireMockServer wm =
);
```
-See [this](../../java-usage/) for general details on running WireMock in embedded Java.
+See [this](./../java-usage.md) for general details on running WireMock in embedded Java.
## JUnit
@@ -62,11 +60,11 @@ To do the same thing using the JUnit Jupiter extension:
.build();
```
-See [this](../../junit-jupiter/) for general details on running WireMock with JUnit 5+ Jupiter.
+See [this](./../junit-jupiter.md) for general details on running WireMock with JUnit 5+ Jupiter.
## Pushing to a remotely running WireMock server
-The mock API JSON can be pushed to a remotely running WireMock server via its [Admin API](../../standalone/administration).
+The mock API JSON can be pushed to a remotely running WireMock server via its [Admin API](./../standalone/administration.md).
For instance if the WireMock server is running on `wiremock.dev.mycompany.com` port 8080, you can POST the JSON file to it e.g.
diff --git a/_docs/multi-domain-mocking.md b/_docs/multi-domain-mocking.md
index ecb8b420..7e8be18f 100644
--- a/_docs/multi-domain-mocking.md
+++ b/_docs/multi-domain-mocking.md
@@ -1,11 +1,9 @@
---
-layout: docs
-title: Multi-domain Mocking
-meta_title: Multi-domain API Mocking with WireMock
-toc_rank: 66
description: A typical usage pattern is to run a WireMock instance per API you need to mock and configure your app to treat these instances as endpoints.
---
+# Multi-domain API Mocking with WireMock
+
A typical usage pattern is to run a WireMock instance per API you need to mock and configure your app to treat these instances
as endpoints.
@@ -23,7 +21,7 @@ The following sections detail how to achieve this in various deployment contexts
## Configuring for JUnit Jupiter
The simplest way to enable this mode if you're using JUnit Jupiter it to toggle it on via the `WireMockExtension`. See the
-[Junit Jupiter Proxy Mode](../junit-jupiter#proxy-mode) for details.
+[Junit Jupiter Proxy Mode](./junit-jupiter.md#proxy-mode) for details.
## Configuring for JUnit 4.x
diff --git a/_docs/overview.md b/_docs/overview.md
index b0342301..ffa46b4c 100644
--- a/_docs/overview.md
+++ b/_docs/overview.md
@@ -1,5 +1,4 @@
---
-layout: docs
title: Overview
meta_title: WireMock Overview and Basics
toc_rank: 1
@@ -39,7 +38,7 @@ or via JSON over HTTP for the standalone service.
## Getting Started
-Check out WireMock Quick-starts and tutorials [here](../getting-started).
+Check out WireMock Quick-starts and tutorials [here](./getting-started.md).
## WireMock Ecosystem
diff --git a/_docs/participate.md b/_docs/participate.md
index 6950c835..1fa2b44c 100644
--- a/_docs/participate.md
+++ b/_docs/participate.md
@@ -1,15 +1,11 @@
---
-layout: docs
-title: Participate in WireMock
-meta_title: How to participate in the WireMock Community
-redirect_from:
-- "/contributing.html"
-- "/participate.html"
description: >
Regardless of your expertise and time you could dedicate, there're opportunities to participate
in the project and its community!
---
+# Participate in the WireMock community
+
WireMock exists and continues to thrive due to the efforts of over 150 contributors,
and we continue to welcome contributions to its evolution.
Regardless of your expertise and time you could dedicate, there're opportunities to participate and help the project!
@@ -33,7 +29,7 @@ and we minimize the entry bar where possible.
Right now there are now contributor license agreements or anything else that would
be an additional obstacle.
-1. Join the [WireMock Slack](http://slack.wiremock.org/),
+1. Join the [WireMock Slack](./community/slack.md),
especially the `#help-contributing` channel that is dedicated to help the newcomers.
2. Check out the _Contributing Guide_ below. It describes all ways to contribute
3. Just do it!
@@ -49,7 +45,7 @@ Note that many repositories and areas have specialized contributor guidelines th
## Need help?
If you want to contribute in any way to WireMock itself or its ecosystem and got stuck,
-do not hesitate to ask on the `#help-contributing` channel on the [WireMock Slack](http://slack.wiremock.org/).
+do not hesitate to ask on the `#help-contributing` channel on the [WireMock Slack](./community/slack.md).
The sole purpose of this channel is to resolve obstacles and route any questions
regarding the contributions.
From technical questions to permissions and blog post draft reviews,
@@ -62,7 +58,7 @@ and you can use them as well.
### Do you accept money donations?
-Short answer: no. But there are ways to support the project's evolution financially<
+Short answer: **NO**, but there are ways to support the project's evolution financially.
At the moment, we do NOT accept money donations.
Time is the most precious resource for an open-source project,
diff --git a/_docs/protocols/README.md b/_docs/protocols/README.md
new file mode 100644
index 00000000..35f1a782
--- /dev/null
+++ b/_docs/protocols/README.md
@@ -0,0 +1,19 @@
+---
+description: >
+WireMock supports not just REST API over HTTP, but many other protocols.
+---
+
+# Using protocols in WireMock
+
+## Supported Protocols
+
+WireMock supports the following protocols:
+
+- HTTP - Plain HTTP, REST API and other protocols that are compatible with it
+- [HTTPs](../https.md) - Plain HTTPs, REST API and other protocols that are compatible with it
+- [gRPC](../grpc.md)
+- [GraphQL](../solutions/graphql.md)
+
+## Protocol Add-ons
+
+- [Webhooks and Callbacks](../webhooks-and-callbacks.md)
diff --git a/_docs/proxying.md b/_docs/proxying.md
index 4bd01be1..77a429ea 100644
--- a/_docs/proxying.md
+++ b/_docs/proxying.md
@@ -1,19 +1,16 @@
---
-layout: docs
-title: Proxying
-meta_title: Proxying and proxy stub mappings | WireMock
-toc_rank: 65
-redirect_from: "/proxying.html"
description: Proxy responses are defined in exactly the same manner as stubs, meaning that the same request matching criteria can be used.
---
+# Proxying and proxy stub mappings
+
WireMock has the ability to selectively proxy requests through to
other hosts. This supports a proxy/intercept setup where requests are by
default proxied to another (possibly real, live) service, but where
specific stubs are configured these are returned in place of the remote
service's response. Responses that the live service can't be forced to
generate on demand can thus be injected for testing. Proxying also
-supports [record and playback](../record-playback/).
+supports [record and playback](./record-playback.md).
# Proxy stub mappings
@@ -122,14 +119,14 @@ or
}
```
-You can also add response headers via the same method as for non-proxy responses (see [Stubbing](../stubbing/)).
+You can also add response headers via the same method as for non-proxy responses (see [Stubbing](./stubbing.md)).
## Standalone shortcut
It is possible to start the standalone running with the catch-all stub
already configured:
-Then it's simply a case of adding your stub mapping `.json` files under `mappings` as usual (see [Stubbing](../stubbing/)).
+Then it's simply a case of adding your stub mapping `.json` files under `mappings` as usual (see [Stubbing](./stubbing.md)).
## Running as a browser proxy
@@ -141,13 +138,13 @@ you to modify specific AJAX requests or swap out CSS/Javascript files.
To configure your browser to proxy via WireMock, first start WireMock with browser proxying enabled:
```bash
-$ java -jar wiremock-standalone-{{ site.wiremock_version }}.jar --enable-browser-proxying --port 9999
+$ java -jar wiremock-standalone-{{ versions.wiremock_version }}.jar --enable-browser-proxying --port 9999
```
Then open your browser's proxy settings and point them to the running server:
-
+
-After that, you can configure stubs as described in [Running Standalone](../running-standalone#configuring-wiremock-using-the-java-client) and then browse to a website. Any resources fetched whose requests are matched by stubs you have configured will be overridden by the stub's response.
+After that, you can configure stubs as described in [Running Standalone](./standalone/java-jar.md#configuring-wiremock-using-the-java-client) and then browse to a website. Any resources fetched whose requests are matched by stubs you have configured will be overridden by the stub's response.
So for instance, say you're visiting
a web page that fetches a user profile via an AJAX call to `/users/12345.json` and you wanted to test how it responded to a server unavailable response. You could create a stub like this and the response from the server would be swapped for a 503 response:
@@ -160,7 +157,7 @@ stubFor(get(urlEqualTo("/users/12345.json"))
Also, we can enable/disable pass through unmatched requests to the target indicated by the original requests by enabling/disabling proxyPassThrough flag. By default, flag is set to true.
-This flag can be enabled/disabled at startup either by passing CLI option while running jar as described in [Running Standalone](../running-standalone#command-line-options) or by passing as options in Java client as shown below.
+This flag can be enabled/disabled at startup either by passing CLI option while running jar as described in [Running Standalone](./standalone/java-jar.md#command-line-options) or by passing as options in Java client as shown below.
```java
WireMockServer wireMockServer = new WireMockServer(options().proxyPassThrough(false));
@@ -168,7 +165,8 @@ WireMockServer wireMockServer = new WireMockServer(options().proxyPassThrough(fa
We can also update this flag without WireMock restart either by using Admin API as described in [API section](../api/#tag/System/paths/~1__admin~1settings/post) if we are running as standalone or by updating the global settings in Java client.
-Json payload to update via admin API
+Json payload to update via admin API:
+
```json
{
...
@@ -232,13 +230,13 @@ This would present a substantial security risk, so by default WireMock will veri
You can trust specific hosts as follows:
```bash
-$ java -jar wiremock-standalone-{{ site.wiremock_version }}.jar --enable-browser-proxying --trust-proxy-target localhost --trust-proxy-target dev.mycorp.com
+$ java -jar wiremock-standalone-{{ versions.wiremock_version }}.jar --enable-browser-proxying --trust-proxy-target localhost --trust-proxy-target dev.mycorp.com
```
or if you're not interested in security you can trust all hosts:
```bash
-$ java -jar wiremock-standalone-{{ site.wiremock_version }}.jar --enable-browser-proxying --trust-all-proxy-targets
+$ java -jar wiremock-standalone-{{ versions.wiremock_version }}.jar --enable-browser-proxying --trust-all-proxy-targets
```
Additional trusted public certificates can also be added to the keystore
@@ -315,4 +313,4 @@ public WireMockRule wireMockRule = new WireMockRule(wireMockConfig()
.trustStorePassword("mostsecret")); // Defaults to "password" if omitted
```
-See [Running as a Standalone Process](../running-standalone/) for command line equivalent.
+See [Running as a Standalone Process](./standalone/java-jar.md) for command line equivalent.
diff --git a/_docs/quickstart/java-junit.md b/_docs/quickstart/java-junit.md
index d9bc384a..1e3a2d87 100644
--- a/_docs/quickstart/java-junit.md
+++ b/_docs/quickstart/java-junit.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: "Quick Start: API Mocking with Java and JUnit 4"
-meta_title: "API Mocking QuickStart with Java and JUnit 4 | WireMock"
-description: "Shows how to write your API Client first test with WireMock and JUnit"
+description: "Shows how to write your API Client first test with WireMock and JUnit 4"
---
+# Quick Start: API Mocking with Java and JUnit 4
+
In this guide we will write an API Unit test with WireMock and JUnit 4.
## Prerequisites
@@ -26,37 +25,29 @@ To send the requests, we will use the embedded HTTP client available in Java 11+
If you want to add a Java 1.8 test, you will need to add an external HTTP Client implementation
like [Apache HttpClient](https://hc.apache.org/httpcomponents-client-5.2.x/#).
-{% codetabs %}
-
-{% codetab Maven %}
-
-```xml
-
- org.wiremock
- wiremock
- {{ site.wiremock_version }}
- test
-
-
- org.assertj
- assertj-core
- 3.24.2
- test
-
-```
-
-{% endcodetab %}
-
-{% codetab Gradle Groovy %}
-
-```groovy
-testImplementation "org.wiremock:wiremock:{{ site.wiremock_version }}"
-testImplementation "org.assertj:assertj-core:3.24.2"
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+=== "Maven"
+
+ ```xml
+
+ org.wiremock
+ wiremock
+ {{ versions.wiremock_version }}
+ test
+
+
+ org.assertj
+ assertj-core
+ 3.24.2
+ test
+
+ ```
+
+=== "Gradle Groovy"
+
+ ```groovy
+ testImplementation "org.wiremock:wiremock:{{ versions.wiremock_version }}"
+ testImplementation "org.assertj:assertj-core:3.24.2"
+ ```
## Add the WireMock rule
@@ -86,7 +77,7 @@ import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
-...
+// ...
@Test
public void exampleTest() {
@@ -150,7 +141,7 @@ int httpsPort = wireMockRule.httpsPort();
## Further reading
-- For more details on verifying requests and stubbing responses, see [Stubbing](../../stubbing) and [Verifying](../../verifying/)
-- For more information on the JUnit rules see [The JUnit 4 Rule](../../junit-4/).
+- For more details on verifying requests and stubbing responses, see [Stubbing](./../stubbing.md) and [Verifying](./../verifying.md)
+- For more information on the JUnit rules see [The JUnit 4 Rule](./../junit-extensions.md).
- For many more examples of JUnit tests check out the
[WireMock's own acceptance tests](https://github.com/wiremock/wiremock/tree/master/src/test/java/com/github/tomakehurst/wiremock)
diff --git a/_docs/record-playback-legacy.md b/_docs/record-playback-legacy.md
index 1eb13421..d2501734 100644
--- a/_docs/record-playback-legacy.md
+++ b/_docs/record-playback-legacy.md
@@ -1,11 +1,12 @@
---
-layout: docs
-title: Record and Playback (Legacy)
-meta_title: Record and Playback (Legacy) | WireMock
-toc_rank: 71
-description: Create stub mappings by recording them while you send requests. This can be used to quickly capture a collection of responses from a real service then use them offline in your tests.
+description: >
+ Create stub mappings by recording them while you send requests.
+ This can be used to quickly capture a collection of responses from a real service
+ then use them offline in your tests.
---
+# Record and Playback (Legacy)
+
**WireMock has the ability to create stub mappings by recording them
while you send requests. This can be used to quickly capture a
collection of responses from a real service then use them offline in
@@ -16,7 +17,7 @@ your tests.**
Recording is done by starting the standalone runner like this:
```bash
-$ java -jar wiremock-standalone-{{ site.wiremock_version }}.jar --proxy-all="http://search.twitter.com" --record-mappings --verbose
+$ java -jar wiremock-standalone-{{ versions.wiremock_version }}.jar --proxy-all="http://search.twitter.com" --record-mappings --verbose
```
Once it's started you send requests to it as if it was the remote
diff --git a/_docs/record-playback.md b/_docs/record-playback.md
index 2a993910..f4322dad 100644
--- a/_docs/record-playback.md
+++ b/_docs/record-playback.md
@@ -1,11 +1,12 @@
---
-layout: docs
-title: Record and Playback
-meta_title: Record and Playback an API to Create a Mock | WireMock
-redirect_from: "/record-playback.html"
-description: WireMock can create stub mappings from requests it has received. Combined with its proxying feature this allows you to “record” stub mappings from interaction with existing APIs.
+description: >
+ WireMock can create stub mappings from requests it has received.
+ Combined with its proxying feature this allows you to “record” stub mappings
+ from interaction with existing APIs.
---
+# Record and Playback an API to Create a Mock
+
WireMock can create stub mappings from requests it has received. Combined with its proxying feature this allows you to "record"
stub mappings from interaction with existing APIs.
@@ -18,11 +19,11 @@ Both approaches are described in more detail below.
The fastest way to get started with WireMock's recorder is to use the simple web UI provided.
-First, start an instance of [WireMock running standalone](../running-standalone).
+First, start an instance of [WireMock running standalone](./standalone.md).
Once that's running visit the recorder UI page at [http://localhost:8080/\_\_admin/recorder](http://localhost:8080/__admin/recorder)
(assuming you started WireMock on the default port of 8080).
-![Recorder UI]({{ '/images/recorder-screenshot.png' | absolute_url }})
+![Recorder UI](images/recorder-screenshot.png)
Enter the URL you wish to record from in the target URL field and click the Record button. You can use `http://examples.wiremockapi.cloud` to try it out.
@@ -97,7 +98,7 @@ Snapshotting is effectively "recording after the fact". Rather than starting rec
into stub mappings.
An implication of this order of events is that if you want to record an external API, you'll need to have configured proxying before you start generating traffic.
-See [Proxying](../proxying) for details on proxy configuration, but in summary this can be achieved by creating a proxy mapping via the API or Java DSL:
+See [Proxying](./proxying.md) for details on proxy configuration, but in summary this can be achieved by creating a proxy mapping via the API or Java DSL:
Java:
@@ -269,7 +270,7 @@ The following sections will detail each parameter in turn:
### Filtering
-`filters` supports selection of requests to be recorded according to the same [request matcher](../request-matching) format used elsewhere in WireMock.
+`filters` supports selection of requests to be recorded according to the same [request matcher](./request-matching.md) format used elsewhere in WireMock.
Additionally, when snapshotting the `ids` parameter allows specific serve events to be selected by ID.
@@ -329,7 +330,7 @@ What happens when the recorder sees two identical requests that produce differen
There are two ways to handle this. Setting `repeatsAsScenarios` to `false` means that after the first request, subsequent identical ones will be ignored.
-However, when set to `true` (which is the default if omitted), multiple identical requests will be added to a [Scenario](../stateful-behaviour), meaning that when
+However, when set to `true` (which is the default if omitted), multiple identical requests will be added to a [Scenario](./stateful-behaviour.md), meaning that when
playing back, a series of requests matching this stub will yield the same series of responses captured during recording. If more requests are made after the end of the series
is reached, the last response will continue to be returned.
@@ -337,7 +338,7 @@ is reached, the last response will continue to be returned.
If you need even more control over how your recorded stubs are generated, you can write one or more custom transformers that will be applied to stubs as they are captured.
-A transformer is an implementations of `StubMappingTransformer` and needs to be registered when starting WireMock as described in [Extending WireMock](../extending-wiremock).
+A transformer is an implementations of `StubMappingTransformer` and needs to be registered when starting WireMock as described in [Extending WireMock](./extending-wiremock.md).
Transformer implementations supply a name, and this is used to identify them in the `transformers` parameter e.g.
diff --git a/_docs/request-matching.md b/_docs/request-matching.md
index da010098..0bf5b17f 100644
--- a/_docs/request-matching.md
+++ b/_docs/request-matching.md
@@ -1,12 +1,13 @@
---
-layout: docs
-title: Request Matching
-meta_title: Matching and filtering HTTP requests in WireMock | WireMock
-toc_rank: 61
-description: WireMock supports matching of requests to stubs and verification queries using the following attributes.
+description: >
+ WireMock supports matching of requests to stubs and verification queries
+ using the following attributes.
---
-WireMock enables flexible definition of a [mock API](/) by supporting rich matching of incoming requests. Stub matching and verification queries can use the following request attributes:
+# Matching and filtering HTTP requests in WireMock
+
+WireMock enables flexible definition of a mock APIs by supporting rich matching of incoming requests.
+Stub matching and verification queries can use the following request attributes:
- URL
- HTTP Method
@@ -18,7 +19,7 @@ WireMock enables flexible definition of a [mock API](/) by supporting rich match
- Request body
- Multipart/form-data
-Here's an example showing all attributes being matched using WireMock's in-built match operators. It is also possible to write [custom matching logic](../extending-wiremock#custom-request-matchers) if
+Here's an example showing all attributes being matched using WireMock's in-built match operators. It is also possible to write [custom matching logic](./extending-wiremock.md#custom-request-matchers) if
you need more precise control:
## Request with XML Body
@@ -221,7 +222,7 @@ WireMock from 3.0.0 onwards supports matching on URL path templates conforming t
When the path template URL match type is used this enables
1. The ability to match path variables in the same way as query parameters, headers etc.
-2. The ability to reference path variables by name in [response templates](../response-templating/#the-request-model).
+2. The ability to reference path variables by name in [response templates](./response-templating.md#the-request-model).
To match any request URL that conforms to the path template, you can do the following.
diff --git a/_docs/resources/README.md b/_docs/resources/README.md
new file mode 100644
index 00000000..674644a8
--- /dev/null
+++ b/_docs/resources/README.md
@@ -0,0 +1,4 @@
+# Community Resources
+
+* [Community Slack](../community/slack.md)
+* [External Resource](./external.md) - Code, articles and videos related to WireMock from around the web.
diff --git a/support/commercial.md b/_docs/resources/commercial-support.md
similarity index 92%
rename from support/commercial.md
rename to _docs/resources/commercial-support.md
index eb5710a4..84bf086c 100644
--- a/support/commercial.md
+++ b/_docs/resources/commercial-support.md
@@ -1,14 +1,13 @@
---
-layout: single
-title: Commercial Support
-meta_title: How to get WireMock commercial support with SLA
-description: Enterprise and commercial support and consulting options
+description: How to get WireMock enterprise and commercial support with SLA, training and consulting options
---
+# Commercial Support for WireMock
+
WireMock is an open source project.
In accordance with the [Apache License 2.0](https://github.com/wiremock/wiremock/blob/master/LICENSE.txt),
in general there is no support or guarantees provided for it.
-You can get some assistance through WireMock community channels,
+You can get some [community assistance](./community-support.md) through the WireMock community channels,
and contribute to helping other users too.
At the same time, there are vendors that provide commercial support for WireMock.
diff --git a/support/index.md b/_docs/resources/community-support.md
similarity index 81%
rename from support/index.md
rename to _docs/resources/community-support.md
index a60c6900..f25ed745 100644
--- a/support/index.md
+++ b/_docs/resources/community-support.md
@@ -1,12 +1,9 @@
---
-layout: support
-title: Support
-meta_title: How to get WireMock support
-description: Community Assistance, Enterprise and commercial support and consulting options
-redirect_from:
- - "/docs/support.html"
+description: How to get community assistance if you are a WireMock user
---
+# WireMock Community Support
+
WireMock is an open source project.
In accordance with the [Apache License 2.0](https://github.com/wiremock/wiremock/blob/master/LICENSE.txt),
in general there is no support or guarantees provided for it.
@@ -14,7 +11,7 @@ At the same time, you can get some assistance through WireMock community channel
and contribute to helping other users too.
There are also vendors that provide commercial support for WireMock.
-## WireMock Community
+## Community Support
If you’re looking for help or advice,
you can find a community of users and contributors on the WireMock community Slack channels.
@@ -29,4 +26,4 @@ Every community member is welcome to participate, help to triage and answer the
## Commercial support, trainings and consulting
-See [this page](./commercial).
+See [this page](./commercial-support.md).
diff --git a/_docs/resources/external.md b/_docs/resources/external.md
new file mode 100644
index 00000000..956e2935
--- /dev/null
+++ b/_docs/resources/external.md
@@ -0,0 +1,90 @@
+# External Resources
+
+Code, articles and videos related to WireMock from around the web.
+
+## Integrations
+
+WireMocha is a WireMock plugin for IntelliJ:
+[Plugin Page](https://plugins.jetbrains.com/plugin/18860-wiremocha)
+
+Mark Winteringham wrote a very handy Chrome extension to provide a UI over WireMock:
+http://www.mwtestconsultancy.co.uk/wiremock-chrome-extension/
+
+Spring Contract Verifier (previously called Accurest) is a consumer driven contracts tool that generates WireMock stub mappings as examples for client testing.
+http://cloud.spring.io/spring-cloud-contract/
+
+A Spring REST Docs integration for WireMock that generates WireMock stub mappings from your test cases:
+https://github.com/epages-de/restdocs-wiremock
+
+WireMock Maven Plugin:
+https://github.com/automatictester/wiremock-maven-plugin
+
+Maciej Walkowiak has built a library providing zero-config, fully declarative Spring Boot integration with WireMock in JUnit 5 tests:
+https://github.com/maciejwalkowiak/wiremock-spring-boot
+
+`@GenerateWireMockStub` for Spring REST controllers, built by Lukasz Gryzbon, makes the creation of WireMock stubs for tests safe and effortless:
+https://github.com/lsd-consulting/spring-wiremock-stub-generator
+
+Felipe Fernández has built a Spock extension to enhance automation around record and replay functionality:
+https://github.com/felipefzdz/spock-wiremock-extension
+
+Automate configuration of stubs, given JAX-RS annotated resources, with this extension:
+https://github.com/tomasbjerre/wiremock-jaxrs
+
+## WireMock Extensions
+
+Listing of WireMock Extensions is now available on the documentation site
+[here](../extensions/README.md).
+
+## Other languages
+
+Most of the language integrations are linked from the [Documentation Root](../README.md).
+Below there are some technologies that are yet to be added.
+
+PHP client by Rowan Hill:
+https://github.com/rowanhill/wiremock-php
+
+Ruby wrapper by Jeffres S. Morgan:
+https://rubygems.org/gems/service_mock
+
+Groovy binding by Tom Jankes:
+https://github.com/tomjankes/wiremock-groovy
+
+Dusan Dević at Yenlo wrote a useful guide to testing error conditions in the WSO2 ESB using Wiremock:
+https://www.yenlo.com/blog/wso2torial-error-handling-in-wso2-esb-with-wiremock
+
+Phill Barber has written a couple of interesting posts about practical testing scenarios with WireMock:
+http://phillbarber.blogspot.co.uk/2015/05/how-to-write-end-to-end-tests-for-nginx.html http://phillbarber.blogspot.co.uk/2015/02/how-to-test-for-connection-leaks.html
+
+Bas Dijkstra kindly open sourced the content for the workshop he ran on WireMock and REST Assured:
+http://www.ontestautomation.com/open-sourcing-my-workshop-on-wiremock/
+
+`@GenerateWireMockStub` for Spring REST controllers, built by Lukasz Gryzbon, makes the creation of WireMock stubs for tests safe and effortless:
+https://dzone.com/articles/wiremock-the-ridiculously-easy-way
+
+WireMock workshop:
+https://github.com/basdijkstra/wiremock-workshop
+
+## Videos
+
+Fluent and thorough live-coding demonstration of WireMock delivered by Sam Edwards at DevFest DC:
+https://youtu.be/x3MvZ8DFrpE
+
+Sebastian Daschner presents a step-by-step guide to running your acceptance tests in Kubernetes using WireMock:
+https://blog.sebastian-daschner.com/entries/acceptance_tests_wiremock_kubernetes
+
+Interesting and detailed presentation by Lotte Johansen on testing microservices with WireMock at Norway's top online marketplace:
+https://www.youtube.com/watch?v=cmJfMnGK-r0
+
+Chris Batey did an excellent talk at Skillsmatter in London about building fault tolerant microservices. He showed some practical failure testing strategies using WireMock and Saboteur he'd used for real while working at Sky:
+https://skillsmatter.com/skillscasts/5810-building-fault-tolerant-microservices
+
+Daniel Bryant's excellent QCon presentation “The Seven Deadly Sins of Microservices” covers the full gamut of microservice anti-patterns seen in the wild, with some sound advice on how to fix them. WireMock and Saboteur get an honourable mention in the testing discussion:
+https://www.infoq.com/presentations/7-sins-microservices
+
+The folks at Intuit have built a very impressive and ambitious testing
+setup, using WireMock to isolate individual services. Here's a talk they did at AWS:Reinvent:
+https://www.youtube.com/watch?list=PLhr1KZpdzuke5pqzTvI2ZxwP8-NwLACuU&v=sUsh3EnzKKk
+
+Tom and Rob Elliot gave a join talk at Skillsmatter about patterns for readable and scalable tests with WireMock, and an approach for unit testing a CDN:
+https://skillsmatter.com/skillscasts/6853-scalable-management-of-test-data-making-tests-readable
diff --git a/_docs/response-templating.md b/_docs/response-templating.md
index a724cda7..fbc460a1 100644
--- a/_docs/response-templating.md
+++ b/_docs/response-templating.md
@@ -1,11 +1,11 @@
---
-layout: docs
-title: Response Templating
-meta_title: Mock API Response Templating | WireMock
-toc_rank: 71
-description: Response headers and bodies, as well as proxy URLs, can optionally be rendered using Handlebars templates.
+description: >
+ Response headers and bodies, as well as proxy URLs,
+ can optionally be rendered using Handlebars templates.
---
+# Mock API Response Templating
+
Response headers and bodies, as well as proxy URLs, can optionally be rendered using [Handlebars templates](http://handlebarsjs.com/). This enables attributes of the request
to be used in generating the response e.g. to pass the value of a request ID header as a response header or
render an identifier from part of the URL in the response body.
@@ -28,14 +28,14 @@ WireMockServer wm =
new WireMockServer(options().templatingEnabled(false));
```
-See [the command line docs](../standalone/java-jar/#command-line-options) for the standalone equivalents of these parameters.
+See [the command line docs](./standalone/java-jar.md#command-line-options) for the standalone equivalents of these parameters.
## Customising and extending the template engine
-Custom Handlebars helpers can be registered via an extension point. See [Adding Template Helpers](../extensibility/adding-template-helpers/) for details.
+Custom Handlebars helpers can be registered via an extension point. See [Adding Template Helpers](./extensibility/adding-template-helpers.md) for details.
-Similarly custom model data providers can be registered as extensions. See [Adding Template Model Data](../extensibility/adding-template-model-data/) for details.
+Similarly custom model data providers can be registered as extensions. See [Adding Template Model Data](./extensibility/adding-template-model-data.md) for details.
## Applying templating in local mode
@@ -86,7 +86,7 @@ WireMockServer wm =
new WireMockServer(options().withMaxTemplateCacheEntries(10000));
```
-See [the command line docs](../standalone/java-jar/#command-line-options) for the equivalent configuration setting when running standalone.
+See [the command line docs](./standalone/java-jar.md#command-line-options) for the equivalent configuration setting when running standalone.
## Proxying
@@ -557,7 +557,7 @@ Dates can be truncated to e.g. first day of month using the `truncateDate` helpe
{% endraw %}
-See the [full list of truncations here](../request-matching#all-truncations).
+See the [full list of truncations here](./request-matching.md#all-truncations).
## Random value helper
diff --git a/_docs/running-without-http-server.md b/_docs/running-without-http-server.md
index f18c33ac..61d90cc1 100644
--- a/_docs/running-without-http-server.md
+++ b/_docs/running-without-http-server.md
@@ -1,13 +1,10 @@
---
-layout: docs
-title: Running without the HTTP Server
-meta_title: Running WireMock without an HTTP Server | WireMock
-toc_rank: 42
-redirect_from: "/running-without-http-server.html"
description: Running WireMock inside a Java process, without running the inbuilt HTTP layer.
---
-If you want to run Wiremock inside another process, such as wrapping it in a serverless function such as on AWS Lambda, or using it as part of an application's integration tests, you previously would need to resort to [Running as a Standalone Process](../running-standalone/).
+# Running WireMock without an HTTP Server
+
+If you want to run Wiremock inside another process, such as wrapping it in a serverless function such as on AWS Lambda, or using it as part of an application's integration tests, you previously would need to resort to [Running as a Standalone Process](./standalone/java-jar.md).
This works well, but has the overhead of a full HTTP server and HTTP calls back and forth that in some cases may not be relevant, and adds a fair bit of overhead to each call, and the memory footprint of the application.
diff --git a/_docs/simulating-faults.md b/_docs/simulating-faults.md
index fd2af476..049590c5 100644
--- a/_docs/simulating-faults.md
+++ b/_docs/simulating-faults.md
@@ -1,12 +1,12 @@
---
-layout: docs
-title: Simulating Faults
-meta_title: Simulating faults in API behavior | WireMock
-toc_rank: 80
-redirect_from: "/simulating-faults.html"
-description: One of the main reasons it’s beneficial to use web service fakes when testing is to inject faulty behaviour that might be difficult to get the real service to produce on demand.
+description: >
+ One of the main reasons it’s beneficial to use web service fakes
+ when testing is to inject faulty behaviour that might be difficult
+ to get the real service to produce on demand.
---
+# Simulating faults in API behavior
+
**One of the main reasons it's beneficial to use web service fakes when
testing is to inject faulty behaviour that might be difficult to get the
real service to produce on demand. In addition to being able to send
diff --git a/_docs/solutions/README.md b/_docs/solutions/README.md
new file mode 100644
index 00000000..3bff898b
--- /dev/null
+++ b/_docs/solutions/README.md
@@ -0,0 +1,5 @@
+# WireMock Solutions
+
+There are also solutions and guides for particular technologies and frameworks, provided by the WireMock community and external contributors.
+
+See the [documentation landing](../README.md)
diff --git a/_docs/solutions/android.md b/_docs/solutions/android.md
index 580b287d..d163107f 100644
--- a/_docs/solutions/android.md
+++ b/_docs/solutions/android.md
@@ -4,7 +4,6 @@ title: Running on Android
meta_title: Running WireMock on the Android platform | WireMock
toc_rank: 115
description: With some effort it is now possible to run WireMock on Android. Please see Sam Edwards’ excellent blog post for instructions.
-redirect_from: "/docs/android.html"
logo: /images/logos/technology/android.svg
---
@@ -24,8 +23,13 @@ References:
+## Presentation by Michael Bailey
+
+Michael Bailey was the first person to publicly demonstrate the possibility of running WireMock on Android. Here's his presentation at Google's GTAC conference on the testing setup used by his team at Amex:
+[https://www.youtube.com/watch?v=-xQCNf_5NNM](https://www.youtube.com/watch?v=-xQCNf_5NNM)
+
## Useful pages
-- [WireMock and Kotlin](../kotlin) - Android ecosystem embraces Kotlin as a development language,
+- [WireMock and Kotlin](./kotlin.md) - Android ecosystem embraces Kotlin as a development language,
and there are some additional tooling available
-- [WireMock on Java and JVM](../jvm) - Some of JVM generic solutions are applicable to Android development too
+- [WireMock on Java and JVM](./jvm.md) - Some of JVM generic solutions are applicable to Android development too
diff --git a/_docs/solutions/c_cpp.md b/_docs/solutions/c_cpp.md
index 832036f9..fdab5033 100644
--- a/_docs/solutions/c_cpp.md
+++ b/_docs/solutions/c_cpp.md
@@ -9,11 +9,11 @@ og_image: solutions/testcontainers/testcontainers_c_opengraph.png
## Testcontainers for C/C++ module
-
+
Recently we created an experimental WireMock module for
[Testcontainers for C/C++](https://github.com/oleg-nenashev/testcontainers-c).
-It allows provisioning the WireMock server as a standalone container within your tests, based on [WireMock Docker](/docker).
+It allows provisioning the WireMock server as a standalone container within your tests, based on [WireMock Docker](../standalone/docker.md).
It allows using WireMock with all popular C/C++ testing frameworks
like Google Test, CTest, Doctest, QtTest or CppUnit.
@@ -78,4 +78,4 @@ Sending HTTP requests
printf("Server Response: HTTP-%d\n%s\n\n", response.r0, response.r1);
return 0;
}
-```
\ No newline at end of file
+```
diff --git a/_docs/solutions/golang.md b/_docs/solutions/golang.md
index 5e2b8c5a..6ef66c37 100644
--- a/_docs/solutions/golang.md
+++ b/_docs/solutions/golang.md
@@ -4,9 +4,6 @@ title: "WireMock and Go"
meta_title: "Golang Solutions | WireMock"
description: "Additional solutions for WireMock when using Golang"
logo: /images/logos/technology/golang.svg
-redirect_from:
-- "/go.html"
-- "/go/"
hide-disclaimer: true
---
@@ -58,7 +55,7 @@ References:
## Go WireMock - WireMock REST API client
-The Golang client library to stub API resources in WireMock using its [Administrative REST API](../../standalone/administration).
+The Golang client library to stub API resources in WireMock using its [Administrative REST API](../standalone/administration.md).
The project connects to the instance and allows setting up stubs and response templating, or using administrative API to extract observability data.
References:
@@ -89,5 +86,5 @@ func TestSome(t *testing.T) {
## Useful pages
-- [WireMock and Docker](../docker)
-- [WireMock and Kubernetes](../kubernetes)
+- [WireMock and Docker](../standalone/docker.md)
+- [WireMock and Kubernetes](./kubernetes.md)
diff --git a/_docs/solutions/graphql.md b/_docs/solutions/graphql.md
index 24b0f91e..30aad877 100644
--- a/_docs/solutions/graphql.md
+++ b/_docs/solutions/graphql.md
@@ -5,9 +5,6 @@ meta_title: "GraphQL Solutions | WireMock"
description: "Additional solutions for WireMock when using Golang"
logo: /images/logos/technology/graphql.svg
og_image: solutions/graphql/wiremock_graphql_opengraph.png
-redirect_from:
-- "/graphql.html"
-- "/graphql/"
hide-disclaimer: true
---
diff --git a/_docs/solutions/groovy.md b/_docs/solutions/groovy.md
index 400f251c..b41f730c 100644
--- a/_docs/solutions/groovy.md
+++ b/_docs/solutions/groovy.md
@@ -45,4 +45,4 @@ def "test using groovy truth if you need at least one request and shows example
## Useful pages
-- [WireMock on Java and JVM](../solutions/jvm) - Most of JVM generic solutions are applicable to Groovy development too
+- [WireMock on Java and JVM](./jvm.md) - Most of JVM generic solutions are applicable to Groovy development too
diff --git a/_docs/solutions/jvm.md b/_docs/solutions/jvm.md
index ff6c06d9..7ad90696 100644
--- a/_docs/solutions/jvm.md
+++ b/_docs/solutions/jvm.md
@@ -14,55 +14,54 @@ and there are plenty of solutions when developing applications powered by the Ja
_WireMock_, also known as _WireMock Java_ is the flagman implementation of WireMock functionality and specifications,
maintained on the WireMock GitHub organization.
-It is included into many distributions (including [WireMock Docker](../docker)), test framework adapters and products.
+It is included into many distributions (including [WireMock Docker](../standalone/docker.md)), test framework adapters and products.
Most of the documentation on this website is about _WireMock Java_, unless specified explicitly.
Usage:
-- [Running WireMock as a Standalone server](../../running-standalone)
-- [Using WireMock in plain Java without frameworks](../../java-usage)
+- [Running WireMock as a Standalone server](../standalone.md)
+- [Using WireMock in plain Java without frameworks](./../java-usage.md)
References:
- [WireMock Java on GitHub](https://github.com/wiremock/wiremock)
-## Integrations with test frameworks
+## WireMock Extensions
+
+_WireMock Java_ is [extensible](../extending-wiremock.md),
+and there is a number of available extensions that can be included into WireMock
+to extend its functionality, including but not limited to request filters, observability, storage, etc.
+
+See the list of WireMock Extensions [here](../extensions/README.md).
+
+## Integrations
+
+### Integrations with test frameworks
WireMock has integrations with many popular Java test frameworks
for unit and integration testing.
-- [JUnit 5+ and Jupiter](../../junit-5)
-- [JUnit 4 and Vintage](../../junit-4)
-- [Testcontainers Java](https://github.com/wiremock/wiremock-testcontainers-java)
+- [JUnit 5+ and Jupiter](../junit-jupiter.md)
+- [JUnit 4 and Vintage](../junit-extensions.md)
+- [Testcontainers for Java](./testcontainers.md)
- [Spock](https://github.com/felipefzdz/spock-wiremock-extension) - maintained outside WireMock's organization on GitHub
-## WireMock Extensions
+### By JVM language
-_WireMock Java_ is [extensible](../../extending-wiremock),
-and there is a number of available extensions that can be included into WireMock
-to extend its functionality, including but not limited to request filters, observability, storage, etc.
+In addition to core Java, WireMock offers specialized integrations
+(e.g. DSL Bindings or test framework libraries)
+for the following languages:
-A few popular extensions:
+- [Kotlin](./kotlin.md)
+- [Scala](https://docs.google.com/document/d/1TQccT9Bk-o2lvRVN8_mMaGttaOnwbYFLkn0DsmwGIOA/edit#heading=h.gvb3rxc1ab9p)
+- [Clojure](https://docs.google.com/document/d/1TQccT9Bk-o2lvRVN8_mMaGttaOnwbYFLkn0DsmwGIOA/edit#heading=h.gvb3rxc1ab9p)
+- [Groovy](./groovy.md)
-- Response Template Transformer
- - [Documentation](../../response-templating)
- - This extension is a built-in part of the WireMock Java, but needs to be enabled explicitly
-- Webhooks
- - [Documentation](../../webhooks-and-callbacks/)
-- JSON Body Transformer, Callback Simulator, Request time matcher
- - [9cookies/wiremock-extensions](https://github.com/9cookies/wiremock-extensions)
-Active
-- CORS Protection Extension
- - [RichieLoco/WiremockCorsExtension](https://github.com/RichieLoco/WiremockCorsExtension)
+### By JVM Framework
-## Solutions specific to JVM technologies
+- [Spring Boot](./spring-boot.md)
+- [Quarkus](./quarkus.md)
-Here are references to particular JVM technologies and languages,
-sorted by alphabet:
+## Related topics
-- [Android](../android)
-- [Clojure](https://docs.google.com/document/d/1TQccT9Bk-o2lvRVN8_mMaGttaOnwbYFLkn0DsmwGIOA/edit#heading=h.gvb3rxc1ab9p)
-- [Groovy](../groovy)
-- [Kotlin](../kotlin)
-- [Scala](https://docs.google.com/document/d/1TQccT9Bk-o2lvRVN8_mMaGttaOnwbYFLkn0DsmwGIOA/edit#heading=h.gvb3rxc1ab9p)
-- [Spring Boot](../spring-boot)
+- [WireMock on Android](./android.md)
diff --git a/_docs/solutions/kotlin.md b/_docs/solutions/kotlin.md
index 322b90d8..a7933314 100644
--- a/_docs/solutions/kotlin.md
+++ b/_docs/solutions/kotlin.md
@@ -63,4 +63,3 @@ References:
- [Documentation](https://kotest.io/docs/extensions/wiremock.html)
- [GitHub repo: kotest/kotest-extensions-wiremock](https://github.com/kotest/kotest-extensions-wiremock)
-
diff --git a/_docs/solutions/kubernetes.md b/_docs/solutions/kubernetes.md
index 5e22728b..08f1956d 100644
--- a/_docs/solutions/kubernetes.md
+++ b/_docs/solutions/kubernetes.md
@@ -35,4 +35,4 @@ References:
## Useful pages
-- [WireMock and Golang](../golang) - There's WireMock for Golang developers too!
+- [WireMock and Golang](./golang.md) - There's WireMock for Golang developers too!
diff --git a/_docs/solutions/nodejs.md b/_docs/solutions/nodejs.md
index 47f9f867..f18d481e 100644
--- a/_docs/solutions/nodejs.md
+++ b/_docs/solutions/nodejs.md
@@ -47,7 +47,7 @@ describe('Integration with WireMock', () => {
## WireMock REST Client
The WireMock REST client is a lightweight module to interact with a running
-WireMock server based on its [OpenAPI 3.0 spec](../../api) via REST API.
+WireMock server based on its [OpenAPI 3.0 spec](../standalone/admin-api-reference.md) via REST API.
Note that this library is maintained outside the WireMock organization on GitHub.
- [GitHUb Repository](https://github.com/kwoding/wiremock-rest-client)
diff --git a/_docs/solutions/python.md b/_docs/solutions/python.md
index 8f4f2f93..ea90813c 100644
--- a/_docs/solutions/python.md
+++ b/_docs/solutions/python.md
@@ -13,7 +13,7 @@ hide-disclaimer: true
**Python WireMock** is a library that allows users to interact with a WireMock instance from within a Python project.
Key features include:
-- [Testcontainers Python](../testcontainers) module to easily start WireMock server for your tests
+- [Testcontainers Python](./testcontainers.md) module to easily start WireMock server for your tests
- REST API Client for a standalone WireMock Java server
- Support for most of the major WireMock features (more on their way soon)
diff --git a/_docs/solutions/rust.md b/_docs/solutions/rust.md
index 150db781..1477fc41 100644
--- a/_docs/solutions/rust.md
+++ b/_docs/solutions/rust.md
@@ -79,7 +79,7 @@ References:
## Testcontainers module
We are interested in providing a Testcontainers for Rust module that
-would provide SDK for the official [WireMock Docker images](../../docker).
+would provide SDK for the official [WireMock Docker images](../standalone/docker.md).
This module is on our roadmap but have not been published yet,
see [wiremock/ecosystem #8](https://github.com/wiremock/ecosystem/issues/8).
Contributions are welcome!
diff --git a/_docs/solutions/spring-boot.md b/_docs/solutions/spring-boot.md
index bb27b622..b166461e 100644
--- a/_docs/solutions/spring-boot.md
+++ b/_docs/solutions/spring-boot.md
@@ -4,8 +4,6 @@ title: "Using WireMock with Spring Boot"
meta_title: Running WireMock with Spring Boot | WireMock
toc_rank: 116
description: The team behind Spring Cloud Contract have created a library to support running WireMock using the “ambient” HTTP server
-redirect_from:
-- "/docs/spring-boot.html"
logo: /images/logos/technology/spring.svg
---
@@ -61,4 +59,4 @@ from Pivotal's blog shows how WireMock can be used to test Spring apps that use
## Useful pages
-- [WireMock on Java and JVM](../solutions/jvm) - Most of JVM generic solutions are applicable to Spring Boot development too
+- [WireMock on Java and JVM](./jvm.md) - Most of JVM generic solutions are applicable to Spring Boot development too
diff --git a/_docs/solutions/testcontainers.md b/_docs/solutions/testcontainers.md
index c1d5f83b..6c474c17 100644
--- a/_docs/solutions/testcontainers.md
+++ b/_docs/solutions/testcontainers.md
@@ -5,11 +5,6 @@ meta_title: "Testcontainers Solutions | WireMock"
description: "Additional solutions for WireMock when using Testcontainers"
logo: /images/logos/technology/testcontainers.svg
hide-disclaimer: true
-redirect_from:
-- "/docs/testcontainers.html"
-- "/docs/testcontainers/"
-- "/testcontainers.html"
-- "/testcontainers/"
---
The WireMock community provides modules for [Testcontainers](https://testcontainers.com/).
@@ -20,7 +15,7 @@ All the modules are under active development.
If there is no module implemented for your technology stack,
a `GenericContainer` implementation from Testcontainers can be used.
For features that are not implemented yet in Module APIs for your language,
-it is possible to use the [Administrative REST API](../../standalone/administration).
+it is possible to use the [Administrative REST API](../standalone/administration.md).
Feedback and contributions are welcome!
See WireMock on the [Testcontainers modules listing](https://testcontainers.com/modules/wiremock/).
@@ -51,17 +46,17 @@ for all documentation and examples.
Golang implementation is a multi-platform library that includes the Testcontainers module only.
The module's full documentation and examples are available in its
[GitHub Repository](https://github.com/wiremock/wiremock-testcontainers-go).
-There is a separate library for the CLI, see the [Golang Solutions page](../golang).
+There is a separate library for the CLI, see the [Golang Solutions page](./golang.md).
## Experimental modules
**C/C++ and other native languages.**
We created a WireMock module for
[Testcontainers for C/C++](https://github.com/oleg-nenashev/testcontainers-c).
-It allows provisioning the WireMock server as a standalone container within your tests, based on [WireMock Docker](/docker).
+It allows provisioning the WireMock server as a standalone container within your tests, based on [WireMock Docker](../standalone/docker.md).
It allows using WireMock with all popular C/C++ testing frameworks
like Google Test, CTest, Doctest, QtTest or CppUnit.
-Read More: [C/C++ Solutions Page](../c_cpp).
+Read More: [C/C++ Solutions Page](./c_cpp.md).
## Other Languages
@@ -76,105 +71,95 @@ Node.js, Rust, Haskell, Ruby, etc.
Examples of using the Testcontainers Modules for different languages and Testcontainers modules:
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-import org.junit.jupiter.api.*;
-import org.testcontainers.junit.jupiter.*;
-import org.wiremock.integrations.testcontainers.testsupport.http.*;
-import static org.assertj.core.api.Assertions.assertThat;
-
-@Testcontainers
-class WireMockContainerJunit5Test {
-
- @Container
- WireMockContainer wiremockServer = new WireMockContainer("2.35.0")
- .withMapping("hello", WireMockContainerJunit5Test.class, "hello-world.json");
-
- @Test
- void helloWorld() throws Exception {
- String url = wiremockServer.getUrl("/hello");
- HttpResponse response = new TestHttpClient().get(url);
- assertThat(response.getBody())
- .as("Wrong response body")
- .contains("Hello, world!");
+=== "Java"
+
+ ```java
+ import org.junit.jupiter.api.*;
+ import org.testcontainers.junit.jupiter.*;
+ import org.wiremock.integrations.testcontainers.testsupport.http.*;
+ import static org.assertj.core.api.Assertions.assertThat;
+
+ @Testcontainers
+ class WireMockContainerJunit5Test {
+
+ @Container
+ WireMockContainer wiremockServer = new WireMockContainer("2.35.0")
+ .withMapping("hello", WireMockContainerJunit5Test.class, "hello-world.json");
+
+ @Test
+ void helloWorld() throws Exception {
+ String url = wiremockServer.getUrl("/hello");
+ HttpResponse response = new TestHttpClient().get(url);
+ assertThat(response.getBody())
+ .as("Wrong response body")
+ .contains("Hello, world!");
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% codetab Python %}
-
-```python
-import pytest
-from wiremock.testing.testcontainer import wiremock_container
-
-@pytest.fixture(scope="session") # (1)
-def wm_server():
- with wiremock_container(secure=False) as wm:
- Config.base_url = wm.get_url("__admin") # (2)=
- Mappings.create_mapping(
- Mapping(
- request=MappingRequest(method=HttpMethods.GET, url="/hello"),
- response=MappingResponse(status=200, body="hello"),
- persistent=False,
- )
- ) # (3)
- yield wm
-
-def test_get_hello_world(wm_server): # (4)
- resp1 = requests.get(wm_server.get_url("/hello"), verify=False)
- assert resp1.status_code == 200
- assert resp1.content == b"hello"
-```
-
-{% endcodetab %}
-
-{% codetab Golang %}
-
-```golang
-package testcontainers_wiremock_quickstart
-
-import (
- "context"
- "testing"
-
- . "github.com/wiremock/wiremock-testcontainers-go"
-)
-
-func TestWireMock(t *testing.T) {
- ctx := context.Background()
- mappingFileName := "hello-world.json"
-
- container, err := RunContainerAndStopOnCleanup(ctx, t,
- WithMappingFile(mappingFileName),
- )
- if err != nil {
- t.Fatal(err)
- }
-
- statusCode, out, err := SendHttpGet(container, "/hello", nil)
- if err != nil {
- t.Fatal(err, "Failed to get a response")
- }
-
- // Verify the response
- if statusCode != 200 {
- t.Fatalf("expected HTTP-200 but got %d", statusCode)
- }
-
- if string(out) != "Hello, world!" {
- t.Fatalf("expected 'Hello, world!' but got %s", out)
- }
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
+
+=== "Python"
+
+ ```python
+ import pytest
+ from wiremock.testing.testcontainer import wiremock_container
+
+ @pytest.fixture(scope="session") # (1)
+ def wm_server():
+ with wiremock_container(secure=False) as wm:
+ Config.base_url = wm.get_url("__admin") # (2)=
+ Mappings.create_mapping(
+ Mapping(
+ request=MappingRequest(method=HttpMethods.GET, url="/hello"),
+ response=MappingResponse(status=200, body="hello"),
+ persistent=False,
+ )
+ ) # (3)
+ yield wm
+
+ def test_get_hello_world(wm_server): # (4)
+ resp1 = requests.get(wm_server.get_url("/hello"), verify=False)
+ assert resp1.status_code == 200
+ assert resp1.content == b"hello"
+ ```
+
+=== "Golang"
+
+ ```golang
+ package testcontainers_wiremock_quickstart
+
+ import (
+ "context"
+ "testing"
+
+ . "github.com/wiremock/wiremock-testcontainers-go"
+ )
+
+ func TestWireMock(t *testing.T) {
+ ctx := context.Background()
+ mappingFileName := "hello-world.json"
+
+ container, err := RunContainerAndStopOnCleanup(ctx, t,
+ WithMappingFile(mappingFileName),
+ )
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ statusCode, out, err := SendHttpGet(container, "/hello", nil)
+ if err != nil {
+ t.Fatal(err, "Failed to get a response")
+ }
+
+ // Verify the response
+ if statusCode != 200 {
+ t.Fatalf("expected HTTP-200 but got %d", statusCode)
+ }
+
+ if string(out) != "Hello, world!" {
+ t.Fatalf("expected 'Hello, world!' but got %s", out)
+ }
+ }
+ ```
## Coming soon
@@ -183,8 +168,6 @@ A lot more features can be implemented in the listed modules,
and any contributions are welcome!
If you are interested, join us on the [community Slack](http://slack.wiremock.org/).
-## Learn More
-
## References
- Devoxx BE talk on API Integration testing with Testcontainers and WireMock,
diff --git a/_docs/standalone.md b/_docs/standalone.md
index 5c731e2b..f79ae9a2 100644
--- a/_docs/standalone.md
+++ b/_docs/standalone.md
@@ -1,33 +1,28 @@
---
-layout: docs
-title: WireMock Standalone
-meta_title: WireMock as a Standalone Service
-toc_rank: 41
-redirect_from:
- - "/standalone.html"
description: >
WireMock can be run as a standalone service.
We provide the JAR file and Docker image distributions for it.
---
+# WireMock as a Standalone Service
+
WireMock can run as a standalone service,
configured via the Java API, JSON over HTTP or JSON files.
We provide the JAR file and Docker image distributions for it.
## Running WireMock
-- [Running as a Docker Image](../docker)
-- [Running as a JAR file](./java-jar)
+- [Running as a Docker Image](./standalone/docker.md)
+- [Running as a JAR file](./standalone/java-jar.md)
## Management
When WireMock runs as a standalone service, it can be managed through its REST API.
-- [WireMock Administration](./administration)
-- [Admin API Reference](./admin-api-reference/)
+- [WireMock Administration](./standalone/administration.md)
+- [Admin API Reference](./standalone/admin-api-reference.md)
## API Clients
There is a number of API clients that work with the standalone WireMock instance.
-Check out the [Solution pages](../../docs) for more info and pointers.
-
+Check out the [Solution pages](./solutions/README.md) for more info and pointers.
diff --git a/_docs/standalone/admin-api-reference.md b/_docs/standalone/admin-api-reference.md
index 8476f05e..636056cb 100644
--- a/_docs/standalone/admin-api-reference.md
+++ b/_docs/standalone/admin-api-reference.md
@@ -4,16 +4,10 @@ title: Admin API Reference
meta_title: WireMock Admin REST API Documentation | WireMock
toc_rank: 120
description: The WireMock admin API is described in OpenAPI 3.0.
-redirect_from:
- - "/wiremock-admin-api.html"
- - "/docs/api.html"
- - "/docs/api/"
---
The WireMock admin API is described in [OpenAPI 3.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md). The spec file plus an instance of Swagger UI can be accessed from a running WireMock instance under `/__admin/docs/`, e.g. `http://localhost:8080/__admin/docs/`.
Below is the full API reference:
-
-
-
+!!swagger-http https://raw.githubusercontent.com/wiremock/wiremock/master/src/main/resources/swagger/wiremock-admin-api.json!!
diff --git a/_docs/standalone/administration.md b/_docs/standalone/administration.md
index ff573545..3ae448a6 100644
--- a/_docs/standalone/administration.md
+++ b/_docs/standalone/administration.md
@@ -1,10 +1,9 @@
---
-layout: docs
-title: Administration API
-meta_title: Administration API in WireMock Standalone | WireMock
description: Provides tips on managing standalone WireMock servers
---
+# Administration API in WireMock Standalone
+
WireMock Standalone offers the REST API for administration, troubleshooting and analysis purposes.
You can find the key use-cases and the full specification below.
@@ -21,4 +20,4 @@ post a request with an empty body to `http://:/__admin/shutdown`.
## Full specification
-The full specification is available [here](../admin-api-reference).
+The full specification is available [here](./admin-api-reference.md).
diff --git a/_docs/standalone/docker.md b/_docs/standalone/docker.md
index 2ebc00b4..29f47436 100644
--- a/_docs/standalone/docker.md
+++ b/_docs/standalone/docker.md
@@ -1,14 +1,11 @@
---
-layout: docs
-title: Running in Docker
-meta_title: Configuring and running WireMock in Docker | WireMock
-description: The Docker image supports exactly the same set of command line arguments as the standalone version. These can be passed to the container by appending them to the end of the command.
-redirect_from:
- - "/docs/solutions/docker.html"
- - "/docs/docker.html"
- - "/docs/docker/"
+description: >
+ The Docker image supports exactly the same set of command line arguments as the standalone version.
+ These can be passed to the container by appending them to the end of the command.
---
+# Configuring and running WireMock in Docker
+
From version 2.31.0 WireMock has an [official Docker image](https://hub.docker.com/r/wiremock/wiremock).
## Getting started
@@ -19,27 +16,27 @@ From version 2.31.0 WireMock has an [official Docker image](https://hub.docker.c
docker run -it --rm \
-p 8080:8080 \
--name wiremock \
- wiremock/wiremock:{{ site.wiremock_version }}
+ wiremock/wiremock:{{ versions.wiremock_version }}
```
> Access [http://localhost:8080/\_\_admin/mappings](http://localhost:8080/__admin/mappings) to display the mappings (empty set)
### Start with command line arguments
-The Docker image supports exactly the same set of command line arguments as the [standalone version](../java-jar#command-line-options).
+The Docker image supports exactly the same set of command line arguments as the [standalone version](./java-jar.md#command-line-options).
These can be passed to the container by appending them to the end of the command e.g.:
```sh
docker run -it --rm \
-p 8443:8443 \
--name wiremock \
- wiremock/wiremock:{{ site.wiremock_version }} \
+ wiremock/wiremock:{{ versions.wiremock_version }} \
--https-port 8443 --verbose
```
#### Passing command line arguments as environment variable
-Starting from `3.2.0-2`, the Docker image supports passing command line arguments [standalone version](../java-jar#command-line-options) as the environment variable.
+Starting from `3.2.0-2`, the Docker image supports passing command line arguments [standalone version](./java-jar.md#command-line-options) as the environment variable.
Environment variable `WIREMOCK_OPTIONS` can be passed to container consisting of all command line arguments e.g.:
```sh
@@ -47,7 +44,7 @@ docker run -it --rm \
-e WIREMOCK_OPTIONS='--https-port 8443 --verbose' \
-p 8443:8443 \
--name wiremock \
- wiremock/wiremock:{{ site.wiremock_version }}
+ wiremock/wiremock:{{ versions.wiremock_version }}
```
### Mounting stub mapping files
@@ -62,15 +59,15 @@ docker run -it --rm \
-p 8080:8080 \
--name wiremock \
-v $PWD:/home/wiremock \
- wiremock/wiremock:{{ site.wiremock_version }}
+ wiremock/wiremock:{{ versions.wiremock_version }}
```
### Running with extensions
-[WireMock extensions](../../extending-wiremock/) are packaged as JAR files. In order to use them they need to be made
+[WireMock extensions](../extending-wiremock.md) are packaged as JAR files. In order to use them they need to be made
available at runtime and WireMock must be configured to enable them.
-For example, to use the [Webhooks extension](../../webhooks-and-callbacks/) we would first download [wiremock-webhooks-extension-{{ site.wiremock_version }}.jar](https://repo1.maven.org/maven2/org/wiremock/wiremock-webhooks-extension/{{ site.wiremock_version }}/wiremock-webhooks-extension-{{ site.wiremock_version }}.jar)
+For example, to use the [Webhooks extension](../webhooks-and-callbacks.md) we would first download [wiremock-webhooks-extension-{{ versions.wiremock_version }}.jar](https://repo1.maven.org/maven2/org/wiremock/wiremock-webhooks-extension/{{ versions.wiremock_version }}/wiremock-webhooks-extension-{{ versions.wiremock_version }}.jar)
into the `extensions` directory under our working directory.
Then when starting Docker we would mount the extensions directory to `/var/wiremock/extensions` and enable the webhooks extension
diff --git a/_docs/standalone/java-jar.md b/_docs/standalone/java-jar.md
index fd949cff..de2dece2 100644
--- a/_docs/standalone/java-jar.md
+++ b/_docs/standalone/java-jar.md
@@ -1,23 +1,16 @@
---
-layout: docs
-title: Running as a Standalone Process
-meta_title: Run an API Mock Server as a Standalone Process | WireMock
-toc_rank: 41
-redirect_from:
- - "/running-standalone.html"
- - "/running-standalone/"
- - "/docs/running-standalone.html"
- - "/docs/running-standalone/"
description: The WireMock server can be run in its own process, and configured via the Java API, JSON over HTTP or JSON files.
---
+# Run the API Mock Server as a Standalone Process
+
The WireMock server can be run in its own process, and configured via
the Java API, JSON over HTTP or JSON files.
-Once you have [downloaded the standalone JAR](../../download) you can run it simply by doing this:
+Once you have [downloaded the standalone JAR](./../download-and-installation.md) you can run it simply by doing this:
```bash
-$ java -jar wiremock-standalone-{{ site.wiremock_version }}.jar
+$ java -jar wiremock-standalone-{{ versions.wiremock_version }}.jar
```
## Command line options
@@ -52,8 +45,8 @@ sets the keystore password value. The key manager password can be set with the (
`--https-truststore`: Path to a keystore file containing client public
certificates, proxy target public certificates & private keys to use when
authenticate with a proxy target that require client authentication. Can be a path to a file or a resource on the classpath. See
-[HTTPS configuration](../../configuration#https-configuration)
-and [Running as a browser proxy](../../proxying#running-as-a-browser-proxy) for
+[HTTPS configuration](./../configuration.md#https-configuration)
+and [Running as a browser proxy](./../proxying.md#running-as-a-browser-proxy) for
details.
`--truststore-type`: The HTTPS trust store type. Usually JKS or PKCS12.
@@ -62,7 +55,7 @@ details.
to "password" if not specified.
`--https-require-client-cert`: Force clients to authenticate with a
-client certificate. See [HTTPS](../../https/) for details.
+client certificate. See [HTTPS](./../https.md) for details.
`--verbose`: Turn on verbose logging to stdout
@@ -70,10 +63,10 @@ client certificate. See [HTTPS](../../https/) for details.
`__files` reside. This defaults to the current directory.
`--record-mappings`: Record incoming requests as stub mappings. See
-[Record and Playback](../../record-playback/).
+[Record and Playback](./../record-playback.md).
`--match-headers`: When in record mode, capture request headers with the
-keys specified. See [Record and Playback](../../record-playback/).
+keys specified. See [Record and Playback](./../record-playback.md).
`--proxy-all`: Proxy all requests through to another base URL e.g.
`--proxy-all="http://api.someservice.com"` Typically used in conjunction
@@ -95,7 +88,7 @@ internet access via an opaque proxy). e.g.
e.g. `--proxy-via http://username:password@webproxy.mycorp.com:8080/`.
`--enable-browser-proxying`: Run as a browser proxy. See
-[Running as a browser proxy](../../proxying#running-as-a-browser-proxy).
+[Running as a browser proxy](./../proxying.md#running-as-a-browser-proxy).
`--ca-keystore`: A key store containing a root Certificate Authority private key
and certificate that can be used to sign generated certificates when
@@ -149,7 +142,7 @@ Recommended when using WireMock for performance testing with delays, as it allow
Effective only with `asynchronousResponseEnabled=true`. Defaults to 10.
`--extensions`: Extension class names e.g.
-com.mycorp.HeaderTransformer,com.mycorp.BodyTransformer. See [Extending WireMock](../../extending-wiremock/).
+com.mycorp.HeaderTransformer,com.mycorp.BodyTransformer. See [Extending WireMock](./../extending-wiremock.md).
`--print-all-network-traffic`: Print all raw incoming and outgoing network traffic to console.
@@ -174,15 +167,15 @@ The last of these will cause chunked encoding to be used only when a stub define
`--logged-response-body-size-limit`: Set a limit in bytes beyond which response bodies in the log will be truncated. When enabled this helps avoid out of memory errors when serving large response bodies.
-`--allow-proxy-targets`: Limit the permitted targets for proxying to and recording from the supplied addressess. This parameter takes a comma-separated list of single IP addresses, IP address ranges and hostname wildcards. See [this article](../../configuration#preventing-proxying-to-and-recording-from-specific-target-addresses) for details.
+`--allow-proxy-targets`: Limit the permitted targets for proxying to and recording from the supplied addresses. This parameter takes a comma-separated list of single IP addresses, IP address ranges and hostname wildcards. See [this article](./../configuration.md#preventing-proxying-to-and-recording-from-specific-target-addresses) for details.
-`--deny-proxy-targets`: Prevent proxying to and recording from the supplied addressess. This parameter takes a comma-separated list of single IP addresses, IP address ranges and hostname wildcards. Note: if both `--allow-proxy-targets` and this parameter are set, the allow list will be evaluated first. See [this article](../../configuration#preventing-proxying-to-and-recording-from-specific-target-addresses) for details.
+`--deny-proxy-targets`: Prevent proxying to and recording from the supplied addresses. This parameter takes a comma-separated list of single IP addresses, IP address ranges and hostname wildcards. Note: if both `--allow-proxy-targets` and this parameter are set, the allow list will be evaluated first. See [this article](./../configuration.md#preventing-proxying-to-and-recording-from-specific-target-addresses) for details.
`--proxy-timeout`: Set the timeout for requests to the proxy in milliseconds
`--proxy-pass-through`: Flag used in browser-caching in order to enable or disable pass through unmatched requests to the target indicated by the original requests. By default, this flag is enabled and let the requests pass through.
-`--filename-template`: Set filename template in handlebar format. For endpoint: `GET /pets/{id}` using the format: `{{{method}}}-{{{url}}}.json` output will be `get-pets-id.json`. Default format: `{{{method}}}-{{{path}}}-{{{id}}}.json` hence by default template filename will be: `get-pets-id-1.json`.
+`--filename-template`: Set filename template in handlebar format. For endpoint: `GET /pets/{id}` using the format: {% raw %} `{{{method}}}-{{{url}}}.json` {% endraw %} output will be `get-pets-id.json`. Default format: {% raw %} `{{{method}}}-{{{path}}}-{{{id}}}.json` {% endraw %} hence by default template filename will be: `get-pets-id-1.json`.
Note: introduced in [3.0.0-beta-8](https://github.com/wiremock/wiremock/releases/tag/3.0.0-beta-8).
`--help`: Show command line help
@@ -222,7 +215,7 @@ $ curl http://localhost:8080/get/this
Here it is!
```
-The full stubbing API syntax is described in [Stubbing](../../stubbing/).
+The full stubbing API syntax is described in [Stubbing](./../stubbing.md).
## JSON file configuration
@@ -253,7 +246,7 @@ $ curl http://localhost:8080/api/mytest
More content
```
-See [stubbing](../../stubbing/) and [verifying](../../verifying/) for more on the JSON API.
+See [stubbing](./../stubbing.md) and [verifying](./../verifying.md) for more on the JSON API.
### Multi-stub JSON files
diff --git a/_docs/stateful-behaviour.md b/_docs/stateful-behaviour.md
index d4a5838a..c39a7774 100644
--- a/_docs/stateful-behaviour.md
+++ b/_docs/stateful-behaviour.md
@@ -1,11 +1,11 @@
---
-layout: docs
-title: Stateful Behaviour
-meta_title: Simulating Stateful Behavior for Testing | WireMock
-redirect_from: "/stateful-behaviour.html"
-description: Most web services tend to have some state, which changes as you and others interact with it.
+description: >
+ Most web services tend to have some state,
+ which changes as you and others interact with it.
---
+# Simulating Stateful Behavior for Testing
+
**Most web services tend to have some state, which changes as you and
others interact with it. So it's pretty useful to be able to simulate
this when you've swapped a real service for a test double.**
@@ -178,4 +178,4 @@ PUT /__admin/scenarios/my_scenario/state
{
"state": "state_2"
}
-```
\ No newline at end of file
+```
diff --git a/_docs/stub-metadata.md b/_docs/stub-metadata.md
index 4fbc1295..e0937d7c 100644
--- a/_docs/stub-metadata.md
+++ b/_docs/stub-metadata.md
@@ -1,123 +1,99 @@
---
-layout: docs
-title: "Stub Metadata"
-meta_title: Associating and using metadata with API stubs | WireMock
-toc_rank: 117
-description: It is possible to attach arbitrary metadata to stub mappings, which can be later used to search or deletion, or simply retrieval.
+description: >
+ It is possible to attach arbitrary metadata to stub mappings,
+ which can be later used to search or deletion, or simply retrieval.
---
+# Associating and using metadata with API stubs
+
It is possible to attach arbitrary metadata to stub mappings, which can be later used to search or deletion, or simply retrieval.
## Adding metadata to stubs
Data under the `metadata` key is a JSON object (represented in Java by a `Map`). It can be added to a stub mapping on creation.
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-stubFor(get("/with-metadata")
- .withMetadata(metadata()
- .attr("singleItem", 1234)
- .list("listItem", 1, 2, 3, 4)
- .attr("nestedObject", metadata()
- .attr("innerItem", "Hello")
- )
-));
-```
-
-{% endcodetab %}
-
-{% codetab JSON %}
-
-```json
-{
- "request": {
- "url": "/with-metadata"
- },
- "response": {
- "status": 200
- },
-
- "metadata": {
- "singleItem": 1234,
- "listItem": [1, 2, 3, 4],
- "nestedObject": {
- "innerItem": "Hello"
+=== "Java"
+
+ ```java
+ stubFor(get("/with-metadata")
+ .withMetadata(metadata()
+ .attr("singleItem", 1234)
+ .list("listItem", 1, 2, 3, 4)
+ .attr("nestedObject", metadata()
+ .attr("innerItem", "Hello")
+ )
+ ));
+ ```
+
+=== "JSON"
+
+ ```json
+ {
+ "request": {
+ "url": "/with-metadata"
+ },
+ "response": {
+ "status": 200
+ },
+
+ "metadata": {
+ "singleItem": 1234,
+ "listItem": [1, 2, 3, 4],
+ "nestedObject": {
+ "innerItem": "Hello"
+ }
}
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
## Search for stubs by metadata
-Stubs can be found by matching against their metadata using the same matching strategies as when [matching HTTP requests](../request-matching/).
+Stubs can be found by matching against their metadata using the same matching strategies as when [matching HTTP requests](./request-matching.md).
The most useful matcher for this is `matchesJsonPath`:
-{% codetabs %}
-
-{% codetab Java %}
+=== "Java"
-```java
-List stubs =
- findStubsByMetadata(matchingJsonPath("$.singleItem", containing("123")));
-```
+ ```java
+ List stubs =
+ findStubsByMetadata(matchingJsonPath("$.singleItem", containing("123")));
+ ```
-{% endcodetab %}
+=== "JSON"
-{% codetab JSON %}
+ ```json
+ POST /__admin/mappings/find-by-metadata
-```json
-POST /__admin/mappings/find-by-metadata
-
-{
- "matchesJsonPath" : {
- "expression" : "$.singleItem",
- "contains" : "123"
+ {
+ "matchesJsonPath" : {
+ "expression" : "$.singleItem",
+ "contains" : "123"
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
## Remove stubs by metadata
Similarly, stubs with matching metadata can be removed:
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-removeStubsByMetadata(matchingJsonPath("$.singleItem", containing("123")));
-```
+=== "Java"
-{% endcodetab %}
+ ```java
+ removeStubsByMetadata(matchingJsonPath("$.singleItem", containing("123")));
+ ```
-{% codetab JSON %}
+=== "JSON"
-POST /__admin/mappings/remove-by-metadata
+ POST /__admin/mappings/remove-by-metadata
-```json
-{
- "matchesJsonPath" : {
- "expression" : "$.singleItem",
- "contains" : "123"
+ ```json
+ {
+ "matchesJsonPath" : {
+ "expression" : "$.singleItem",
+ "contains" : "123"
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
## Remove request journal events by metadata
-See [Removing items from the journal](../verifying#by-criteria)
+See [Removing items from the journal](./verifying.md#by-criteria)
diff --git a/_docs/stubbing.md b/_docs/stubbing.md
index eb72e0c3..263911be 100644
--- a/_docs/stubbing.md
+++ b/_docs/stubbing.md
@@ -1,14 +1,13 @@
---
-layout: docs
-title: Stubbing
-meta_title: Returning stubbed HTTP responses to specific requests | WireMock
-toc_rank: 50
-redirect_from: "/stubbing.html"
-description: A core feature of WireMock is the ability to return canned HTTP responses for requests matching criteria. These are described in detail in Request Matching.
+description: >
+ A core feature of WireMock is the ability to return canned HTTP responses for requests matching criteria.
+ These are described in detail in Request Matching.
---
-A core feature of WireMock [API mocking]({{ '/' | absolute_url }}) is the ability to return canned HTTP
-responses for requests matching criteria. These are described in detail in [Request Matching](../request-matching/).
+# Returning stubbed HTTP responses to specific requests
+
+A core feature of WireMock [API mocking](./overview.md) is the ability to return canned HTTP
+responses for requests matching criteria. These are described in detail in [Request Matching](./request-matching.md).
## Basic stubbing
@@ -25,73 +24,61 @@ when the relative URL exactly matches `/some/thing` (including query parameters)
The body of the response will be "Hello world!" and a
`Content-Type` header will be sent with a value of `text-plain`.
-{% codetabs %}
+=== "JSON"
-{% codetab JSON %}
+ ```json
+ {
+ "request": {
+ "method": "GET",
+ "url": "/some/thing"
+ },
-```json
-{
- "request": {
- "method": "GET",
- "url": "/some/thing"
- },
-
- "response": {
- "status": 200,
- "body": "Hello, world!",
- "headers": {
- "Content-Type": "text/plain"
+ "response": {
+ "status": 200,
+ "body": "Hello, world!",
+ "headers": {
+ "Content-Type": "text/plain"
+ }
}
- }
-}
-```
-
-{% endcodetab %}
-
-{% codetab Java %}
+ }
+ ```
-```java
-@Test
-public void exactUrlOnly() {
- stubFor(get(urlEqualTo("/some/thing"))
- .willReturn(aResponse()
- .withHeader("Content-Type", "text/plain")
- .withBody("Hello world!")));
+=== "Java"
- assertThat(testClient.get("/some/thing").statusCode(), is(200));
- assertThat(testClient.get("/some/thing/else").statusCode(), is(404));
-}
-```
+ ```java
+ @Test
+ public void exactUrlOnly() {
+ stubFor(get(urlEqualTo("/some/thing"))
+ .willReturn(aResponse()
+ .withHeader("Content-Type", "text/plain")
+ .withBody("Hello world!")));
-{% endcodetab %}
+ assertThat(testClient.get("/some/thing").statusCode(), is(200));
+ assertThat(testClient.get("/some/thing/else").statusCode(), is(404));
+ }
+ ```
-{% codetab Python %}
+=== "Python"
-```python
-Mappings.create_mapping(
- Mapping(
- request=MappingRequest(method=HttpMethods.GET, url="/some/thing"),
- response=MappingResponse(status=200, body="Hello, world!", headers=("Content-Type", "text/plain")),
+ ```python
+ Mappings.create_mapping(
+ Mapping(
+ request=MappingRequest(method=HttpMethods.GET, url="/some/thing"),
+ response=MappingResponse(status=200, body="Hello, world!", headers=("Content-Type", "text/plain")),
+ )
)
-)
-```
+ ```
-{% endcodetab %}
+=== "Golang"
-{% codetab Golang %}
-
-```go
-wiremockClient.StubFor(wiremock.Get(wiremock.URLPathEqualTo("/some/thing")).
- WillReturnResponse(
- wiremock.NewResponse().
- WithStatus(http.StatusOK).
- WithBody("Hello, world!").
- WithHeader("Content-Type", "text/plain")))
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```go
+ wiremockClient.StubFor(wiremock.Get(wiremock.URLPathEqualTo("/some/thing")).
+ WillReturnResponse(
+ wiremock.NewResponse().
+ WithStatus(http.StatusOK).
+ WithBody("Hello, world!").
+ WithHeader("Content-Type", "text/plain")))
+ ```
In Java, if you'd prefer to use slightly more BDDish language in your tests,
you can replace `stubFor` with `givenThat`.
@@ -141,44 +128,36 @@ you want the stub mapping to match on any request method.
In addition to the status code, the status message can optionally also
be set.
-{% codetabs %}
-
-{% codetab Java %}
+=== "Java"
-```java
-@Test
-public void statusMessage() {
- stubFor(get(urlEqualTo("/some/thing"))
- .willReturn(aResponse()
- .withStatus(200)
- .withStatusMessage("Everything was just fine!")
- .withHeader("Content-Type", "text/plain")));
-
- assertThat(testClient.get("/some/thing").statusCode(), is(200));
- assertThat(testClient.get("/some/thing/else").statusCode(), is(404));
-}
-```
-
-{% endcodetab %}
-
-{% codetab JSON %}
+ ```java
+ @Test
+ public void statusMessage() {
+ stubFor(get(urlEqualTo("/some/thing"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withStatusMessage("Everything was just fine!")
+ .withHeader("Content-Type", "text/plain")));
-```json
-{
- "request": {
- "method": "GET",
- "url": "/some/thing"
- },
- "response": {
- "status": 200,
- "statusMessage": "Everything was just fine!"
+ assertThat(testClient.get("/some/thing").statusCode(), is(200));
+ assertThat(testClient.get("/some/thing/else").statusCode(), is(404));
}
-}
-```
+ ```
-{% endcodetab %}
+=== "JSON"
-{% endcodetabs %}
+ ```json
+ {
+ "request": {
+ "method": "GET",
+ "url": "/some/thing"
+ },
+ "response": {
+ "status": 200,
+ "statusMessage": "Everything was just fine!"
+ }
+ }
+ ```
## Stub priority
@@ -192,42 +171,34 @@ One example of this might be where you want to define a catch-all stub
for any URL that doesn't match any more specific cases. Adding a
priority to a stub mapping facilitates this:
-{% codetabs %}
-
-{% codetab Java %}
+=== "Java"
-```java
-//Catch-all case
-stubFor(get(urlMatching("/api/.*")).atPriority(5)
- .willReturn(aResponse().withStatus(401)));
-
-//Specific case
-stubFor(get(urlEqualTo("/api/specific-resource")).atPriority(1) //1 is highest
- .willReturn(aResponse()
- .withStatus(200)
- .withBody("Resource state")));
-```
+ ```java
+ //Catch-all case
+ stubFor(get(urlMatching("/api/.*")).atPriority(5)
+ .willReturn(aResponse().withStatus(401)));
-{% endcodetab %}
+ //Specific case
+ stubFor(get(urlEqualTo("/api/specific-resource")).atPriority(1) //1 is highest
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withBody("Resource state")));
+ ```
-{% codetab Json %}
+=== "JSON"
-```json
-{
- "priority": 1,
- "request": {
- "method": "GET",
- "url": "/api/specific-resource"
- },
- "response": {
- "status": 200
+ ```json
+ {
+ "priority": 1,
+ "request": {
+ "method": "GET",
+ "url": "/api/specific-resource"
+ },
+ "response": {
+ "status": 200
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
When unspecified, stubs default to a priority of `5`[^](https://github.com/wiremock/wiremock/blob/master/src/main/java/com/github/tomakehurst/wiremock/stubbing/StubMapping.java#L37) where `1` is the highest priority and Java `Integer.MAX_VALUE` (i.e., `2147483647`) is the minimum priority.
@@ -235,80 +206,64 @@ When unspecified, stubs default to a priority of `5`[^](https://githu
In addition to matching on request headers, it's also possible to send response headers.
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-stubFor(get(urlEqualTo("/whatever"))
- .willReturn(aResponse()
- .withStatus(200)
- .withHeader("Content-Type", "application/json")
- .withHeader("Set-Cookie", "session_id=91837492837")
- .withHeader("Set-Cookie", "split_test_group=B") // You can call withHeader more than once for the same header if multiple values are required
- .withHeader("Cache-Control", "no-cache")));
-```
+=== "Java"
-{% endcodetab %}
-
-{% codetab JSON %}
-
-```json
-{
- "request": {
- "method": "GET",
- "url": "/whatever"
- },
- "response": {
- "status": 200,
- "headers": {
- "Content-Type": "text/plain",
- "Set-Cookie": ["session_id=91837492837", "split_test_group=B"],
- "Cache-Control": "no-cache"
+ ```java
+ stubFor(get(urlEqualTo("/whatever"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withHeader("Set-Cookie", "session_id=91837492837")
+ .withHeader("Set-Cookie", "split_test_group=B") // You can call withHeader more than once for the same header if multiple values are required
+ .withHeader("Cache-Control", "no-cache")));
+ ```
+
+=== "JSON"
+
+ ```json
+ {
+ "request": {
+ "method": "GET",
+ "url": "/whatever"
+ },
+ "response": {
+ "status": 200,
+ "headers": {
+ "Content-Type": "text/plain",
+ "Set-Cookie": ["session_id=91837492837", "split_test_group=B"],
+ "Cache-Control": "no-cache"
+ }
}
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
## Specifying the response body
The simplest way to specify a response body is as a string literal.
-{% codetabs %}
-
-{% codetab Java %}
+=== "Java" %}"
-```java
-stubFor(get(urlEqualTo("/body"))
- .willReturn(aResponse()
- .withBody("Literal text to put in the body")));
-```
-
-{% endcodetab %}
+ ```java
+ stubFor(get(urlEqualTo("/body"))
+ .willReturn(aResponse()
+ .withBody("Literal text to put in the body")));
+ ```
-{% codetab JSON %}
+=== "JSON"
-```json
-{
- "request": {
- "method": "GET",
- "url": "/body"
- },
- "response": {
- "status": 200,
- "body": "Literal text to put in the body"
+ ```json
+ {
+ "request": {
+ "method": "GET",
+ "url": "/body"
+ },
+ "response": {
+ "status": 200,
+ "body": "Literal text to put in the body"
+ }
}
-}
```
-{% endcodetab %}
-
-{% endcodetabs %}
-
If you're specifying a JSON body via the JSON API, you can avoid having to escape it like this:
```json
@@ -327,9 +282,7 @@ under the current directory in which the server was started. To make
your stub use the file, simply call `bodyFile()` on the response builder
with the file's path relative to `__files`:
-{% codetabs %}
-
-{% codetab Java %}
+=== "Java"
```java
stubFor(get(urlEqualTo("/body-file"))
@@ -337,26 +290,20 @@ stubFor(get(urlEqualTo("/body-file"))
.withBodyFile("path/to/myfile.xml")));
```
-{% endcodetab %}
+=== "JSON"
-{% codetab JSON %}
-
-```json
-{
- "request": {
- "method": "GET",
- "url": "/body-file"
- },
- "response": {
- "status": 200,
- "bodyFileName": "path/to/myfile.xml"
+ ```json
+ {
+ "request": {
+ "method": "GET",
+ "url": "/body-file"
+ },
+ "response": {
+ "status": 200,
+ "bodyFileName": "path/to/myfile.xml"
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
> **note**
>
@@ -374,36 +321,28 @@ overloaded `body()` in Java.
JSON API accepts this as a base64 string (to avoid stupidly long JSON documents):
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-stubFor(get(urlEqualTo("/binary-body"))
- .willReturn(aResponse()
- .withBody(new byte[] { 1, 2, 3, 4 })));
-```
+=== "Java"
-{% endcodetab %}
+ ```java
+ stubFor(get(urlEqualTo("/binary-body"))
+ .willReturn(aResponse()
+ .withBody(new byte[] { 1, 2, 3, 4 })));
+ ```
-{% codetab JSON %}
+=== "JSON"
-```json
-{
- "request": {
- "method": "GET",
- "url": "/binary-body"
- },
- "response": {
- "status": 200,
- "base64Body": "WUVTIElOREVFRCE="
+ ```json
+ {
+ "request": {
+ "method": "GET",
+ "url": "/binary-body"
+ },
+ "response": {
+ "status": 200,
+ "base64Body": "WUVTIElOREVFRCE="
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
## Default response for unmapped requests
@@ -411,42 +350,34 @@ When a request cannot be mapped to a response, Wiremock returns an HTML response
It is possible to customize the response by catching all URLs with a low priority.
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-stubFor(any(anyUrl())
- .atPriority(10)
- .willReturn(aResponse()
- .withStatus(404)
- .withBody("{\"status\":\"Error\",\"message\":\"Endpoint not found\"}")));
-```
+=== "Java"
-{% endcodetab %}
+ ```java
+ stubFor(any(anyUrl())
+ .atPriority(10)
+ .willReturn(aResponse()
+ .withStatus(404)
+ .withBody("{\"status\":\"Error\",\"message\":\"Endpoint not found\"}")));
+ ```
-{% codetab JSON %}
+=== "JSON"
-```json
-{
- "priority": 10,
- "request": {
- "method": "ANY",
- "urlPattern": ".*"
- },
- "response": {
- "status": 404,
- "jsonBody": { "status": "Error", "message": "Endpoint not found" },
- "headers": {
- "Content-Type": "application/json"
+ ```json
+ {
+ "priority": 10,
+ "request": {
+ "method": "ANY",
+ "urlPattern": ".*"
+ },
+ "response": {
+ "status": 404,
+ "jsonBody": { "status": "Error", "message": "Endpoint not found" },
+ "headers": {
+ "Content-Type": "application/json"
+ }
}
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
## Saving stubs
@@ -464,45 +395,37 @@ In Java, Existing stub mappings can be modified, provided they have been assigne
To do the equivalent via the JSON API, `PUT` the edited stub mapping to `/__admin/mappings/{id}`
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-wireMockServer.stubFor(get(urlEqualTo("/edit-this"))
- .withId(id)
- .willReturn(aResponse()
- .withBody("Original")));
+=== "Java"
-assertThat(testClient.get("/edit-this").content(), is("Original"));
+ ```java
+ wireMockServer.stubFor(get(urlEqualTo("/edit-this"))
+ .withId(id)
+ .willReturn(aResponse()
+ .withBody("Original")));
-wireMockServer.editStub(get(urlEqualTo("/edit-this"))
- .withId(id)
- .willReturn(aResponse()
- .withBody("Modified")));
+ assertThat(testClient.get("/edit-this").content(), is("Original"));
-assertThat(testClient.get("/edit-this").content(), is("Modified"));
-```
+ wireMockServer.editStub(get(urlEqualTo("/edit-this"))
+ .withId(id)
+ .willReturn(aResponse()
+ .withBody("Modified")));
-{% endcodetab %}
+ assertThat(testClient.get("/edit-this").content(), is("Modified"));
+ ```
-{% codetab JSON %}
+=== "JSON"
-```json
-{
- "request": {
- "urlPath": "/edit-me",
- "method": "ANY"
- },
- "response": {
- "status": 200
+ ```json
+ {
+ "request": {
+ "urlPath": "/edit-me",
+ "method": "ANY"
+ },
+ "response": {
+ "status": 200
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
## File serving
@@ -569,57 +492,49 @@ In Java, Multiple stubs can be imported in one call.
The equivalent can be carried out Via the JSON API, `POST` the to `/__admin/mappings/import`:
-{% codetabs %}
-
-{% codetab Java %}
-
-```java
-WireMock.importStubs(stubImport()
- .stub(get("/one").willReturn(ok()))
- .stub(post("/two").willReturn(ok("Body content")))
- .stub(put("/three").willReturn(ok()))
- .ignoreExisting()
- .deleteAllExistingStubsNotInImport());
-```
-
-{% endcodetab %}
-
-{% codetab JSON %}
-
-```json
-{
- "mappings": [
- {
- "request": {
- "method": "GET",
- "url": "/one"
- },
- "response": {
- "status": 200
- }
- },
- {
- "id": "8c5db8b0-2db4-4ad7-a99f-38c9b00da3f7",
- "request": {
- "url": "/two"
+=== "Java"
+
+ ```java
+ WireMock.importStubs(stubImport()
+ .stub(get("/one").willReturn(ok()))
+ .stub(post("/two").willReturn(ok("Body content")))
+ .stub(put("/three").willReturn(ok()))
+ .ignoreExisting()
+ .deleteAllExistingStubsNotInImport());
+ ```
+
+=== "JSON"
+
+ ```json
+ {
+ "mappings": [
+ {
+ "request": {
+ "method": "GET",
+ "url": "/one"
+ },
+ "response": {
+ "status": 200
+ }
},
- "response": {
- "status": 200,
- "body": "Body content"
+ {
+ "id": "8c5db8b0-2db4-4ad7-a99f-38c9b00da3f7",
+ "request": {
+ "url": "/two"
+ },
+ "response": {
+ "status": 200,
+ "body": "Body content"
+ }
}
- }
- ],
+ ],
- "importOptions": {
- "duplicatePolicy": "IGNORE",
- "deleteAllNotInImport": true
+ "importOptions": {
+ "duplicatePolicy": "IGNORE",
+ "deleteAllNotInImport": true
+ }
}
-}
-```
-
-{% endcodetab %}
-
-{% endcodetabs %}
+ ```
### Existing stubs policy
diff --git a/_docs/verifying.md b/_docs/verifying.md
index 4aee216b..f01cd860 100644
--- a/_docs/verifying.md
+++ b/_docs/verifying.md
@@ -1,29 +1,29 @@
---
-layout: docs
-title: Verifying
-meta_title: Verifying whether specific HTTP requests were made | WireMock
-toc_rank: 60
-redirect_from: "/verifying.html"
-description: Verifying and querying requests relies on the request journal, which is an in-memory log of received requests. This can be disabled for load testing.
+description: >
+ Verifying and querying requests relies on the request journal,
+ which is an in-memory log of received requests.
+ This can be disabled for load testing.
---
+# Verifying whether specific HTTP requests were made
+
The WireMock server records all requests it receives in memory (at
-least until it is [reset](../stubbing#reset)). This makes it possible to verify that
+least until it is [reset](./stubbing.md#reset)). This makes it possible to verify that
a request matching a specific pattern was received, and also to fetch
the requests' details.
Verifying and querying requests relies on the request journal, which is an in-memory log
-of received requests. This can be disabled for load testing - see the [Configuration](../configuration/) section for details.
+of received requests. This can be disabled for load testing - see the [Configuration](./configuration.md) section for details.
-Like stubbing, verification also uses WireMock's [Request Matching](../request-matching/) system to filter and query requests.
+Like stubbing, verification also uses WireMock's [Request Matching](./request-matching.md) system to filter and query requests.
## Verification failures, console output and IntelliJ
When verifying via the Java API all failed verifications will result in a `VerificationException` being thrown.
-![Verification exception]({{ '/images/verification-exception.png' | absolute_url }})
+![Verification exception](images/verification-exception.png)
The message text in the exception is formatted to enable IntelliJ's failure comparison view:
-![Comparison failure]({{ '/images/idea-comparison-failure.png' | absolute_url }})
+![Comparison failure](images/idea-comparison-failure.png)
## Verifying in Java
@@ -37,7 +37,7 @@ verify(postRequestedFor(urlEqualTo("/verify/this"))
The criteria part in the parameter to `postRequestedFor()` uses the same
builder as for stubbing, so all of the same predicates are available.
-See [Stubbing](../stubbing/) for more details.
+See [Stubbing](./stubbing.md) for more details.
To check for a precise number of requests matching the criteria, use
this form:
@@ -302,7 +302,7 @@ POST /__admin/requests/remove-by-metadata
}
```
-For more info about stub metadata see [Stub Metadata](../stub-metadata/)
+For more info about stub metadata see [Stub Metadata](./stub-metadata.md)
## Resetting the request journal
diff --git a/_docs/webhooks-and-callbacks.md b/_docs/webhooks-and-callbacks.md
index 809fcfbe..795de311 100644
--- a/_docs/webhooks-and-callbacks.md
+++ b/_docs/webhooks-and-callbacks.md
@@ -1,11 +1,9 @@
---
-layout: docs
-title: Webhooks and Callbacks
-meta_title: Simulating Webhooks and Callbacks | WireMock
-toc_rank: 105
description: Configuring WireMock to fire outbound HTTP requests when specific stubs are matched.
---
+# Simulating Webhooks and Callbacks
+
WireMock can make asynchronous outbound HTTP calls when an incoming request is matched to a specific stub. This pattern
is commonly referred to as webhooks or callbacks and is a common design in APIs that need to proactively notify their clients
of events or perform long-running processing asynchronously without blocking.
@@ -70,7 +68,7 @@ JSON:
## Using data from the original request
-Webhooks use the same [templating system](../response-templating/) as WireMock responses. This means that any of the
+Webhooks use the same [templating system](./response-templating.md) as WireMock responses. This means that any of the
configuration fields can be provided with a template expression which will be resolved before firing the webhook.
Similarly to response templates the original request data is available, although in this case it is named `originalRequest`.
@@ -189,7 +187,7 @@ JSON:
## Adding delays
-A fixed or random delay can be added before the webhook call is made, using the same style of [delay parameters as stubs](../simulating-faults/).
+A fixed or random delay can be added before the webhook call is made, using the same style of [delay parameters as stubs](./simulating-faults.md).
### Fixed delays
diff --git a/_docs_theme/main.html b/_docs_theme/main.html
new file mode 100644
index 00000000..bdb794c5
--- /dev/null
+++ b/_docs_theme/main.html
@@ -0,0 +1,173 @@
+{% extends "base.html" %}
+
+{% block header %}
+
+