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

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

There is a newer version: 1.0.8
Show newest version
openapi: 3.0.0
servers:
  - url: 'http://localhost:1080/'
  - url: 'https://localhost:1080/'
info:
  title: MockServer 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
tags:
  - name: expectation
    description: Create or update expectations - updates if the id matches an existing 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:
  /mockserver/expectation:
    put:
      tags:
        - expectation
      summary: create expectation
      responses:
        '201':
          description: expectations created
          content:
            application/json:
              schema:
                description: "list of upserted expectations"
                type: array
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/Expectation"
        '400':
          description: incorrect request format
        '406':
          description: invalid expectation
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Expectations"
        description: expectation(s) to create
        required: true
  /mockserver/openapi:
    put:
      tags:
        - expectation
      summary: create expectations from OpenAPI or Swagger
      responses:
        '201':
          description: expectations created
          content:
            application/json:
              schema:
                description: "list of upserted expectations"
                type: array
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/Expectation"
        '400':
          description: incorrect request format
        '406':
          description: invalid expectation
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/OpenAPIExpectations"
        description: expectation(s) to create
        required: true
  /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/verify:
    put:
      tags:
        - verify
      summary: verify a request has been received a specific number of times
      responses:
        '202':
          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
  /mockserver/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
  /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:
    Expectations:
      description: "list of expectations"
      oneOf:
        - $ref: "#/components/schemas/Expectation"
        - type: array
          additionalProperties: false
          items:
            $ref: "#/components/schemas/Expectation"
    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
    ExpectationId:
      description: "pointer to existing expectation"
      type: object
      additionalProperties: false
      properties:
        id:
          type: string
      required:
        - id
    OpenAPIExpectations:
      description: "list of open api expectations"
      oneOf:
        - $ref: "#/components/schemas/OpenAPIExpectation"
        - type: array
          additionalProperties: false
          items:
            $ref: "#/components/schemas/OpenAPIExpectation"
    OpenAPIExpectation:
      description: "open api or swagger expectation"
      type: object
      additionalProperties: false
      properties:
        specUrlOrPayload:
          anyOf:
            - type: string
            - type: object
        operationsAndResponses:
          type: object
          additionalProperties:
            type: string
      required:
        - specUrlOrPayload
    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"
    OpenAPIDefinition:
      description: "open api or swagger request matcher"
      type: object
      additionalProperties: false
      properties:
        specUrlOrPayload:
          type: string
        operationId:
          type: string
    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
    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
    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
    HttpClassCallback:
      description: "class callback"
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: "#/components/schemas/Delay"
        callbackClass:
          type: string
    HttpObjectCallback:
      description: "object / method callback"
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: "#/components/schemas/Delay"
        clientId:
          type: string
        responseCallback:
          type: boolean
    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"
    HttpError:
      description: "error behaviour"
      type: object
      additionalProperties: false
      properties:
        delay:
          $ref: "#/components/schemas/Delay"
        dropConnection:
          type: boolean
        responseBytes:
          type: string
    Times:
      description: "number of responses"
      type: object
      additionalProperties: false
      properties:
        remainingTimes:
          type: integer
        unlimited:
          type: boolean
    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
    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
          # patternProperties:
          #   "^(?!keyMatchStyle)\\S+$":
          #     oneOf:
          #     - type: array
          #       additionalProperties: false
          #       items:
          #         $ref: "#/components/schemas/StringOrJsonSchema"
          #     - type: object
          #       additionalProperties: false
          #       properties:
          #         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
          #           default: ''
          #         values:
          #           type: array
          #           additionalProperties: false
          #           items:
          #             $ref: "#/components/schemas/StringOrJsonSchema"
    KeyToValue:
      oneOf:
        - type: array
          additionalProperties: false
          items:
            type: object
            properties:
              name:
                type: string
              value:
                type: string
        - type: object
          additionalProperties: true
          # patternProperties:
          #   "^\\S+$":
          #     $ref: "#/components/schemas/StringOrJsonSchema"
    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
    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
    Protocol:
      description: "protocol matcher"
      enum:
        - HTTP_1_1
        - HTTP_2
    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
    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
    Delay:
      description: "response delay"
      type: object
      additionalProperties: false
      properties:
        timeUnit:
          type: string
        value:
          type: integer
    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"
    Verification:
      description: "verification"
      type: object
      additionalProperties: false
      properties:
        expectationId:
          $ref: "#/components/schemas/ExpectationId"
        httpRequest:
          $ref: "#/components/schemas/RequestDefinition"
        times:
          $ref: "#/components/schemas/VerificationTimes"
        maximumNumberOfRequestToReturnInVerificationFailure:
          type: integer
      oneOf:
        - required:
            - expectationId
        - required:
            - httpRequest
    VerificationTimes:
      description: "number of request to verify"
      type: object
      additionalProperties: false
      properties:
        atLeast:
          type: integer
        atMost:
          type: integer
    VerificationSequence:
      description: "verification sequence"
      type: object
      additionalProperties: false
      properties:
        expectationIds:
          type: array
          additionalProperties: false
          items:
            $ref: "#/components/schemas/ExpectationId"
        httpRequests:
          type: array
          items:
            $ref: "#/components/schemas/RequestDefinition"
        maximumNumberOfRequestToReturnInVerificationFailure:
          type: integer
      oneOf:
        - required:
            - expectationIds
        - required:
            - httpRequests
    Ports:
      description: "list of ports"
      type: object
      additionalProperties: false
      properties:
        ports:
          items:
            type: number
          type: array
    HttpRequestAndHttpResponse:
      description: "request and response"
      type: object
      additionalProperties: false
      properties:
        httpRequest:
          $ref: "#/components/schemas/HttpRequest"
        httpResponse:
          $ref: "#/components/schemas/HttpResponse"
        timestamp:
          type: string




© 2015 - 2024 Weber Informatics LLC | Privacy Policy