MockServer control API

Manage state or process (both MockServer & MockServer Proxy)

OpenAPI Specification

mockserver-control-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: MockServer control API
  version: 5.15.x
  description: 'MockServer enables easy mocking of any system you integrate with via HTTP or HTTPS with clients written in Java, JavaScript and Ruby and a simple REST API (as shown below).


    MockServer Proxy is a proxy that introspects all proxied traffic including encrypted SSL traffic and supports Port Forwarding, Web Proxying (i.e. HTTP proxy), HTTPS Tunneling Proxying (using HTTP CONNECT) and SOCKS Proxying (i.e. dynamic port forwarding).


    Both MockServer and the MockServer Proxy record all received requests so that it is possible to verify exactly what requests have been sent by the system under test.'
  license:
    url: https://github.com/mock-server/mockserver/blob/master/LICENSE.md
    name: Apache 2.0
servers:
- url: http://localhost:1080/
- url: https://localhost:1080/
tags:
- name: control
  description: Manage state or process (both MockServer & MockServer Proxy)
paths:
  /mockserver/clear:
    put:
      tags:
      - control
      summary: clears expectations and recorded requests that match the request matcher
      responses:
        '200':
          description: expectations and recorded requests cleared
        '400':
          description: incorrect request format
      parameters:
      - in: query
        name: type
        schema:
          type: string
          enum:
          - all
          - log
          - expectations
          default: all
        required: false
        description: specifies the type of information to clear, default if not specified is "all", supported values are "all", "log", "expectations"
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/RequestDefinition'
              - $ref: '#/components/schemas/ExpectationId'
        description: request used to match expectations and record requests to clear
  /mockserver/reset:
    put:
      tags:
      - control
      summary: clears all expectations and recorded requests
      responses:
        '200':
          description: expectations and recorded requests cleared
  /mockserver/retrieve:
    put:
      tags:
      - control
      summary: retrieve recorded requests, active expectations, recorded expectations or log messages
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - java
          - json
          - log_entries
        required: false
        description: changes response format, default if not specified is "json", supported values are "java", "json", "log_entries"
      - in: query
        name: type
        schema:
          type: string
          enum:
          - logs
          - requests
          - request_responses
          - recorded_expectations
          - active_expectations
        required: false
        description: specifies the type of object that is retrieve, default if not specified is "requests", supported values are "logs", "requests", "recorded_expectations", "active_expectations"
      responses:
        '200':
          description: recorded requests or active expectations returned
          content:
            application/json:
              schema:
                oneOf:
                - type: array
                  additionalProperties: false
                  items:
                    $ref: '#/components/schemas/Expectation'
                - type: array
                  additionalProperties: false
                  items:
                    $ref: '#/components/schemas/HttpRequest'
                - type: array
                  additionalProperties: false
                  items:
                    $ref: '#/components/schemas/HttpRequestAndHttpResponse'
            application/java:
              schema:
                type: string
                description: Java code for the list of either Expectations or HttpResponses
            text/plain:
              schema:
                type: string
                description: List of recorded log messages
        '400':
          description: incorrect request format
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestDefinition'
        description: request used to match which recorded requests, expectations or log messages to return, an empty body matches all requests, expectations or log messages
  /mockserver/status:
    put:
      tags:
      - control
      summary: return listening ports
      responses:
        '200':
          description: MockServer is running and listening on the listed ports
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ports'
  /mockserver/bind:
    put:
      tags:
      - control
      summary: bind additional listening ports
      description: only supported on Netty version
      responses:
        '200':
          description: 'listening on additional requested ports, note: the response ony contains ports added for the request, to list all ports use /status'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ports'
        '400':
          description: incorrect request format
        '406':
          description: unable to bind to ports (i.e. already bound or JVM process doesn't have permission)
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ports'
        description: list of ports to bind to, where 0 indicates dynamically bind to any available port
        required: true
  /mockserver/stop:
    put:
      tags:
      - control
      summary: stop running process
      description: only supported on Netty version
      responses:
        '200':
          description: MockServer process is stopping
components:
  schemas:
    HttpError:
      description: error behaviour
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: '#/components/schemas/Delay'
        dropConnection:
          type: boolean
        responseBytes:
          type: string
    ExpectationId:
      description: pointer to existing expectation
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
      required:
      - id
    HttpRequestAndHttpResponse:
      description: request and response
      type: object
      additionalProperties: false
      properties:
        httpRequest:
          $ref: '#/components/schemas/HttpRequest'
        httpResponse:
          $ref: '#/components/schemas/HttpResponse'
        timestamp:
          type: string
    StringOrJsonSchema:
      description: string value that can be support nottable, optional or a json schema
      oneOf:
      - type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          optional:
            type: boolean
          value:
            type: string
          schema:
            $ref: http://json-schema.org/draft-04/schema
          parameterStyle:
            type: string
            enum:
            - SIMPLE
            - SIMPLE_EXPLODED
            - LABEL
            - LABEL_EXPLODED
            - MATRIX
            - MATRIX_EXPLODED
            - FORM_EXPLODED
            - FORM
            - SPACE_DELIMITED_EXPLODED
            - SPACE_DELIMITED
            - PIPE_DELIMITED_EXPLODED
            - PIPE_DELIMITED
            - DEEP_OBJECT
    Delay:
      description: response delay
      type: object
      additionalProperties: false
      properties:
        timeUnit:
          type: string
        value:
          type: integer
    HttpTemplate:
      description: template to generate response / request
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: '#/components/schemas/Delay'
        templateType:
          enum:
          - VELOCITY
          - JAVASCRIPT
          - MUSTACHE
        template:
          type: string
    HttpOverrideForwardedRequest:
      description: override forwarded request
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          delay:
            $ref: '#/components/schemas/Delay'
          requestOverride:
            $ref: '#/components/schemas/HttpRequest'
          requestModifier:
            type: object
            additionalProperties: false
            properties:
              path:
                type: object
                additionalProperties: false
                properties:
                  regex:
                    type: string
                  substitution:
                    type: string
              queryStringParameters:
                type: object
                additionalProperties: false
                properties:
                  add:
                    $ref: '#/components/schemas/KeyToMultiValue'
                  replace:
                    $ref: '#/components/schemas/KeyToMultiValue'
                  remove:
                    type: array
                    additionalProperties: false
                    items:
                      type: string
              headers:
                type: object
                additionalProperties: false
                properties:
                  add:
                    $ref: '#/components/schemas/KeyToMultiValue'
                  replace:
                    $ref: '#/components/schemas/KeyToMultiValue'
                  remove:
                    type: array
                    additionalProperties: false
                    items:
                      type: string
              cookies:
                type: object
                additionalProperties: false
                properties:
                  add:
                    $ref: '#/components/schemas/KeyToValue'
                  replace:
                    $ref: '#/components/schemas/KeyToValue'
                  remove:
                    type: array
                    additionalProperties: false
                    items:
                      type: string
          responseOverride:
            $ref: '#/components/schemas/HttpResponse'
          responseModifier:
            type: object
            additionalProperties: false
            properties:
              headers:
                type: object
                additionalProperties: false
                properties:
                  add:
                    $ref: '#/components/schemas/KeyToMultiValue'
                  replace:
                    $ref: '#/components/schemas/KeyToMultiValue'
                  remove:
                    type: array
                    additionalProperties: false
                    items:
                      type: string
              cookies:
                type: object
                additionalProperties: false
                properties:
                  add:
                    $ref: '#/components/schemas/KeyToValue'
                  replace:
                    $ref: '#/components/schemas/KeyToValue'
                  remove:
                    type: array
                    additionalProperties: false
                    items:
                      type: string
      - type: object
        additionalProperties: false
        properties:
          delay:
            $ref: '#/components/schemas/Delay'
          httpRequest:
            $ref: '#/components/schemas/HttpRequest'
          httpResponse:
            $ref: '#/components/schemas/HttpResponse'
    HttpForward:
      description: host and port to forward to
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: '#/components/schemas/Delay'
        host:
          type: string
        port:
          type: integer
        scheme:
          enum:
          - HTTP
          - HTTPS
    OpenAPIDefinition:
      description: open api or swagger request matcher
      type: object
      additionalProperties: false
      properties:
        specUrlOrPayload:
          type: string
        operationId:
          type: string
    Ports:
      description: list of ports
      type: object
      additionalProperties: false
      properties:
        ports:
          items:
            type: number
          type: array
    KeyToValue:
      oneOf:
      - type: array
        additionalProperties: false
        items:
          type: object
          properties:
            name:
              type: string
            value:
              type: string
      - type: object
        additionalProperties: true
    BodyWithContentType:
      description: response body
      anyOf:
      - type: object
        description: binary response body
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - BINARY
          base64Bytes:
            type: string
          contentType:
            type: string
      - type: object
        description: json response body
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - JSON
          json:
            type: string
          contentType:
            type: string
      - type: object
        description: json response body
        additionalProperties: true
      - type: object
        description: string response body
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - STRING
          string:
            type: string
          contentType:
            type: string
      - type: string
        description: string response body
      - type: object
        description: xml response body
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XML
          xml:
            type: string
          contentType:
            type: string
    Body:
      description: request body matcher
      anyOf:
      - type: object
        description: binary body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - BINARY
          base64Bytes:
            type: string
          contentType:
            type: string
      - type: object
        description: json body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - JSON
          json:
            type: string
          contentType:
            type: string
          matchType:
            enum:
            - STRICT
            - ONLY_MATCHING_FIELDS
      - type: object
        description: json matching fields body matcher
        additionalProperties: true
      - type: object
        description: json schema body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - JSON_SCHEMA
          jsonSchema:
            $ref: http://json-schema.org/draft-04/schema
      - type: object
        description: JSON path body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - JSON_PATH
          jsonPath:
            type: string
      - type: object
        description: parameter body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - PARAMETERS
          parameters:
            $ref: '#/components/schemas/KeyToMultiValue'
      - type: object
        description: regex body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - REGEX
          regex:
            type: string
      - type: object
        description: string body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - STRING
          string:
            type: string
          contentType:
            type: string
          subString:
            type: boolean
      - type: string
        description: substring body matcher
      - type: object
        description: xml body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XML
          xml:
            type: string
          contentType:
            type: string
      - type: object
        description: xml schema body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XML_SCHEMA
          xmlSchema:
            type: string
      - type: object
        description: xpath body matcher
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XPATH
          xpath:
            type: string
    TimeToLive:
      description: time expectation is valid for
      type: object
      additionalProperties: false
      properties:
        timeUnit:
          enum:
          - DAYS
          - HOURS
          - MINUTES
          - SECONDS
          - MILLISECONDS
          - MICROSECONDS
          - NANOSECONDS
        timeToLive:
          type: integer
        unlimited:
          type: boolean
    Times:
      description: number of responses
      type: object
      additionalProperties: false
      properties:
        remainingTimes:
          type: integer
        unlimited:
          type: boolean
    ConnectionOptions:
      description: connection options
      type: object
      additionalProperties: false
      properties:
        suppressContentLengthHeader:
          type: boolean
        contentLengthHeaderOverride:
          type: integer
        suppressConnectionHeader:
          type: boolean
        chunkSize:
          type: integer
        keepAliveOverride:
          type: boolean
        closeSocket:
          type: boolean
        closeSocketDelay:
          $ref: '#/components/schemas/Delay'
    HttpObjectCallback:
      description: object / method callback
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: '#/components/schemas/Delay'
        clientId:
          type: string
        responseCallback:
          type: boolean
    SocketAddress:
      description: remote address to send request to, only used for request overrides
      type: object
      additionalProperties: false
      properties:
        host:
          type: string
        port:
          type: integer
        scheme:
          enum:
          - HTTP
          - HTTPS
    KeyToMultiValue:
      oneOf:
      - type: array
        additionalProperties: false
        items:
          type: object
          additionalProperties: false
          properties:
            name:
              type: string
            values:
              type: array
              additionalProperties: false
              items:
                type: string
      - type: object
        additionalProperties: true
        properties:
          keyMatchStyle:
            type: string
            enum:
            - MATCHING_KEY
            - SUB_SET
            default: SUB_SET
    HttpResponse:
      description: response to return
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: '#/components/schemas/Delay'
        body:
          $ref: '#/components/schemas/BodyWithContentType'
        cookies:
          $ref: '#/components/schemas/KeyToValue'
        connectionOptions:
          $ref: '#/components/schemas/ConnectionOptions'
        headers:
          $ref: '#/components/schemas/KeyToMultiValue'
        statusCode:
          type: integer
        reasonPhrase:
          type: string
    HttpClassCallback:
      description: class callback
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: '#/components/schemas/Delay'
        callbackClass:
          type: string
    RequestDefinition:
      description: request definition
      oneOf:
      - $ref: '#/components/schemas/HttpRequest'
      - $ref: '#/components/schemas/OpenAPIDefinition'
    HttpRequest:
      description: request properties matcher
      type: object
      additionalProperties: false
      properties:
        secure:
          type: boolean
        keepAlive:
          type: boolean
        method:
          $ref: '#/components/schemas/StringOrJsonSchema'
        path:
          $ref: '#/components/schemas/StringOrJsonSchema'
        pathParameters:
          $ref: '#/components/schemas/KeyToMultiValue'
        queryStringParameters:
          $ref: '#/components/schemas/KeyToMultiValue'
        body:
          $ref: '#/components/schemas/Body'
        headers:
          $ref: '#/components/schemas/KeyToMultiValue'
        cookies:
          $ref: '#/components/schemas/KeyToValue'
        socketAddress:
          $ref: '#/components/schemas/SocketAddress'
        protocol:
          $ref: '#/components/schemas/Protocol'
    Protocol:
      description: protocol matcher
      enum:
      - HTTP_1_1
      - HTTP_2
    Expectation:
      description: expectation
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
        priority:
          type: integer
        httpRequest:
          $ref: '#/components/schemas/RequestDefinition'
        httpResponse:
          $ref: '#/components/schemas/HttpResponse'
        httpResponseTemplate:
          $ref: '#/components/schemas/HttpTemplate'
        httpResponseClassCallback:
          $ref: '#/components/schemas/HttpClassCallback'
        httpResponseObjectCallback:
          $ref: '#/components/schemas/HttpObjectCallback'
        httpForward:
          $ref: '#/components/schemas/HttpForward'
        httpForwardTemplate:
          $ref: '#/components/schemas/HttpTemplate'
        httpForwardClassCallback:
          $ref: '#/components/schemas/HttpClassCallback'
        httpForwardObjectCallback:
          $ref: '#/components/schemas/HttpObjectCallback'
        httpOverrideForwardedRequest:
          $ref: '#/components/schemas/HttpOverrideForwardedRequest'
        httpError:
          $ref: '#/components/schemas/HttpError'
        times:
          $ref: '#/components/schemas/Times'
        timeToLive:
          $ref: '#/components/schemas/TimeToLive'
      oneOf:
      - required:
        - httpResponse
      - required:
        - httpResponseTemplate
      - required:
        - httpResponseClassCallback
      - required:
        - httpResponseObjectCallback
      - required:
        - httpForward
      - required:
        - httpForwardTemplate
      - required:
        - httpForwardClassCallback
      - required:
        - httpForwardObjectCallback
      - required:
        - httpOverrideForwardedRequest
      - required:
        - httpError