Microcks test API

Operations related to API and Services tests

OpenAPI Specification

microcks-test-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  title: Microcks API v1.14 config test API
  version: 1.14.0
  description: API offered by Microcks, the Kubernetes native tool for API and microservices mocking and testing (microcks.io)
  contact:
    name: Laurent Broudoux
    url: https://github.com/microcks
    email: laurent@microcks.io
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  x-logo:
    backgroundColor: '#ffffff'
    url: https://microcks.io/images/microcks-logo-blue.png
servers:
- url: http://microcks.example.com/api
  description: ''
security:
- jwt-bearer: []
tags:
- name: test
  description: Operations related to API and Services tests
paths:
  /tests:
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestRequest'
        required: true
      tags:
      - test
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestResult'
          description: Created TestResult (empty shell cause tests are executed asynchronously)
      security:
      - jwt-bearer:
        - user
      operationId: CreateTest
      summary: Create a new Test
  /tests/service/{serviceId}:
    parameters:
    - name: serviceId
      description: Unique identifier of Service to manage TestResults for
      schema:
        type: string
      in: path
      required: true
    get:
      tags:
      - test
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TestResult'
          description: List of TestResults for the Service having the requested id
      security:
      - jwt-bearer:
        - user
      operationId: GetTestResultsByService
      summary: Get TestResults by Service
  /tests/service/{serviceId}/count:
    parameters:
    - name: serviceId
      description: Unique identifier of Service to manage TestResults for
      schema:
        type: string
      in: path
      required: true
    get:
      tags:
      - test
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Counter'
          description: Number of TestResults for this Service in datastore
      security:
      - jwt-bearer:
        - user
      operationId: GetTestResultsByServiceCounter
      summary: Get the TestResults for Service counter
  /tests/{id}:
    parameters:
    - name: id
      description: Unique identifier of TestResult to manage
      schema:
        type: string
      in: path
      required: true
    get:
      tags:
      - test
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestResult'
          description: Requested TestResult
      security:
      - jwt-bearer:
        - user
      operationId: GetTestResult
      summary: Get TestResult
      description: ''
  /tests/{id}/messages/{testCaseId}:
    parameters:
    - name: id
      description: Unique identifier of TestResult to manage
      schema:
        type: string
      in: path
      required: true
    - name: testCaseId
      description: Unique identifier of TetsCaseResult to manage
      schema:
        type: string
      in: path
      required: true
    get:
      tags:
      - test
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RequestResponsePair'
          description: List of request and response messages for this TestCase
      security:
      - jwt-bearer:
        - user
      operationId: GetMessagesByTestCase
      summary: Get messages for TestCase
  /tests/{id}/testCaseResult:
    parameters:
    - name: id
      description: Unique identifier of TestResult to manage
      schema:
        type: string
      in: path
      required: true
    post:
      requestBody:
        description: TestCase return wrapper object
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestCaseReturnDTO'
        required: true
      tags:
      - test
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestCaseResult'
          description: TestCaseResult is reported
      operationId: ReportTestCaseResult
      summary: Report and create a new TestCaseResult
      description: Report a TestCaseResult (typically used by a Test runner)
  /tests/{id}/events/{testCaseId}:
    parameters:
    - name: id
      description: Unique identifier of TestResult to manage
      schema:
        type: string
      in: path
      required: true
    - name: testCaseId
      description: Unique identifier of TetsCaseResult to manage
      schema:
        type: string
      in: path
      required: true
    get:
      tags:
      - test
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/UnidirectionalEvent'
          description: List of event messages for this TestCase
      operationId: GetEventsByTestCase
      summary: Get events for TestCase
components:
  schemas:
    TestRequest:
      description: Test request is a minimalist wrapper for requesting the launch of a new test
      required:
      - serviceId
      - testEndpoint
      - runnerType
      - timeout
      properties:
        serviceId:
          description: Unique identifier of service to test
          type: string
        testEndpoint:
          description: Endpoint to test for this service
          type: string
        runnerType:
          $ref: '#/components/schemas/TestRunnerType'
          description: Runner used for this test
        timeout:
          format: int64
          description: The maximum time (in milliseconds) to wait for this test ends
          type: integer
        filteredOperations:
          description: A restriction on service operations to test
          type: array
          items:
            type: string
        secretName:
          description: The name of Secret to use for connecting the test endpoint
          type: string
        oAuth2Context:
          $ref: '#/components/schemas/OAuth2ClientContext'
          description: An OAuth2 context to use for retrieving an access token prior invoking the tested endpoint
        operationsHeaders:
          $ref: '#/components/schemas/OperationHeaders'
          description: This test operations headers override
    OAuth2ClientContext:
      description: Represents a volatile OAuth2 client context usually associated with a Test request
      required:
      - clientId
      - clientSecret
      - tokenUri
      - grantType
      type: object
      properties:
        clientId:
          description: Id for connecting to OAuth2 identity provider
          type: string
        clientSecret:
          format: password
          description: Secret for connecting to OAuth2 identity provider
          type: string
        tokenUri:
          description: URI for retrieving an access token from OAuth2 identity provider
          type: string
        username:
          description: Username in case you're using the Resource Owner Password flow
          type: string
        password:
          description: User password in case you're suing the Resource Owner password flow
          type: string
        refreshToken:
          description: Refresh token in case you're using the Refresh Token rotation flow
          type: string
        scopes:
          description: The OAuth scopes to have in claimed token (delimited by space, "openid" is applied by default)
          type: string
        grantType:
          description: The OAuth2 grant type to apply for retrieving the token
          enum:
          - PASSWORD
          - CLIENT_CREDENTIALS
          - REFRESH_TOKEN
          type: string
    Counter:
      description: A simple Counter type.
      type: object
      properties:
        counter:
          format: int32
          description: Number of items in a resource collection
          type: integer
      example: "{\n    \"counter\": 12\n}"
    EventMessage:
      description: A simple event message published or received in an asynchronous exchange
      type: object
      allOf:
      - required:
        - id
        - mediaType
        type: object
        properties:
          mediaType:
            description: Content type of message
            type: string
          dispatchCriteria:
            description: Dispatch criteria of this message (in case of a mock)
            type: string
      - $ref: '#/components/schemas/Message'
    Message:
      description: Common structure for Request, Response and EventMessage
      required:
      - name
      - operationId
      type: object
      properties:
        id:
          description: Unique identifier of this message
          type: string
        name:
          description: Unique distinct name of this message
          type: string
        content:
          description: Body content for this message
          type: string
        operationId:
          description: Identifier of Operation this message is associated to
          type: string
        testCaseId:
          description: Unique identifier of TestCase this message is attached (in case of a test)
          type: string
        headers:
          description: Headers for this message
          type: array
          items:
            $ref: '#/components/schemas/Header'
    RequestResponsePair:
      description: Request associated with corresponding Response
      type: object
      allOf:
      - required:
        - request
        - response
        type: object
        properties:
          request:
            $ref: '#/components/schemas/Request'
            description: The request part of the pair
          response:
            $ref: '#/components/schemas/Response'
            description: The Response part of the pair
      - $ref: '#/components/schemas/AbstractExchange'
    Request:
      description: A mock invocation or test request
      allOf:
      - type: object
        properties:
          responseId:
            description: Unique identifier of Response this Request is attached
            type: string
          queryParameters:
            description: Query parameters for this Request if any
            type: array
            items:
              $ref: '#/components/schemas/Parameter'
      - $ref: '#/components/schemas/Message'
    OperationHeaders:
      description: Specification of additional headers for a Service/API operations. Keys are operation name or "globals" (if header applies to all), values are Header objects DTO.
      type: object
      additionalProperties:
        type: array
        items:
          $ref: '#/components/schemas/HeaderDTO'
    OAuth2AuthorizedClient:
      description: OAuth2 authorized client that performed a test
      required:
      - grantType
      - principalName
      - tokenUri
      type: object
      properties:
        grantType:
          $ref: '#/components/schemas/OAuth2GrantType'
          description: OAuth2 authorization flow/grant type applied
        principalName:
          description: Name of authorized principal (clientId or username in the case of Password grant type)
          type: string
        tokenUri:
          description: Identity Provider URI used for token retrieval
          type: string
        scopes:
          description: Included scopes (separated using space)
          type: string
    Parameter:
      description: Companion objects for Request representing query parameter
      required:
      - name
      - value
      type: object
      properties:
        name:
          description: The name of the parameter
          type: string
        value:
          description: The value of this parameter
          type: string
    AbstractExchange:
      description: Abstract bean representing a Service or API Exchange.
      required:
      - type
      type: object
      properties:
        type:
          description: Discriminant type for identifying kind of exchange
          enum:
          - reqRespPair
          - unidirEvent
          type: string
    Header:
      description: Transport headers for both Requests and Responses
      required:
      - name
      - values
      type: object
      properties:
        name:
          description: Unique distinct name of this Header
          type: string
        values:
          description: Values for this Header
          type: array
          items:
            type: string
    Response:
      description: A mock invocation or test response
      allOf:
      - type: object
        properties:
          status:
            description: Status of this Response
            type: string
          mediaType:
            description: Content type of this Response
            type: string
          dispatchCriteria:
            description: Dispatch criteria of this Response (in case of a mock)
            type: string
          isFault:
            description: Whether this Response represents a Fault
            type: boolean
      - $ref: '#/components/schemas/Message'
    TestCaseResult:
      description: Companion objects for TestResult. Each TestCaseResult correspond to a particuliar service operation / action reference by the operationName field. TestCaseResults owns a collection of TestStepResults (one for every request associated to service operation / action).
      required:
      - success
      - elapsedTime
      - operationName
      properties:
        success:
          description: Flag telling if test case is a success
          type: boolean
        elapsedTime:
          description: Elapsed time in milliseconds since the test case beginning
          type: number
        operationName:
          description: Name of operation this test case is bound to
          type: string
        testStepResults:
          description: Test steps associated to this test case
          type: array
          items:
            $ref: '#/components/schemas/TestStepResult'
    TestStepResult:
      description: TestStepResult is an entity embedded within TestCaseResult. They are created for each request associated with an operation / action of a microservice.
      required:
      - success
      - elapsedTome
      properties:
        success:
          description: Flag telling if test case is a success
          type: boolean
        elapsedTime:
          description: Elapsed time in milliseconds since the test step beginning
          type: number
        requestName:
          description: Name of request this test step is bound to
          type: string
        message:
          description: Error message that may be associated to this test step
          type: string
        eventMessageName:
          description: Name of event this test step is bound to
          type: string
    TestCaseReturnDTO:
      required:
      - operationName
      properties:
        operationName:
          description: Name of related operation for this TestCase
          type: string
    TestResult:
      description: Represents the result of a Service or API test run by Microcks. Tests are related to a service and made of multiple test cases corresponding to each operations / actions composing service. Tests are run against a specific endpoint named testedEndpoint. It holds global markers telling if test still ran, is a success, how many times is has taken and so on ...
      required:
      - id
      - version
      - testNumber
      - testDate
      - testedEndpoint
      - serviceId
      - success
      - inProgress
      - runnerType
      properties:
        id:
          description: Unique identifier of TestResult
          type: string
        version:
          description: Revision number of this test
          type: number
        testNumber:
          description: Incremental number for tracking number of tests of a service
          type: number
        testDate:
          format: int64
          description: Timestamp of creation date of this service
          type: integer
        testedEndpoint:
          description: Endpoint used during test
          type: string
        serviceId:
          description: Unique identifier of service tested
          type: string
        elapsedTime:
          description: Elapsed time in milliseconds since test beginning
          type: number
        success:
          description: Flag telling if test is a success
          type: boolean
        inProgress:
          description: Flag telling is test is still in progress
          type: boolean
        runnerType:
          $ref: '#/components/schemas/TestRunnerType'
          description: Runner used for this test
        testCaseResults:
          description: TestCase results associated to this test
          type: array
          items:
            $ref: '#/components/schemas/TestCaseResult'
        secretRef:
          $ref: '#/components/schemas/SecretRef'
          description: The referrence of the Secret used for connecting to test endpoint
        operationHeaders:
          $ref: '#/components/schemas/OperationHeaders'
          description: This test operations headers override
        timeout:
          description: The maximum time (in milliseconds) to wait for this test ends
          type: integer
        authorizedClient:
          $ref: '#/components/schemas/OAuth2AuthorizedClient'
          description: The OAuth2 authorized client that performed the test
    TestRunnerType:
      description: Type of test strategy (different strategies are implemented by different runners)
      enum:
      - HTTP
      - SOAP_HTTP
      - SOAP_UI
      - POSTMAN
      - OPEN_API_SCHEMA
      - ASYNC_API_SCHEMA
      - GRPC_PROTOBUF
      - GRAPHQL_SCHEMA
      type: string
    SecretRef:
      description: Lightweight reference for an existing Secret
      required:
      - secretId
      - name
      properties:
        secretId:
          description: Unique identifier or referenced Secret
          type: string
        name:
          description: Distinct name of the referenced Secret
          type: string
      example: "{\n    \"secretId\": \"5be58fb51ed744d1b87481bd\",\n    \"name\": \"Gogs internal\"\n}"
    HeaderDTO:
      description: Data Transfert Object for headers of both Requests and Responses
      required:
      - name
      - values
      type: object
      properties:
        name:
          description: Unique distinct name of this Header
          type: string
        values:
          description: Values for this header (comma separated strings)
          type: string
    OAuth2GrantType:
      description: Enumeration for the different supported grants/flows of OAuth2
      enum:
      - PASSWORD
      - CLIENT_CREDENTIALS
      - REFRESH_TOKEN
      type: string
    UnidirectionalEvent:
      description: Representation of an unidirectional exchange as an event message
      type: object
      allOf:
      - required:
        - eventMessage
        type: object
        properties:
          eventMessage:
            $ref: '#/components/schemas/EventMessage'
            description: Asynchronous message for this unidirectional event
      - $ref: '#/components/schemas/AbstractExchange'
  securitySchemes:
    jwt-bearer:
      flows:
        clientCredentials:
          tokenUrl: https://keycloak.example.com/realms/microcks/protocol/openid-connect/token
          refreshUrl: https://keycloak.example.com/realms/microcks/protocol/openid-connect/token
          scopes:
            user: Simple authenticated user
            manager: Services & APIs content manager
            admin: Administrator of the Microcks instance
      type: oauth2
      description: JWT Bearer acquired using OAuth 2 Authentication flow or Direct Access Grant