OpenMetadata Test Suites API

`TestSuite` is a set of test cases grouped together to capture data quality.

OpenAPI Specification

openmetadata-test-suites-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: OpenMetadata APIs Agent Executions Test Suites API
  description: Common types and API definition for OpenMetadata
  contact:
    name: OpenMetadata
    url: https://open-metadata.org
    email: openmetadata-dev@googlegroups.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1.13'
servers:
- url: /api
  description: Current Host
- url: http://localhost:8585/api
  description: Endpoint URL
security:
- BearerAuth: []
tags:
- name: Test Suites
  description: '`TestSuite` is a set of test cases grouped together to capture data quality.'
paths:
  /v1/dataQuality/testSuites:
    get:
      tags:
      - Test Suites
      summary: List test suites
      description: Get a list of test suites. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params.
      operationId: listTestSuites
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,reviewers,tests,summary
      - name: limit
        in: query
        description: Limit the number test definitions returned. (1 to 1000000, default = 10)
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: testSuiteType
        in: query
        description: Returns executable or logical test suites. If omitted, returns all test suites.
        schema:
          type: string
          example: basic
      - name: includeEmptyTestSuites
        in: query
        description: Include empty test suite in the response.
        schema:
          type: boolean
          example: true
          default: true
      - name: before
        in: query
        description: Returns list of test definitions before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of test definitions after this cursor
        schema:
          type: string
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: List of test definitions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuiteList'
    put:
      tags:
      - Test Suites
      summary: Update logical test suite
      description: Create a logical TestSuite, if it does not exist or update an existing test suite.
      operationId: createOrUpdateLogicalTestSuite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTestSuite'
      responses:
        '200':
          description: 'The updated test definition '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
    post:
      tags:
      - Test Suites
      summary: Create a logical test suite
      description: Create a logical test suite.
      operationId: createLogicalTestSuite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTestSuite'
      responses:
        '200':
          description: The test suite
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
        '400':
          description: Bad request
  /v1/dataQuality/testSuites/basic:
    put:
      tags:
      - Test Suites
      summary: Create or Update Basic test suite
      description: Create a Basic TestSuite if it does not exist or update an existing one.
      operationId: createOrUpdateBasicTestSuite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTestSuite'
      responses:
        '200':
          description: 'The updated test definition '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
    post:
      tags:
      - Test Suites
      summary: Create a basic test suite
      description: Create a basic test suite.
      operationId: createBasicTestSuite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTestSuite'
      responses:
        '200':
          description: Basic test suite
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
        '400':
          description: Bad request
  /v1/dataQuality/testSuites/executable:
    put:
      tags:
      - Test Suites
      summary: Create or Update Executable test suite
      description: Create an Executable TestSuite if it does not exist or update an existing one.
      operationId: createOrUpdateExecutableTestSuite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTestSuite'
      responses:
        '200':
          description: 'The updated test definition '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
  /v1/dataQuality/testSuites/name/{name}:
    get:
      tags:
      - Test Suites
      summary: Get a test suite by name
      description: Get a test suite by  name.
      operationId: getTestSuiteByName
      parameters:
      - name: name
        in: path
        description: Name of the test suite
        required: true
        schema:
          type: string
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,reviewers,tests,summary
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      responses:
        '200':
          description: The test suite
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
        '404':
          description: Test Suite for instance {name} is not found
    delete:
      tags:
      - Test Suites
      summary: Delete a logical test suite
      description: Delete a logical test suite by `name`.
      operationId: deleteLogicalTestSuite
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the logical entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: name
        in: path
        description: FQN of the logical test suite
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: Logical Test suite for instance {name} is not found
  /v1/dataQuality/testSuites/{id}:
    get:
      tags:
      - Test Suites
      summary: Get a test suite by Id
      description: Get a Test Suite by `Id`.
      operationId: get_5
      parameters:
      - name: id
        in: path
        description: Id of the test suite
        required: true
        schema:
          type: string
          format: uuid
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,reviewers,tests,summary
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      - name: includeRelations
        in: query
        description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.'
        schema:
          type: string
          example: owners:non-deleted,followers:all
      responses:
        '200':
          description: The Test suite
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
        '404':
          description: Test Suite for instance {id} is not found
    delete:
      tags:
      - Test Suites
      summary: Delete a logical test suite
      description: Delete a logical test suite by `id`.
      operationId: deleteLogicalTestSuite_1
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the logical entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the logical test suite
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: Logical test suite for instance {id} is not found
    patch:
      tags:
      - Test Suites
      summary: Update a test suite
      description: Update an existing testSuite using JsonPatch.
      externalDocs:
        description: JsonPatch RFC
        url: https://tools.ietf.org/html/rfc6902
      operationId: patchTestSuite
      parameters:
      - name: id
        in: path
        description: Id of the test suite
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        description: JsonPatch with array of operations
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/JsonPatch'
            example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]'
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v1/dataQuality/testSuites/async/{id}:
    delete:
      tags:
      - Test Suites
      summary: Delete a logical test suite asynchronously
      description: Delete a logical test suite by `id` asynchronously.
      operationId: deleteLogicalTestSuiteAsync
      parameters:
      - name: hardDelete
        in: query
        description: Hard delete the logical entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the logical test suite
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: Logical test suite for instance {id} is not found
  /v1/dataQuality/testSuites/basic/name/{name}:
    delete:
      tags:
      - Test Suites
      summary: Delete a test suite
      description: Delete a test suite by `name`.
      operationId: deleteTestSuiteByName
      parameters:
      - name: recursive
        in: query
        description: Recursively delete this entity and it's children. (Default `false`)
        schema:
          type: boolean
          default: false
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: name
        in: path
        description: Name of the test suite
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: Test suite for instance {name} is not found
  /v1/dataQuality/testSuites/basic/{id}:
    delete:
      tags:
      - Test Suites
      summary: Delete a test suite
      description: Delete a test suite by `Id`.
      operationId: deleteTestSuite
      parameters:
      - name: recursive
        in: query
        description: Recursively delete this entity and it's children. (Default `false`)
        schema:
          type: boolean
          default: false
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the test suite
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: Test suite for instance {id} is not found
  /v1/dataQuality/testSuites/executable/name/{name}:
    delete:
      tags:
      - Test Suites
      summary: Delete a test suite
      description: Delete a test suite by `name`.
      operationId: deleteTestSuiteByName_1
      parameters:
      - name: recursive
        in: query
        description: Recursively delete this entity and it's children. (Default `false`)
        schema:
          type: boolean
          default: false
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: name
        in: path
        description: Name of the test suite
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
        '404':
          description: Test suite for instance {name} is not found
  /v1/dataQuality/testSuites/executable/{id}:
    delete:
      tags:
      - Test Suites
      summary: Delete a test suite
      description: Delete a test suite by `Id`.
      operationId: deleteTestSuite_1
      parameters:
      - name: recursive
        in: query
        description: Recursively delete this entity and it's children. (Default `false`)
        schema:
          type: boolean
          default: false
      - name: hardDelete
        in: query
        description: Hard delete the entity. (Default = `false`)
        schema:
          type: boolean
          default: false
      - name: id
        in: path
        description: Id of the test suite
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
        '404':
          description: Test suite for instance {id} is not found
  /v1/dataQuality/testSuites/dataQualityReport:
    get:
      tags:
      - Test Suites
      summary: Get Data Quality Report
      description: 'Use the search service to perform data quality aggregation. You can use the `q` parameter to filter the results.

        the `aggregationQuery` is of the form `bucketName=<bucketName>:aggType=<aggType>:field=<field>`. You can sperate aggregation

        query with a comma `,` to perform nested aggregations.

        For example, `bucketName=table:aggType=terms:field=databaseName,bucketName=<bucketName>:aggType=<aggType>:field=<field>`

        '
      operationId: getDataQualityReport
      parameters:
      - name: q
        in: query
        description: Search query to filter the aggregation results
        schema:
          type: string
      - name: aggregationQuery
        in: query
        description: Aggregation query to perform aggregation on the search results
        schema:
          type: string
      - name: index
        in: query
        description: Index to perform the aggregation against
        schema:
          type: string
      - name: domain
        in: query
        description: Filter by domain fully qualified name
        schema:
          type: string
      responses:
        '200':
          description: Data Quality Report Results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataQualityReport'
  /v1/dataQuality/testSuites/executionSummary:
    get:
      tags:
      - Test Suites
      summary: Get the execution summary of test suites
      description: Get the execution summary of test suites.
      operationId: getExecutionSummaryOfTestSuites
      parameters:
      - name: testSuiteId
        in: query
        description: get summary for a specific test suite
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Tests Execution Summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSummary'
  /v1/dataQuality/testSuites/{id}/versions/{version}:
    get:
      tags:
      - Test Suites
      summary: Get a version of the test suite
      description: Get a version of the test suite by given `id`
      operationId: getSpecificTestSuiteVersion
      parameters:
      - name: id
        in: path
        description: Id of the test suite
        required: true
        schema:
          type: string
          format: uuid
      - name: version
        in: path
        description: Test Suite version number in the form `major`.`minor`
        required: true
        schema:
          type: string
          example: 0.1 or 1.1
      responses:
        '200':
          description: TestSuite
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
        '404':
          description: Test Suite for instance {id} and version {version} is not found
  /v1/dataQuality/testSuites/history:
    get:
      tags:
      - Test Suites
      summary: List all entity versions within a time range
      description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. '
      operationId: listAllEntityVersionsByTimestamp_23
      parameters:
      - name: startTs
        in: query
        description: Start timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: endTs
        in: query
        description: End timestamp in milliseconds since epoch
        required: true
        schema:
          type: integer
          format: int64
      - name: limit
        in: query
        description: Limit the number of entity returned (1 to 1000000, default = 10)
        schema:
          maximum: 500
          minimum: 1
          type: integer
          format: int32
          default: 10
      - name: before
        in: query
        description: Returns list of entity versions before this cursor
        schema:
          type: string
      - name: after
        in: query
        description: Returns list of entity versions after this cursor
        schema:
          type: string
      responses:
        '200':
          description: List of all versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResultList'
  /v1/dataQuality/testSuites/search/list:
    get:
      tags:
      - Test Suites
      summary: List test suite using search service
      description: Get a list of test suite using the search service. Use `fields` parameter to get only necessary fields. Use offset/limit pagination to limit the number entries in the list using `limit` and `offset` query params.Use the `tests` field to get the test cases linked to the test suite and/or use the `summary` field to get a summary of test case executions.
      operationId: listTestSuiteFromSearchService
      parameters:
      - name: fields
        in: query
        description: Fields requested in the returned resource
        schema:
          type: string
          example: owners,reviewers,tests,summary
      - name: limit
        in: query
        description: Limit the number test suite returned. (1 to 1000000, default = 10)
        schema:
          maximum: 1000000
          minimum: 0
          type: integer
          format: int32
          default: 10
      - name: offset
        in: query
        description: Returns list of test suite after this offset (default = 0)
        schema:
          type: string
          default: '0'
      - name: testSuiteType
        in: query
        description: Returns executable or logical test suites. If omitted, returns all test suites.
        schema:
          type: string
          example: executable
      - name: includeEmptyTestSuites
        in: query
        description: Include empty test suite in the response.
        schema:
          type: boolean
          example: true
          default: true
      - name: domain
        in: query
        description: Filter a test suite by domain.
        schema:
          type: string
      - name: fullyQualifiedName
        in: query
        description: Filter a test suite by fully qualified name.
        schema:
          type: string
      - name: owner
        in: query
        description: Filter test suites by owner.
        schema:
          type: string
      - name: include
        in: query
        description: Include all, deleted, or non-deleted entities.
        schema:
          type: string
          default: non-deleted
          enum:
          - all
          - deleted
          - non-deleted
      - name: sortField
        in: query
        description: Field used to sort the test cases listing
        schema:
          type: string
      - name: sortNestedPath
        in: query
        description: Set this field if your mapping is nested and you want to sort on a nested field
        schema:
          type: string
      - name: sortNestedMode
        in: query
        description: Set this field if your mapping is nested and you want to sort on a nested field
        schema:
          type: string
          example: min,max,avg,sum,median
      - name: sortType
        in: query
        description: Sort type
        schema:
          type: string
          default: desc
          enum:
          - asc
          - desc
      - name: q
        in: query
        description: search query term to use in list
        schema:
          type: string
      - name: queryString
        in: query
        description: raw elasticsearch query to use in list
        schema:
          type: string
      responses:
        '200':
          description: List of test suites
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuiteList'
  /v1/dataQuality/testSuites/{id}/versions:
    get:
      tags:
      - Test Suites
      summary: List test suite versions
      description: Get a list of all the versions of a test suite identified by `id`
      operationId: listAllTestSuiteVersion
      parameters:
      - name: id
        in: path
        description: Id of the test suite
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: List of test suite versions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityHistory'
  /v1/dataQuality/testSuites/restore:
    put:
      tags:
      - Test Suites
      summary: Restore a soft deleted test suite
      description: Restore a soft deleted test suite.
      operationId: restore_19
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RestoreEntity'
      responses:
        '200':
          description: Successfully restored the TestSuite.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuite'
components:
  schemas:
    TagLabelRecognizerMetadata:
      required:
      - recognizerId
      - recognizerName
      - score
      type: object
      properties:
        recognizerId:
          type: string
          format: uuid
        recognizerName:
          type: string
        score:
          type: number
          format: double
        target:
          type: string
          enum:
          - content
          - column_name
        patterns:
          type: array
          items:
            $ref: '#/components/schemas/PatternMatch'
    DataQualityReport:
      required:
      - data
      - metadata
      type: object
      properties:
        metadata:
          $ref: '#/components/schemas/DataQualityReportMetadata'
        data:
          type: array
          items:
            $ref: '#/components/schemas/Datum'
    TestSuiteConnection:
      type: object
      properties:
        config:
          type: object
    ChangeSummaryMap:
      type: object
    AccessDetails:
      required:
      - timestamp
      type: object
      properties:
        timestamp:
          type: integer
          format: int64
        accessedBy:
          $ref: '#/components/schemas/EntityReference'
        accessedByAProcess:
          type: string
    TestSuite:
      required:
      - name
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          maxLength: 256
          minLength: 1
          type: string
        displayName:
          type: string
        fullyQualifiedName:
          maxLength: 3072
          minLength: 1
          type: string
        description:
          type: string
        tests:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        connection:
          $ref: '#/components/schemas/TestSuiteConnection'
        testConnectionResult:
          $ref: '#/components/schemas/TestConnectionResult'
        pipelines:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        serviceType:
          type: string
          enum:
          - TestSuite
        owners:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        version:
          type: number
          format: double
        updatedAt:
          type: integer
          format: int64
        updatedBy:
          type: string
        href:
          type: string
          format: uri
        changeDescription:
          $ref: '#/components/schemas/ChangeDescription'
        incrementalChangeDescription:
          $ref: '#/components/schemas/ChangeDescription'
        deleted:
          type: boolean
        basic:
          type: boolean
        executable:
          type: boolean
        basicEntityReference:
          $ref: '#/components/schemas/EntityReference'
        executableEntityReference:
          $ref: '#/components/schemas/EntityReference'
        dataContract:
          $ref: '#/components/schemas/EntityReference'
        summary:
          $ref: '#/components/schemas/TestSummary'
        testCaseResultSummary:
          type: array
          items:
            $ref: '#/components/schemas/ResultSummary'
        domains:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/TagLabel'
        inherited:
          type: boolean
        ingestionRunner:
          $ref: '#/components/schemas/EntityReference'
        reviewers:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        provider:
          type: string
          enum:
          - system
          - user
          - automation
        extension:
          type: object
        children:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        service:
          $ref: '#/components/schemas/EntityReference'
        style:
          $ref: '#/components/schemas/Style'
        followers:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        experts:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        dataProducts:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        impersonatedBy:
          type: string
        usageSummary:
          $ref: '#/components/schemas/UsageDetails'
        entityStatus:
          type: string
          enum:
          - Draft
          - In Review
          - Approved
          - Archived
          - Deprecated
          - Rejected
          - Unprocessed
        votes:
          $ref: '#/components/schemas/Votes'
        lifeCycle:
          $ref: '#/components/schemas/LifeCycle'
        certification:
          $ref: '#/components/schemas/AssetCertification'
    FieldChange:
      type: object
      properties:
        name:
          type: string
        oldValue:
          type: object
        newValue:
          type: object
    CoverImage:
      type: object
      properties:
        url:
          type: string
        position:
          type: string
    RestoreEntity:
      required:
      - id
      type: object
      properties:
        id:
          type: string
          format: uuid
    LifeCycle:
      type: object
      properties:
        created:
          $ref: '#/components/schemas/AccessDetails'
        updated:
          $ref: '#/components/schemas/AccessDetails'
        accessed:
          $ref: '#/components/schemas/AccessDetails'
    EntityHistory:
      required:
      - entityType
      - versions
      type: object
      properties:
        entityType:
          type: string
        versions:
          type: array
          items:
            type: object
    AssetCertification:
      required:
      - appliedDate
      - expiryDate
      - tagLabel
      type: object
      properties:
        tagLabel:
          $ref: '#/components/schemas/TagLabel'
        appliedDate:
          type: integer
          format: int64
        expiryDate:
          type: integer
          format: int64
    ResultSummary:
      type: object
      properties:
        testCaseName:
          maxLength: 3072
          minLength: 1
          type: string
        status:
          type: string
          enum:
          - Success
          - Failed
          - Aborted
          - Queued
        timestamp:
          type: integer
          format: int64
    ResultList:
      required:
      - data
      type: object
      properties:
        data:
          type: array
          items:
            type: object
        paging:
          $ref: '#/components/schemas/Paging'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/EntityError'
        warningsCount:
          type: integer
          format: int32
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/EntityError'
    ColumnTestSummaryDefinition:
      type: object
      properties:
        success:
          type: integer
          format: int32
        failed:
          type: integer
          format: int32
        aborted:
          type: integer
          format: int32
        queued:
          type: integer
          format: int32
        total:
          type: integer
          format: int32
        entityLink:
          pattern: (?U)^<#E::\w+::(?:[^:<>|]|:[^:<>|])+(?:::(?:[^:<>|]|:[^:<>|])+)*>$
          type: string
    Paging:
      required:
      - total
      type: object
      properties:
        before:
          type: string
        after:
          type: string
        offset:
          type: integer
          format: int32
        limit:
          type: integer
          format: int32
        total:
          type: integer
          format: int32
    TestConnectionResult:
      required:
      - steps
      type: object
      properties:
        lastUpdatedAt:
          type: integer
          format: int64
        status:
          type: string
          enum:
          - Successful
          - Failed
          - Running
        steps:
          type: array
          items:
            $ref: '#/components/schemas/TestConnectionStepResult'
    JsonPatch:
      type: object
    CreateTestSuite:
      required:
      - name
      type: object
      properties:
        name:
          maxLength: 256
          minLength: 1
          type: string
        displayName:
          type: string
        description:
          type: string
        owners:
          type: array
    

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openmetadata/refs/heads/main/openapi/openmetadata-test-suites-api-openapi.yml