Documentation
Documentation
https://docs.testkube.io/openapi/overview
Documentation
https://docs.testkube.io/openapi/agent/default--test-workflows
openapi: 3.0.1
info:
title: Testkube Standalone Agent api API
description: API for Testkube Standalone Agent
contact:
email: info@testkube.io
license:
name: MIT
url: https://opensource.org/licenses/MIT
version: 1.0.0
servers:
- url: https://api.testkube.io
description: Testkube Cloud Control Plane API Endpoint
- url: https://<your-testkube-api-host>
description: Testkube On-Prem API Endpoint
tags:
- name: api
description: Testkube API operations
paths:
/cluster-resources:
get:
tags:
- api
summary: List cluster resources
description: 'Returns every Group/Version/Kind the cluster exposes, tagged with whether
the agent ServiceAccount has list+watch permission. Backs the UI dropdown
for picking what resource a TestTrigger or WorkflowTrigger should watch.
'
operationId: listClusterResources
parameters:
- in: query
name: watchable
schema:
type: boolean
description: When true, drop resources the agent cannot list+watch.
responses:
200:
description: successful list operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ClusterResource'
501:
description: cluster discovery not configured on this instance
502:
description: cluster discovery failed
/keymap/triggers:
get:
tags:
- api
summary: Test triggers keymap
description: Returns a keymap (supported/allowed fields) for the test trigger UI screen
operationId: getKeyMap
responses:
200:
description: successful get operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestTriggerKeyMap'
/triggers:
get:
tags:
- api
parameters:
- $ref: '#/components/parameters/Namespace'
- $ref: '#/components/parameters/Selector'
summary: List test triggers
description: List test triggers from the kubernetes cluster
operationId: listTestTriggers
responses:
200:
description: successful list operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TestTrigger'
text/yaml:
schema:
type: string
400:
description: problem with selector parsing - probably some bad input occurs
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
post:
tags:
- api
summary: Create new test trigger
description: Create new test trigger CRD inside a Kubernetes cluster
operationId: createTestTrigger
requestBody:
description: test trigger body
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestTriggerUpsertRequest'
text/yaml:
schema:
type: string
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestTrigger'
text/yaml:
schema:
type: string
400:
description: problem with test trigger definition - probably some bad input occurs (invalid JSON body or similar)
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
patch:
tags:
- api
summary: Bulk update test triggers
description: Updates test triggers provided as an array in the request body
operationId: bulkUpdateTestTriggers
requestBody:
description: array of test trigger upsert requests
required: true
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TestTriggerUpsertRequest'
responses:
200:
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TestTrigger'
400:
description: problem with test trigger definition - probably some bad input occurs (invalid JSON body or similar)
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
delete:
tags:
- api
summary: Delete test triggers
description: Deletes all or labeled test triggers
operationId: deleteTestTriggers
parameters:
- $ref: '#/components/parameters/Namespace'
- $ref: '#/components/parameters/Selector'
responses:
204:
description: no content
400:
description: problem with selector parsing - probably some bad input occurs
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
404:
description: test trigger not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/triggers/{id}:
get:
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/Namespace'
tags:
- api
summary: Get test trigger by ID
description: Get test trigger by ID from CRD in kubernetes cluster
operationId: getTestTriggerByID
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestTrigger'
text/yaml:
schema:
type: string
404:
description: test trigger not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
patch:
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/Namespace'
- name: mode
in: query
description: "Update mode for the trigger. When set to \"replace\", the entire trigger \nis replaced with the request body (full replacement semantics). When not \nset or set to any other value, merge semantics are used where only \nnon-null fields from the request are applied to the existing trigger.\nThis is used by cloud-api to signal that the original request was YAML.\n"
required: false
schema:
type: string
enum:
- replace
tags:
- api
summary: Update test trigger
description: Update test trigger
operationId: updateTestTrigger
requestBody:
description: test trigger upsert request
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestTriggerUpsertRequest'
text/yaml:
schema:
type: string
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestTrigger'
400:
description: problem with test trigger definition - probably some bad input occurs (invalid JSON body or similar)
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
404:
description: test trigger not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
delete:
tags:
- api
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/Namespace'
summary: Delete test trigger
description: Deletes a test trigger
operationId: deleteTestTrigger
responses:
204:
description: no content
404:
description: test trigger not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites:
post:
tags:
- api
summary: Create new test suite
description: Create new test suite action
operationId: createTestSuite
requestBody:
description: test details body
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteUpsertRequest'
text/yaml:
schema:
type: string
responses:
200:
description: successful operation
content:
text/yaml:
schema:
type: string
201:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuite'
400:
description: problem with test suite definition - probably some bad input occurs (invalid JSON body or similar)
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
get:
tags:
- api
summary: Get all test suites
description: Returns array of test suites
operationId: listTestSuites
parameters:
- $ref: '#/components/parameters/Selector'
- $ref: '#/components/parameters/TextSearch'
responses:
200:
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TestSuite'
text/yaml:
schema:
type: string
400:
description: problem with input for CRD generation
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with listing test suites from kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
delete:
tags:
- api
summary: Delete test suites
description: Deletes all or labeled test suites
operationId: deleteTestSuites
parameters:
- $ref: '#/components/parameters/Selector'
responses:
204:
description: no content
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with read information from kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites/{id}:
get:
parameters:
- $ref: '#/components/parameters/ID'
tags:
- api
summary: Get test suite by ID
description: Returns test suite with given name
operationId: getTestSuiteByID
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuite'
text/yaml:
schema:
type: string
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: could not get execution result from the database
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
patch:
parameters:
- $ref: '#/components/parameters/ID'
tags:
- api
summary: Update test suite
description: Update test based on test suite content or git based data
operationId: updateTestSuite
requestBody:
description: test suite details body
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteUpdateRequest'
text/yaml:
schema:
type: string
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuite'
400:
description: problem with test suite definition - probably some bad input occurs (invalid JSON body or similar)
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
delete:
tags:
- api
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/SkipDeleteCRD'
summary: Delete test suite
description: Deletes a test suite
operationId: deleteTestSuite
responses:
204:
description: no content
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with read information from kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites/{id}/metrics:
get:
tags:
- api
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/LastNDays'
- $ref: '#/components/parameters/Limit'
summary: Get test suite metrics
description: Gets test suite metrics for given tests executions, with particular execution status and timings
operationId: getTestSuiteMetrics
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/ExecutionsMetrics'
500:
description: problem with read information from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites/{id}/tests:
get:
parameters:
- $ref: '#/components/parameters/ID'
tags:
- api
summary: List tests for test suite
description: List available tests for test suite
operationId: listTestSuiteTests
responses:
200:
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Test'
text/yaml:
schema:
type: string
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with read information from kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites/{id}/abort:
post:
tags:
- api
parameters:
- $ref: '#/components/parameters/ID'
summary: Abort all executions of a test suite
description: Abort all test executions of a test suite
operationId: abortTestSuiteExecutions
responses:
204:
description: no content
404:
description: no execution found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: problem with aborting test suite execution
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with read information from kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suite-with-executions:
get:
tags:
- api
summary: Get all test suite with executions
description: Returns array of test suite with executions
operationId: listTestSuiteWithExecutions
parameters:
- $ref: '#/components/parameters/Selector'
- $ref: '#/components/parameters/TextSearch'
- $ref: '#/components/parameters/TestExecutionsStatusFilter'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageIndex'
responses:
200:
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TestSuiteWithExecutionSummary'
text/yaml:
schema:
type: string
400:
description: problem with input
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: problem with getting test suite with executions from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with getting test suite from Kubernetes clusteer
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suite-with-executions/{id}:
get:
parameters:
- $ref: '#/components/parameters/ID'
tags:
- api
summary: Get test suite by ID with execution
description: Returns test suite with given name with execution
operationId: getTestSuiteByIDWithExecution
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteWithExecution'
text/yaml:
schema:
type: string
500:
description: problem with getting test suite with execution from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites/{id}/executions:
post:
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/Namespace'
- $ref: '#/components/parameters/LastNDays'
- $ref: '#/components/parameters/TestSuiteExecutionName'
tags:
- api
summary: Starts new test suite execution
description: New test suite execution returns new execution details on successful execution start
operationId: executeTestSuite
requestBody:
description: body passed to configure execution
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteExecutionRequest'
responses:
201:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteExecutionsResult'
400:
description: problem with request body
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: problem with test suite execution
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
get:
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageIndex'
- $ref: '#/components/parameters/TestExecutionsStatusFilter'
- $ref: '#/components/parameters/StartDateFilter'
- $ref: '#/components/parameters/EndDateFilter'
tags:
- api
summary: Get all test suite executions
description: Returns array of all available test suite executions
operationId: listTestSuiteExecutions
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteExecutionsResult'
500:
description: problem with getting test suite executions from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites/{id}/executions/{executionID}:
get:
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/executionID'
tags:
- api
summary: Get test suite execution
description: Returns test suite execution with given executionID
operationId: getTestSuiteExecution
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteExecution'
404:
description: test not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: problem with getting test suite executions from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with communicating with Kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
patch:
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/executionID'
tags:
- api
summary: Aborts testsuite execution
description: Aborts testsuite execution with given executionID
operationId: abortTestSuiteExecution
responses:
204:
description: no content
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: problem with read information from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suites/{id}/executions/{executionID}/artifacts:
get:
parameters:
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/executionID'
tags:
- api
summary: Get test suite execution artifacts
description: Returns test suite execution artifacts with given executionID
operationId: getTestSuiteExecutionArtifactsByTestsuite
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Artifact'
404:
description: test suite not found
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: problem with getting test suite executions from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suite-executions:
post:
parameters:
- $ref: '#/components/parameters/Namespace'
- $ref: '#/components/parameters/Selector'
- $ref: '#/components/parameters/ConcurrencyLevel'
tags:
- api
summary: Starts new test suite executions
description: New test suite executions returns new executions details on successful executions start
operationId: executeTestSuites
requestBody:
description: body passed to configure executions
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteExecutionRequest'
responses:
201:
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TestSuiteExecutionsResult'
400:
description: problem with request body
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
502:
description: problem with communicating with kubernetes cluster
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
500:
description: problem with test suites executions
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
get:
tags:
- api
summary: Get all test suite executions
description: Returns array of test suite executions
operationId: listAllTestSuiteExecutions
parameters:
- $ref: '#/components/parameters/LastNDays'
- $ref: '#/components/parameters/TestName'
- $ref: '#/components/parameters/TextSearch'
- $ref: '#/components/parameters/PageSize'
- $ref: '#/components/parameters/PageIndex'
- $ref: '#/components/parameters/TestExecutionsStatusFilter'
- $ref: '#/components/parameters/StartDateFilter'
- $ref: '#/components/parameters/EndDateFilter'
- $ref: '#/components/parameters/Selector'
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/TestSuiteExecutionsResult'
500:
description: problem with getting test suite executions from storage
content:
application/problem+json:
schema:
type: array
items:
$ref: '#/components/schemas/Problem'
/test-suite-executions/{execu
# --- truncated at 32 KB (351 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kubeshop/refs/heads/main/openapi/kubeshop-api-api-openapi.yml