Step CI · Schema

Step CI Workflow

Schema for a Step CI YAML workflow file defining automated API test scenarios

API TestingFunctional TestingTestingCI/CDQuality AssuranceAutomationOpen Source

Properties

Name Type Description
version string Workflow file version identifier
name string Descriptive name for the test workflow
env object Environment variables accessible in the workflow via ${{env.variableName}}
config object Global workflow configuration settings
components object Reusable workflow components
tests object Collection of named test cases
before object Setup steps executed before all tests
after object Teardown steps executed after all tests
View JSON Schema on GitHub

JSON Schema

step-ci-workflow-schema.json Raw ↑
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://github.com/api-evangelist/step-ci/blob/main/json-schema/step-ci-workflow-schema.json",
  "title": "Step CI Workflow",
  "description": "Schema for a Step CI YAML workflow file defining automated API test scenarios",
  "type": "object",
  "required": ["version", "name"],
  "properties": {
    "version": {
      "type": "string",
      "description": "Workflow file version identifier",
      "example": "1.1"
    },
    "name": {
      "type": "string",
      "description": "Descriptive name for the test workflow"
    },
    "env": {
      "type": "object",
      "description": "Environment variables accessible in the workflow via ${{env.variableName}}",
      "additionalProperties": {
        "type": "string"
      }
    },
    "config": {
      "type": "object",
      "description": "Global workflow configuration settings",
      "properties": {
        "continueOnFail": {
          "type": "boolean",
          "description": "Whether to continue executing steps after a failure"
        },
        "concurrency": {
          "type": "integer",
          "description": "Number of concurrent test executions"
        },
        "http": {
          "type": "object",
          "description": "HTTP client configuration",
          "properties": {
            "baseURL": {
              "type": "string",
              "description": "Base URL prepended to all HTTP requests"
            },
            "rejectUnauthorized": {
              "type": "boolean",
              "description": "Whether to reject self-signed SSL certificates"
            }
          }
        }
      }
    },
    "components": {
      "type": "object",
      "description": "Reusable workflow components",
      "properties": {
        "schemas": {
          "type": "object",
          "description": "Named JSON/OpenAPI schemas for response validation"
        },
        "credentials": {
          "type": "object",
          "description": "Named authentication credentials"
        }
      }
    },
    "tests": {
      "type": "object",
      "description": "Collection of named test cases",
      "additionalProperties": {
        "$ref": "#/definitions/TestCase"
      }
    },
    "before": {
      "type": "object",
      "description": "Setup steps executed before all tests"
    },
    "after": {
      "type": "object",
      "description": "Teardown steps executed after all tests"
    }
  },
  "definitions": {
    "TestCase": {
      "type": "object",
      "required": ["steps"],
      "properties": {
        "name": {
          "type": "string",
          "description": "Test case display name"
        },
        "steps": {
          "type": "array",
          "description": "Ordered list of test steps",
          "items": {
            "$ref": "#/definitions/Step"
          }
        }
      }
    },
    "Step": {
      "type": "object",
      "required": ["name"],
      "properties": {
        "name": {
          "type": "string",
          "description": "Step name for reporting"
        },
        "http": {
          "$ref": "#/definitions/HttpStep"
        },
        "grpc": {
          "type": "object",
          "description": "gRPC step configuration"
        },
        "graphql": {
          "type": "object",
          "description": "GraphQL step configuration"
        },
        "delay": {
          "type": "integer",
          "description": "Delay in milliseconds before executing the step"
        }
      }
    },
    "HttpStep": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Request URL (relative or absolute)"
        },
        "method": {
          "type": "string",
          "enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"],
          "description": "HTTP method"
        },
        "headers": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Request headers"
        },
        "body": {
          "description": "Request body (string, object, or array)"
        },
        "params": {
          "type": "object",
          "description": "Query string parameters",
          "additionalProperties": {
            "type": "string"
          }
        },
        "auth": {
          "type": "object",
          "description": "Step-level authentication configuration"
        },
        "captures": {
          "type": "object",
          "description": "Data to extract from the response for use in subsequent steps"
        },
        "check": {
          "type": "object",
          "description": "Response validation assertions"
        }
      }
    }
  }
}