All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mockserver.openapi.mock-server-openapi-embedded-model.yaml Maven / Gradle / Ivy

openapi: 3.0.0
servers:
  - url: 'http://localhost:1080/'
  - url: 'https://localhost:1080/'
info:
  title: Mock Server API
  version: '4.0.0'
  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/jamesdbloom/mockserver/blob/master/LICENSE.md'
    name: Apache 2.0
tags:
  - name: expectation
    description: Create expectations (only supported by MockServer)
  - name: verify
    description: Verify requests (both MockServer & MockServer Proxy)
  - name: control
    description: Manage state or process (both MockServer & MockServer Proxy)

paths:
  /expectation:
    put:
      tags:
        - expectation
      summary: create expectation
      responses:
        '201':
          description: expectation created
        '400':
          description: incorrect request format
        '406':
          description: invalid expectation
      requestBody:
        content:
          application/json:
            schema:
              title: list of expectations
              type: array
              additionalProperties: false
              items:
                $ref: "#/components/schemas/Expectations"
        description: expectation to create
        required: true
  /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
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HttpRequest"
        description: request used to match expectations and recored requests to clear
  /reset:
    put:
      tags:
        - control
      summary: clears all expectations and recorded requests
      responses:
        '200':
          description: expectations and recorded requests cleared
  /dumpToLog:
    put:
      tags:
        - control
      summary: write all requests to the request log that match the request matcher
      parameters:
        - in: query
          name: format
          schema:
            type: string
          description: changes response format from json to java if the value is "java"
      responses:
        '200':
          description: recorded requests written to request log
        '400':
          description: incorrect request format
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HttpRequest"
        description: >-
          request used to match which recorded requests to write to the request log
  /retrieve:
    put:
      tags:
        - control
      summary: retrieve either - recorded requests or - the active expectations
      parameters:
        - in: query
          name: format
          schema:
            type: string
          description: changes response format from json to java if the value is "java"
        - in: query
          name: type
          schema:
            type: string
          description: changes type of object that is retrieve from recorded requests to active expectations if the value is "expectation"
      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/HttpResponse"
            application/java:
              schema:
                type: string
                description: 'Java code for the list of either Expectations or HttpResponses'
        '400':
          description: incorrect request format
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HttpRequest"
        description: >-
          request used to match which recorded requests or active expectations to return
  /verify:
    put:
      tags:
        - verify
      summary: verify a request has been received a specific number of times
      responses:
        '200':
          description: matching request has been received specified number of times
        '400':
          description: incorrect request format
        '406':
          description: request has not been received specified numbers of times
          content:
            text/plain:
              schema:
                type: string
                description: 'JUnit expected:<...> but was:<...> format'
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Verification"
        description: request matcher and the number of times to match
        required: true
  /verifySequence:
    put:
      tags:
        - verify
      summary: verify a sequence of request has been received in the specific order
      responses:
        '202':
          description: request sequence has been received in specified order
        '400':
          description: incorrect request format
        '406':
          description: request sequence has not been received in specified order
          content:
            text/plain:
              schema:
                type: string
                description: 'JUnit expected:<...> but was:<...> format'
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/VerificationSequence"
        description: the sequence of requests matchers
        required: true
  /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"
  /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
  /stop:
    put:
      tags:
        - control
      summary: stop running process
      description: only supported on Netty version
      responses:
        '200':
          description: MockServer process is stopping
components:
  schemas:
    Expectations:
      title: "list of expectations"
      oneOf:
      - type: array
        additionalProperties: false
        items:
          $ref: "#/components/schemas/Expectation"
      - $ref: "#/components/schemas/Expectation"
    Expectation:
      title: "expectation"
      type: object
      additionalProperties: false
      properties:
        httpRequest:
          $ref: "#/components/schemas/HttpRequest"
        httpResponse:
          $ref: "#/components/schemas/HttpResponse"
        httpResponseTemplate:
          $ref: "#/components/schemas/HttpTemplate"
        httpForward:
          $ref: "#/components/schemas/HttpForward"
        httpClassCallback:
          $ref: "#/components/schemas/HttpClassCallback"
        httpObjectCallback:
          $ref: "#/components/schemas/HttpObjectCallback"
        httpError:
          $ref: "#/components/schemas/HttpError"
        times:
          $ref: "#/components/schemas/Times"
        timeToLive:
          $ref: "#/components/schemas/TimeToLive"
      oneOf:
      - required:
        - httpResponse
      - required:
        - httpForward
      - required:
        - httpClassCallback
      - required:
        - httpError
      - required:
        - httpObjectCallback
    HttpRequest:
      title: "request matcher"
      type: object
      additionalProperties: false
      properties:
        body:
          $ref: "#/components/schemas/Body"
        headers:
          $ref: "#/components/schemas/KeyToMultiValue"
        cookies:
          $ref: "#/components/schemas/KeyToValue"
        queryStringParameters:
          $ref: "#/components/schemas/KeyToMultiValue"
        path:
          type: string
        method:
          type: string
        secure:
          type: boolean
        keepAlive:
          type: boolean
    HttpResponse:
      title: "response to return"
      type: object
      additionalProperties: false
      properties:
        body:
          $ref: "#/components/schemas/BodyWithContentType"
        delay:
          $ref: "#/components/schemas/Delay"
        cookies:
          $ref: "#/components/schemas/KeyToValue"
        connectionOptions:
          $ref: "#/components/schemas/ConnectionOptions"
        headers:
          $ref: "#/components/schemas/KeyToMultiValue"
        statusCode:
          type: integer
    HttpTemplate:
      title: "template to generate response / request"
      type: object
      additionalProperties: false
      properties:
        templateType:
          enum:
          - JAVASCRIPT
          - VELOCITY
        template:
          type: string
        delay:
          $ref: "#/components/schemas/Delay"
    HttpForward:
      title: host and port to forward to
      type: object
      additionalProperties: false
      properties:
        host:
          type: string
        port:
          type: integer
        scheme:
          enum:
          - HTTP
          - HTTPS
    HttpClassCallback:
      title: class callback
      type: object
      additionalProperties: false
      properties:
        callbackClass:
          type: string
    HttpObjectCallback:
      title: object / method callback
      type: object
      additionalProperties: false
      properties:
        clientId:
          type: string
    HttpError:
      title: error behaviour
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: "#/components/schemas/Delay"
        dropConnection:
          type: boolean
        responseBytes:
          type: string
    Times:
      title: "number of responses"
      type: object
      additionalProperties: false
      properties:
        remainingTimes:
          type: integer
        unlimited:
          type: boolean
    TimeToLive:
      title: "time expectation is valid for"
      type: object
      additionalProperties: false
      properties:
        timeUnit:
          enum:
          - HOURS
          - MINUTES
          - SECONDS
          - MILLISECONDS
          - MICROSECONDS
          - NANOSECONDS
        timeToLive:
          type: integer
        unlimited:
          type: boolean
    KeyToMultiValue:
      type: array
      additionalProperties: false
      items:
        type: object
        properties:
          name:
            type: string
          values:
            type: array
            items:
              type: string
    KeyToValue:
      type: array
      additionalProperties: false
      items:
        type: object
        properties:
          name:
            type: string
          value:
            type: string
    Body:
      title: "request body matcher"
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - BINARY
          base64Bytes:
            type: string
          contentType:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - JSON
          json:
            type: string
          contentType:
            type: string
          matchType:
            enum:
            - STRICT
            - ONLY_MATCHING_FIELDS
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - JSON_SCHEMA
          jsonSchema:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - PARAMETERS
          parameters:
            $ref: "#/components/schemas/KeyToMultiValue"
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - REGEX
          regex:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - STRING
          string:
            type: string
          contentType:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XML
          xml:
            type: string
          contentType:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XML_SCHEMA
          xmlSchema:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XPATH
          xpath:
            type: string
      - type: string
    BodyWithContentType:
      title: "response body"
      oneOf:
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - BINARY
          base64Bytes:
            type: string
          contentType:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - JSON
          json:
            type: string
          contentType:
            type: string
          matchType:
            enum:
            - STRICT
            - ONLY_MATCHING_FIELDS
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - PARAMETERS
          parameters:
            $ref: "#/components/schemas/KeyToMultiValue"
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - STRING
          string:
            type: string
          contentType:
            type: string
      - type: object
        additionalProperties: false
        properties:
          not:
            type: boolean
          type:
            enum:
            - XML
          xml:
            type: string
          contentType:
            type: string
      - type: string
    Delay:
      title: "response delay"
      type: object
      additionalProperties: false
      properties:
        timeUnit:
          type: string
        value:
          type: integer
    ConnectionOptions:
      title: "connection options"
      type: object
      additionalProperties: false
      properties:
        closeSocket:
          type: boolean
        contentLengthHeaderOverride:
          type: integer
        suppressContentLengthHeader:
          type: boolean
        suppressConnectionHeader:
          type: boolean
        keepAliveOverride:
          type: boolean
    Verification:
      title: "verification"
      type: object
      additionalProperties: false
      properties:
        httpRequest:
          $ref: "#/components/schemas/HttpRequest"
        times:
          $ref: "#/components/schemas/VerificationTimes"
    VerificationTimes:
      title: "number of request to verify"
      type: object
      additionalProperties: false
      properties:
        count:
          type: integer
        exact:
          type: boolean
    VerificationSequence:
      title: "verification sequence"
      type: object
      additionalProperties: false
      properties:
        httpRequests:
          type: array
          items:
            $ref: "#/components/schemas/HttpRequest"
    Ports:
      title: "list of ports"
      type: object
      additionalProperties: false
      properties:
        ports:
          items:
            type: number
          type: array




© 2015 - 2025 Weber Informatics LLC | Privacy Policy