Harness CE API Documentation

Harness Chaos Engineering empowers teams to deliver more resilient systems, helping organizations avoid downtime that can be costly, both financially and in lost reputation. It enables DevOps and SRE teams to purposely create failure scenarios (“chaos”) to identify potential resiliency and reliability issues in their deployments. These scenarios go beyond traditional unit, integration, and system tests, more closely representing what random failures in a production operating environment would look like.

Contact

API Support

contact@harness.io

API Endpoints
# Production:
https://app.harness.io/gateway/chaos/manager/api/query
Headers
# Use your API key token for authorization
X-API-KEY: <YOUR_API_KEY_TOKEN_HERE>
# Or use your JWT token for authorization
Authorization: <YOUR_JWT_TOKEN_HERE>

Your First Chaos Experiment

NOTE: These steps assumes you already have an account in Harness, if not, please create a new project or ask your administrator to add you to an existing project in Harness.

Please follow the below guidelines to run your first Chaos experiment Pod Delete:

Sequence in which the APIs should be executed to run a sample chaos experiment such as Pod Delete (all the APIs to do so are present in folder "Run Pod Delete Chaos Experiment" under Harness CE Postman Collection).

Listed below are the required inputs and how to access (or generate) them. We will refer these variables in the API requests explained in this tutorial -

url

This is the Harness CE server URL serving the Chaos API requests. You can find this URL in the Chaos API doc(top right). For instance, https://app.harness.io/gateway/chaos/manager/api/query is the Harness CE server URL for production environment. If you are using Chaos postman collection, this value will be pre-filled in 2 postman variables like below:

  • base_url - https://app.harness.io
  • chaos_url - $base_url/gateway/chaos/manager/api/query

account_id

This is your Harness account Id. Please use the account where you would like to run Chaos experiments.

You can retrieve your account Id by following the below steps:

  1. Go to ACCOUNT SETTINGS in Harness.
  2. Click on Overview.
  3. Copy the value of Account Id.

project_id

This is your Harness project Id. Please use the project where you would like to run Chaos experiments.

You can retrieve your project Id by following the below steps:

  1. Go to Projects in Harness.
  2. Select the project where you would like to run the Chaos experiments or create a new project.
  3. Click on Overview.
  4. Copy the value of Id.
  5. Please make sure to copy the value of Organization as well, this will be the value of next required variable org_id.

org_id

This is your Harness organization Id. Please use the organization where you would like to run Chaos experiments.

You can retrieve your organization Id by following the below steps: See above step to retrieve project_id - you would have copied the value of org_id as well in that step, if not please follow the same steps again to retrieve organization Id

API-KEY-TOKEN

You can use an existing Harness API key token of the same Harness account selected in above steps or you can create a new one by following the below steps:

  1. Click on MY PROFILE in Harness.
  2. Go to My API Keys section and click on + API Key button to create a new API Key.
  3. Enter a Name for the API Key(optional Description/Tags) and click on Save.
  4. Under the newly created API Key, click on + Token button to generate a new token for this API Key.
  5. Enter the Name and select the Expiration(time for which this token will be valid) and click on Generate Token.
  6. Please make sure to copy the value of the token generated and store somewhere safe, you may not be able to copy this later.

Variables In Harness CE Postman Collection

In order to work with Harness CE Postman Collection, please fork it under your own Postman account and update the above-mentioned variables in order to work with Harness CE Postman Collection.

Authorization Header For API Request

An authorization header with API-KEY-TOKEN value retrieved above is required to work with Chaos APIs i.e., x-api-key: $API-KEY-TOKEN

APIs to be executed in given sequence:

RegisterInfra

Now, we can create/register a chaos infrastructure. Here, we will add a Kubernetes infrastructure so that we can inject Kubernetes resource faults.

Add a name to your chaos infrastructure and optionally a description and tags. After that, choose the mode of installation for Harness delegate. As a quick primer, Harness delegate is a remote agent for accessing your Kubernetes cluster resources and injecting faults into them as part of a chaos experiment. The Cluster Wide installation mode allows you to target resources across all the namespaces in your cluster while Namespace Mode installation restricts chaos injection to only the namespace in which the delegate will be installed. In this tutorial, the delegate will be installed in the hce namespace with Cluster Wide mode, but you can change it.

NOTE: Above values are pre-filled in Harness CE Postman Collection.

Please make sure to note down the value of field token and infraID from response, these values will be used in subsequent API calls.

Once above request is executed, retrieve the infrastructure manifest by forming URL as shown below: $chaos_server_url/file/$token.yaml where $chaos_server_url would be https://app.harness.io/gateway/chaos/manager/api/ and $token is the token value retrieved in response of registerInfra API call as shown in sample response above. An example URL to retrieve infrastructure manifest could look like https://app.harness.io/gateway/chaos/manager/api/file/token-abc.yaml , copy and save the yaml in a machine where kubectl is installed and has access to your k8s cluster in some file named infra.yaml.

Lastly, provided that you have access to your Kubernetes cluster via kubectl, deploy your chaos infrastructure by executing the below commands - kubectl apply -f infra.yaml

It will take a while for the delegate to setup in the k8s cluster. Meanwhile, if you want to check the status of your infra, please use the API GetInfraDetails as explained below.

GetInfraDetails

Optional - If you want to get the details of your newly registered infra or to check if your infra is active or not before creating a Chaos workflow, you can use GetInfraDetails API - It will return the details of a given infra based on infra ID input. Please make sure to check the value of field isActive, it should be true i.e., the infrastructure should be in active state prior to moving forward.

NOTE: Above values are pre-filled in Harness CE Postman Collection.

ListPredefinedWorkflow

Optional - Required if and only if you want to run a different chaos experiment other than pod-delete, by default, pod delete experiment manifest is present in CreateChaosWorkFlow API call) - This will list down all the available predefined workflows/experiments that can be run on your infra, please select one of them and copy the manifest from there and make necessary changes such as namespace, etc.

CreateChaosWorkFlow

Please make sure to deploy some sample target application under hce namespace with label app=cartservice prior to running this API. With our target application deployed, we can now create a chaos experiment. We will be targeting the pods of the deployed app with the Pod Delete fault. To create the chaos experiment, Add the experiment name and optionally a description and tags. Then, Add the target infrastructure id, which we created previously.

This will allow us to create our chaos experiment with a pod-delete fault configured to target the Online Boutique application.

NOTE: In order to run this API using Harness CE Postman Collection, you just need to update the value of variable infraID retrieved during registerInfra API call. The value for workflowManifest field is pre-filled in the Harness CE postman collection, user does not need to update in case they want to target an application under hce namespace with label app=cartservice mentioned in this tutorial.

RunChaosExperiment

Once a workflow is created, you can now execute the experiment by providing the workflow id from CreateChaosWorkFlow API call. NOTE: Please note down the value of field notifyID.

ListWorkflowRun

Optional - Required only if you want to check the details of the workflow currently running - details can be validated by UI as well if user prefers to do so) - It will list down all the workflow runs with the required details for those workflows, this API call can be used to validate if the workflow created by RunChaosExperiment API call is running or not, completed, etc using the field phase.

Let's go to Harness CE Postman Collection to see this in action.

Queries

getHubExperiment

Description

Get the Experiment list from a ChaosHub

Response

Returns a Chart!

Arguments
Name Description
request - ExperimentRequest!
identifiers - IdentifiersRequest!

Example

Query
query GetHubExperiment(
  $request: ExperimentRequest!,
  $identifiers: IdentifiersRequest!
) {
  getHubExperiment(
    request: $request,
    identifiers: $identifiers
  ) {
    apiVersion
    kind
    metadata {
      name
      version
      annotations {
        categories
        vendor
        createdAt
        repository
        support
        chartDescription
      }
    }
    spec {
      displayName
      categoryDescription
      keywords
      maturity
      maintainers {
        name
        email
      }
      minKubeVersion
      provider {
        name
      }
      links {
        name
        url
      }
      faults {
        name
        displayName
        description
      }
      experiments
      chaosExpCRDLink
      platforms
      chaosType
    }
    packageInfo {
      packageName
      experiments {
        name
        CSV
        desc
      }
    }
  }
}
Variables
{
  "request": ExperimentRequest,
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "getHubExperiment": {
      "apiVersion": "abc123",
      "kind": "abc123",
      "metadata": Metadata,
      "spec": Spec,
      "packageInfo": PackageInformation
    }
  }
}

getInfraDetails

Description

Returns infra details based on identifiers

Response

Returns an Infra!

Arguments
Name Description
infraID - String!
identifiers - IdentifiersRequest!

Example

Query
query GetInfraDetails(
  $infraID: String!,
  $identifiers: IdentifiersRequest!
) {
  getInfraDetails(
    infraID: $infraID,
    identifiers: $identifiers
  ) {
    infraID
    name
    description
    tags
    environmentID
    platformName
    isActive
    isInfraConfirmed
    isRemoved
    updatedAt
    createdAt
    noOfSchedules
    noOfWorkflows
    token
    infraNamespace
    serviceAccount
    infraScope
    infraNsExists
    infraSaExists
    installationType
    k8sConnectorID
    lastWorkflowTimestamp
    startTime
    version
    createdBy {
      userID
      username
      email
    }
    updatedBy {
      userID
      username
      email
    }
  }
}
Variables
{
  "infraID": "abc123",
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "getInfraDetails": {
      "infraID": 4,
      "name": "abc123",
      "description": "xyz789",
      "tags": ["xyz789"],
      "environmentID": "abc123",
      "platformName": "abc123",
      "isActive": false,
      "isInfraConfirmed": false,
      "isRemoved": true,
      "updatedAt": "abc123",
      "createdAt": "abc123",
      "noOfSchedules": 987,
      "noOfWorkflows": 987,
      "token": "xyz789",
      "infraNamespace": "abc123",
      "serviceAccount": "abc123",
      "infraScope": "xyz789",
      "infraNsExists": true,
      "infraSaExists": true,
      "installationType": "CONNECTOR",
      "k8sConnectorID": "abc123",
      "lastWorkflowTimestamp": "abc123",
      "startTime": "xyz789",
      "version": "abc123",
      "createdBy": UserDetails,
      "updatedBy": UserDetails
    }
  }
}

getInfraManifest

Description

Returns the manifest for a given infraID

Response

Returns a String!

Arguments
Name Description
infraID - String!
upgrade - Boolean!
identifiers - IdentifiersRequest!

Example

Query
query GetInfraManifest(
  $infraID: String!,
  $upgrade: Boolean!,
  $identifiers: IdentifiersRequest!
) {
  getInfraManifest(
    infraID: $infraID,
    upgrade: $upgrade,
    identifiers: $identifiers
  )
}
Variables
{
  "infraID": "xyz789",
  "upgrade": true,
  "identifiers": IdentifiersRequest
}
Response
{"data": {"getInfraManifest": {}}}

getPredefinedExperimentYAML

Description

Returns the list of predefined experiments in a project

Response

Returns a String!

Arguments
Name Description
request - ExperimentRequest!
identifiers - IdentifiersRequest!

Example

Query
query GetPredefinedExperimentYAML(
  $request: ExperimentRequest!,
  $identifiers: IdentifiersRequest!
) {
  getPredefinedExperimentYAML(
    request: $request,
    identifiers: $identifiers
  )
}
Variables
{
  "request": ExperimentRequest,
  "identifiers": IdentifiersRequest
}
Response
{"data": {"getPredefinedExperimentYAML": {}}}

getPredefinedWorkflow

Description

Returns predefined experiment details of selected experiments

Response

Returns [PredefinedWorkflowList!]!

Arguments
Name Description
hubID - String!
experimentName - [String!]!
identifiers - IdentifiersRequest!

Example

Query
query GetPredefinedWorkflow(
  $hubID: String!,
  $experimentName: [String!]!,
  $identifiers: IdentifiersRequest!
) {
  getPredefinedWorkflow(
    hubID: $hubID,
    experimentName: $experimentName,
    identifiers: $identifiers
  ) {
    workflowName
    workflowCSV
    workflowManifest
  }
}
Variables
{
  "hubID": "abc123",
  "experimentName": ["xyz789"],
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "getPredefinedWorkflow": [
      {
        "workflowName": "abc123",
        "workflowCSV": "abc123",
        "workflowManifest": "xyz789"
      }
    ]
  }
}

getWorkflowManifestByID

Description

Returns a single workflow templates given a projectID and a templateID

Response

Returns a WorkflowTemplateResponse!

Arguments
Name Description
templateID - String!
identifiers - IdentifiersRequest!

Example

Query
query GetWorkflowManifestByID(
  $templateID: String!,
  $identifiers: IdentifiersRequest!
) {
  getWorkflowManifestByID(
    templateID: $templateID,
    identifiers: $identifiers
  ) {
    identifiers {
      orgIdentifier
      accountIdentifier
      projectIdentifier
    }
    templateID
    manifest
    name
    description
    projectName
    createdAt
    isRemoved
    isCustomWorkflow
    tags
    createdBy {
      userID
      username
      email
    }
    updatedBy {
      userID
      username
      email
    }
    updatedAt
  }
}
Variables
{
  "templateID": "abc123",
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "getWorkflowManifestByID": {
      "identifiers": Identifiers,
      "templateID": 4,
      "manifest": "xyz789",
      "name": "xyz789",
      "description": "xyz789",
      "projectName": "abc123",
      "createdAt": "abc123",
      "isRemoved": true,
      "isCustomWorkflow": false,
      "tags": ["xyz789"],
      "createdBy": UserDetails,
      "updatedBy": UserDetails,
      "updatedAt": "xyz789"
    }
  }
}

getYAMLData

Description

Get the YAML manifest of ChaosEngine/ChaosExperiment

Response

Returns a String!

Arguments
Name Description
request - ExperimentRequest!
identifiers - IdentifiersRequest!

Example

Query
query GetYAMLData(
  $request: ExperimentRequest!,
  $identifiers: IdentifiersRequest!
) {
  getYAMLData(
    request: $request,
    identifiers: $identifiers
  )
}
Variables
{
  "request": ExperimentRequest,
  "identifiers": IdentifiersRequest
}
Response
{"data": {"getYAMLData": {}}}

listChaosHub

Description

Get the status of all the connected ChaosHub

Response

Returns [ChaosHubStatus]!

Arguments
Name Description
identifiers - IdentifiersRequest!
request - ListChaosHubRequest

Example

Query
query ListChaosHub(
  $identifiers: IdentifiersRequest!,
  $request: ListChaosHubRequest
) {
  listChaosHub(
    identifiers: $identifiers,
    request: $request
  ) {
    id
    repoName
    repoURL
    repoBranch
    connectorId
    connectorScope
    AuthType
    isAvailable
    totalExp
    totalWorkflows
    name
    lastSyncedAt
    isDefault
    tags
    createdBy {
      userID
      username
      email
    }
    updatedBy {
      userID
      username
      email
    }
    createdAt
    updatedAt
    description
  }
}
Variables
{
  "identifiers": IdentifiersRequest,
  "request": ListChaosHubRequest
}
Response
{
  "data": {
    "listChaosHub": [
      {
        "id": "4",
        "repoName": "abc123",
        "repoURL": "xyz789",
        "repoBranch": "xyz789",
        "connectorId": "xyz789",
        "connectorScope": "ACCOUNT",
        "AuthType": "Ssh",
        "isAvailable": true,
        "totalExp": "abc123",
        "totalWorkflows": "abc123",
        "name": "abc123",
        "lastSyncedAt": "xyz789",
        "isDefault": false,
        "tags": ["xyz789"],
        "createdBy": UserDetails,
        "updatedBy": UserDetails,
        "createdAt": "xyz789",
        "updatedAt": "xyz789",
        "description": "abc123"
      }
    ]
  }
}

listChart

Description

List the Charts from a ChaosHub

Response

Returns [Chart!]!

Arguments
Name Description
hubID - String!
identifiers - IdentifiersRequest!

Example

Query
query ListChart(
  $hubID: String!,
  $identifiers: IdentifiersRequest!
) {
  listChart(
    hubID: $hubID,
    identifiers: $identifiers
  ) {
    apiVersion
    kind
    metadata {
      name
      version
      annotations {
        categories
        vendor
        createdAt
        repository
        support
        chartDescription
      }
    }
    spec {
      displayName
      categoryDescription
      keywords
      maturity
      maintainers {
        name
        email
      }
      minKubeVersion
      provider {
        name
      }
      links {
        name
        url
      }
      faults {
        name
        displayName
        description
      }
      experiments
      chaosExpCRDLink
      platforms
      chaosType
    }
    packageInfo {
      packageName
      experiments {
        name
        CSV
        desc
      }
    }
  }
}
Variables
{
  "hubID": "xyz789",
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "listChart": [
      {
        "apiVersion": "xyz789",
        "kind": "xyz789",
        "metadata": Metadata,
        "spec": Spec,
        "packageInfo": PackageInformation
      }
    ]
  }
}

listInfras

Description

Returns infras with a particular infra type in the project

Response

Returns a ListInfraResponse!

Arguments
Name Description
identifiers - IdentifiersRequest!
request - ListInfraRequest

Example

Query
query ListInfras(
  $identifiers: IdentifiersRequest!,
  $request: ListInfraRequest
) {
  listInfras(
    identifiers: $identifiers,
    request: $request
  ) {
    totalNoOfInfras
    infras {
      infraID
      name
      description
      tags
      environmentID
      platformName
      isActive
      isInfraConfirmed
      isRemoved
      updatedAt
      createdAt
      noOfSchedules
      noOfWorkflows
      token
      infraNamespace
      serviceAccount
      infraScope
      infraNsExists
      infraSaExists
      installationType
      k8sConnectorID
      lastWorkflowTimestamp
      startTime
      version
      createdBy {
        userID
        username
        email
      }
      updatedBy {
        userID
        username
        email
      }
    }
  }
}
Variables
{
  "identifiers": IdentifiersRequest,
  "request": ListInfraRequest
}
Response
{
  "data": {
    "listInfras": {
      "totalNoOfInfras": 987,
      "infras": [Infra]
    }
  }
}

listPredefinedWorkflow

Description

Returns the list of predefined workflows in a project

Response

Returns [PredefinedWorkflowList!]!

Arguments
Name Description
hubID - String!
identifiers - IdentifiersRequest!

Example

Query
query ListPredefinedWorkflow(
  $hubID: String!,
  $identifiers: IdentifiersRequest!
) {
  listPredefinedWorkflow(
    hubID: $hubID,
    identifiers: $identifiers
  ) {
    workflowName
    workflowCSV
    workflowManifest
  }
}
Variables
{
  "hubID": "xyz789",
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "listPredefinedWorkflow": [
      {
        "workflowName": "abc123",
        "workflowCSV": "abc123",
        "workflowManifest": "abc123"
      }
    ]
  }
}

listWorkflow

Description

Returns the list of workflows based on various filter parameters

Response

Returns a ListWorkflowResponse!

Arguments
Name Description
identifiers - IdentifiersRequest!
request - ListWorkflowRequest!

Example

Query
query ListWorkflow(
  $identifiers: IdentifiersRequest!,
  $request: ListWorkflowRequest!
) {
  listWorkflow(
    identifiers: $identifiers,
    request: $request
  ) {
    totalNoOfWorkflows
    workflows {
      identifiers {
        orgIdentifier
        accountIdentifier
        projectIdentifier
      }
      workflowID
      workflowManifest
      cronSyntax
      name
      description
      weightages {
        experimentName
        weightage
      }
      isCustomWorkflow
      updatedAt
      createdAt
      infra {
        infraID
        name
        description
        tags
        environmentID
        platformName
        isActive
        isInfraConfirmed
        isRemoved
        updatedAt
        createdAt
        noOfSchedules
        noOfWorkflows
        token
        infraNamespace
        serviceAccount
        infraScope
        infraNsExists
        infraSaExists
        installationType
        k8sConnectorID
        lastWorkflowTimestamp
        startTime
        version
        createdBy {
          userID
          username
          email
        }
        updatedBy {
          userID
          username
          email
        }
      }
      isRemoved
      tags
      createdBy {
        userID
        username
        email
      }
      avgResiliencyScore
      percentageChange
      lastWfRunDetails {
        identifiers {
          orgIdentifier
          accountIdentifier
          projectIdentifier
        }
        workflowRunID
        workflowID
        weightages {
          experimentName
          weightage
        }
        updatedAt
        createdAt
        infra {
          infraID
          name
          description
          tags
          environmentID
          platformName
          isActive
          isInfraConfirmed
          isRemoved
          updatedAt
          createdAt
          noOfSchedules
          noOfWorkflows
          token
          infraNamespace
          serviceAccount
          infraScope
          infraNsExists
          infraSaExists
          installationType
          k8sConnectorID
          lastWorkflowTimestamp
          startTime
          version
          createdBy {
            userID
            username
            email
          }
          updatedBy {
            userID
            username
            email
          }
        }
        workflowName
        phase
        resiliencyScore
        experimentsPassed
        experimentsFailed
        experimentsAwaited
        experimentsStopped
        experimentsNa
        totalExperiments
        executionData
        isRemoved
        updatedBy {
          userID
          username
          email
        }
        createdBy {
          userID
          username
          email
        }
      }
      updatedBy {
        userID
        username
        email
      }
    }
  }
}
Variables
{
  "identifiers": IdentifiersRequest,
  "request": ListWorkflowRequest
}
Response
{
  "data": {
    "listWorkflow": {
      "totalNoOfWorkflows": 987,
      "workflows": [Workflow]
    }
  }
}

listWorkflowManifest

Description

Returns all the workflow templates for the projectID

Response

Returns [WorkflowTemplateResponse]!

Arguments
Name Description
identifiers - IdentifiersRequest!

Example

Query
query ListWorkflowManifest($identifiers: IdentifiersRequest!) {
  listWorkflowManifest(identifiers: $identifiers) {
    identifiers {
      orgIdentifier
      accountIdentifier
      projectIdentifier
    }
    templateID
    manifest
    name
    description
    projectName
    createdAt
    isRemoved
    isCustomWorkflow
    tags
    createdBy {
      userID
      username
      email
    }
    updatedBy {
      userID
      username
      email
    }
    updatedAt
  }
}
Variables
{"identifiers": IdentifiersRequest}
Response
{
  "data": {
    "listWorkflowManifest": [
      {
        "identifiers": Identifiers,
        "templateID": "4",
        "manifest": "abc123",
        "name": "abc123",
        "description": "abc123",
        "projectName": "abc123",
        "createdAt": "xyz789",
        "isRemoved": false,
        "isCustomWorkflow": true,
        "tags": ["abc123"],
        "createdBy": UserDetails,
        "updatedBy": UserDetails,
        "updatedAt": "xyz789"
      }
    ]
  }
}

listWorkflowRun

Description

Returns the list of workflow run based on various filter parameters

Response

Returns a ListWorkflowRunResponse!

Arguments
Name Description
identifiers - IdentifiersRequest!
request - ListWorkflowRunRequest!

Example

Query
query ListWorkflowRun(
  $identifiers: IdentifiersRequest!,
  $request: ListWorkflowRunRequest!
) {
  listWorkflowRun(
    identifiers: $identifiers,
    request: $request
  ) {
    totalNoOfWorkflowRuns
    workflowRuns {
      identifiers {
        orgIdentifier
        accountIdentifier
        projectIdentifier
      }
      workflowRunID
      workflowID
      weightages {
        experimentName
        weightage
      }
      updatedAt
      createdAt
      infra {
        infraID
        name
        description
        tags
        environmentID
        platformName
        isActive
        isInfraConfirmed
        isRemoved
        updatedAt
        createdAt
        noOfSchedules
        noOfWorkflows
        token
        infraNamespace
        serviceAccount
        infraScope
        infraNsExists
        infraSaExists
        installationType
        k8sConnectorID
        lastWorkflowTimestamp
        startTime
        version
        createdBy {
          userID
          username
          email
        }
        updatedBy {
          userID
          username
          email
        }
      }
      workflowName
      phase
      resiliencyScore
      experimentsPassed
      experimentsFailed
      experimentsAwaited
      experimentsStopped
      experimentsNa
      totalExperiments
      executionData
      isRemoved
      updatedBy {
        userID
        username
        email
      }
      createdBy {
        userID
        username
        email
      }
    }
  }
}
Variables
{
  "identifiers": IdentifiersRequest,
  "request": ListWorkflowRunRequest
}
Response
{
  "data": {
    "listWorkflowRun": {
      "totalNoOfWorkflowRuns": 987,
      "workflowRuns": [WorkflowRun]
    }
  }
}

Mutations

addChaosHub

Description

Add a ChaosHub (includes the git clone operation)

Response

Returns a ChaosHub!

Arguments
Name Description
request - ChaosHubRequest!
identifiers - IdentifiersRequest!

Example

Query
mutation AddChaosHub(
  $request: ChaosHubRequest!,
  $identifiers: IdentifiersRequest!
) {
  addChaosHub(
    request: $request,
    identifiers: $identifiers
  ) {
    id
    identifiers {
      orgIdentifier
      accountIdentifier
      projectIdentifier
    }
    repoName
    repoURL
    repoBranch
    AuthType
    connectorId
    connectorScope
    name
    createdAt
    updatedAt
    lastSyncedAt
    isDefault
    tags
    createdBy {
      userID
      username
      email
    }
    updatedBy {
      userID
      username
      email
    }
    description
  }
}
Variables
{
  "request": ChaosHubRequest,
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "addChaosHub": {
      "id": 4,
      "identifiers": Identifiers,
      "repoName": "abc123",
      "repoURL": "abc123",
      "repoBranch": "xyz789",
      "AuthType": "Ssh",
      "connectorId": "abc123",
      "connectorScope": "ACCOUNT",
      "name": "xyz789",
      "createdAt": "xyz789",
      "updatedAt": "abc123",
      "lastSyncedAt": "xyz789",
      "isDefault": false,
      "tags": ["xyz789"],
      "createdBy": UserDetails,
      "updatedBy": UserDetails,
      "description": "xyz789"
    }
  }
}

chaosWorkflowRun

Description

Creates a new workflow run and sends it to subscriber

Response

Returns a String!

Arguments
Name Description
request - WorkflowRunRequest!

Example

Query
mutation ChaosWorkflowRun($request: WorkflowRunRequest!) {
  chaosWorkflowRun(request: $request)
}
Variables
{"request": WorkflowRunRequest}
Response
{"data": {"chaosWorkflowRun": {}}}

confirmInfraRegistration

Description

Confirms the subscriber's registration with the control plane

Arguments
Name Description
request - InfraIdentity!

Example

Query
mutation ConfirmInfraRegistration($request: InfraIdentity!) {
  confirmInfraRegistration(request: $request) {
    isInfraConfirmed
    newAccessKey
    infraID
  }
}
Variables
{"request": InfraIdentity}
Response
{
  "data": {
    "confirmInfraRegistration": {
      "isInfraConfirmed": false,
      "newAccessKey": "xyz789",
      "infraID": "xyz789"
    }
  }
}

createChaosWorkFlow

Description

Creates a new workflow and applies its manifest

Response

Returns a ChaosWorkFlowResponse!

Arguments
Name Description
request - ChaosWorkFlowRequest!
identifiers - IdentifiersRequest!

Example

Query
mutation CreateChaosWorkFlow(
  $request: ChaosWorkFlowRequest!,
  $identifiers: IdentifiersRequest!
) {
  createChaosWorkFlow(
    request: $request,
    identifiers: $identifiers
  ) {
    workflowID
    identifiers {
      orgIdentifier
      accountIdentifier
      projectIdentifier
    }
    cronSyntax
    workflowName
    workflowDescription
    isCustomWorkflow
    tags
  }
}
Variables
{
  "request": ChaosWorkFlowRequest,
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "createChaosWorkFlow": {
      "workflowID": "abc123",
      "identifiers": Identifiers,
      "cronSyntax": "abc123",
      "workflowName": "abc123",
      "workflowDescription": "abc123",
      "isCustomWorkflow": false,
      "tags": ["abc123"]
    }
  }
}

createWorkflowTemplate

Description

Creates a workflow template manifest

Response

Returns a WorkflowTemplateResponse!

Arguments
Name Description
request - TemplateInput
identifiers - IdentifiersRequest!

Example

Query
mutation CreateWorkflowTemplate(
  $request: TemplateInput,
  $identifiers: IdentifiersRequest!
) {
  createWorkflowTemplate(
    request: $request,
    identifiers: $identifiers
  ) {
    identifiers {
      orgIdentifier
      accountIdentifier
      projectIdentifier
    }
    templateID
    manifest
    name
    description
    projectName
    createdAt
    isRemoved
    isCustomWorkflow
    tags
    createdBy {
      userID
      username
      email
    }
    updatedBy {
      userID
      username
      email
    }
    updatedAt
  }
}
Variables
{
  "request": TemplateInput,
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "createWorkflowTemplate": {
      "identifiers": Identifiers,
      "templateID": "4",
      "manifest": "abc123",
      "name": "xyz789",
      "description": "abc123",
      "projectName": "abc123",
      "createdAt": "xyz789",
      "isRemoved": true,
      "isCustomWorkflow": true,
      "tags": ["xyz789"],
      "createdBy": UserDetails,
      "updatedBy": UserDetails,
      "updatedAt": "xyz789"
    }
  }
}

deleteChaosHub

Description

Delete the ChaosHub

Response

Returns a Boolean!

Arguments
Name Description
id - ID!
identifiers - IdentifiersRequest!

Example

Query
mutation DeleteChaosHub(
  $id: ID!,
  $identifiers: IdentifiersRequest!
) {
  deleteChaosHub(
    id: $id,
    identifiers: $identifiers
  )
}
Variables
{"id": 4, "identifiers": IdentifiersRequest}
Response
{"data": {"deleteChaosHub": {}}}

deleteChaosWorkflow

Description

Removes a workflow from infra

Response

Returns a Boolean!

Arguments
Name Description
workflowID - String!
workflowRunID - String
identifiers - IdentifiersRequest!

Example

Query
mutation DeleteChaosWorkflow(
  $workflowID: String!,
  $workflowRunID: String,
  $identifiers: IdentifiersRequest!
) {
  deleteChaosWorkflow(
    workflowID: $workflowID,
    workflowRunID: $workflowRunID,
    identifiers: $identifiers
  )
}
Variables
{
  "workflowID": "xyz789",
  "workflowRunID": "abc123",
  "identifiers": IdentifiersRequest
}
Response
{"data": {"deleteChaosWorkflow": {}}}

deleteInfras

Description

Disconnects an infra and deletes its configuration from the control plane

Response

Returns a String!

Arguments
Name Description
identifiers - IdentifiersRequest!
infraIDs - [String]!

Example

Query
mutation DeleteInfras(
  $identifiers: IdentifiersRequest!,
  $infraIDs: [String]!
) {
  deleteInfras(
    identifiers: $identifiers,
    infraIDs: $infraIDs
  )
}
Variables
{
  "identifiers": IdentifiersRequest,
  "infraIDs": ["abc123"]
}
Response
{"data": {"deleteInfras": {}}}

deleteWorkflowTemplate

Description

Removes a workflow template manifest

Response

Returns a Boolean!

Arguments
Name Description
templateID - String!
identifiers - IdentifiersRequest!

Example

Query
mutation DeleteWorkflowTemplate(
  $templateID: String!,
  $identifiers: IdentifiersRequest!
) {
  deleteWorkflowTemplate(
    templateID: $templateID,
    identifiers: $identifiers
  )
}
Variables
{
  "templateID": "abc123",
  "identifiers": IdentifiersRequest
}
Response
{"data": {"deleteWorkflowTemplate": {}}}

getManifestWithInfraID

Description

Fetches manifest details

Response

Returns a String!

Arguments
Name Description
identifiers - IdentifiersRequest!
infraID - String!
accessKey - String!

Example

Query
mutation GetManifestWithInfraID(
  $identifiers: IdentifiersRequest!,
  $infraID: String!,
  $accessKey: String!
) {
  getManifestWithInfraID(
    identifiers: $identifiers,
    infraID: $infraID,
    accessKey: $accessKey
  )
}
Variables
{
  "identifiers": IdentifiersRequest,
  "infraID": "abc123",
  "accessKey": "abc123"
}
Response
{"data": {"getManifestWithInfraID": {}}}

pushWorkflowToChaosHub

Description

Push workflow to ChaosHub

Response

Returns a String!

Arguments
Name Description
request - PushWorkflowToChaosHubInput!
identifiers - IdentifiersRequest!

Example

Query
mutation PushWorkflowToChaosHub(
  $request: PushWorkflowToChaosHubInput!,
  $identifiers: IdentifiersRequest!
) {
  pushWorkflowToChaosHub(
    request: $request,
    identifiers: $identifiers
  )
}
Variables
{
  "request": PushWorkflowToChaosHubInput,
  "identifiers": IdentifiersRequest
}
Response
{"data": {"pushWorkflowToChaosHub": {}}}

registerInfra

Description

Connect a new infra for a user in a specified project

Response

Returns a RegisterInfraResponse!

Arguments
Name Description
identifiers - IdentifiersRequest!
request - RegisterInfraRequest!

Example

Query
mutation RegisterInfra(
  $identifiers: IdentifiersRequest!,
  $request: RegisterInfraRequest!
) {
  registerInfra(
    identifiers: $identifiers,
    request: $request
  ) {
    token
    infraID
    name
    manifest
  }
}
Variables
{
  "identifiers": IdentifiersRequest,
  "request": RegisterInfraRequest
}
Response
{
  "data": {
    "registerInfra": {
      "token": "xyz789",
      "infraID": "xyz789",
      "name": "xyz789",
      "manifest": "abc123"
    }
  }
}

runChaosExperiment

Description

Run the chaos experiment (used by frontend)

Response

Returns a RunChaosExperimentResponse!

Arguments
Name Description
workflowID - String!
identifiers - IdentifiersRequest!

Example

Query
mutation RunChaosExperiment(
  $workflowID: String!,
  $identifiers: IdentifiersRequest!
) {
  runChaosExperiment(
    workflowID: $workflowID,
    identifiers: $identifiers
  ) {
    notifyID
  }
}
Variables
{
  "workflowID": "abc123",
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "runChaosExperiment": {
      "notifyID": "xyz789"
    }
  }
}

stopWorkflowRuns

Description

stopWorkflow will halt all the running runs of a particular workflow

Response

Returns a Boolean!

Arguments
Name Description
identifiers - IdentifiersRequest!
workflowID - String!
workflowRunID - String

Example

Query
mutation StopWorkflowRuns(
  $identifiers: IdentifiersRequest!,
  $workflowID: String!,
  $workflowRunID: String
) {
  stopWorkflowRuns(
    identifiers: $identifiers,
    workflowID: $workflowID,
    workflowRunID: $workflowRunID
  )
}
Variables
{
  "identifiers": IdentifiersRequest,
  "workflowID": "abc123",
  "workflowRunID": "xyz789"
}
Response
{"data": {"stopWorkflowRuns": {}}}

syncChaosHub

Description

Sync changes from the Git repository of a ChaosHub

Response

Returns a String!

Arguments
Name Description
id - ID!
identifiers - IdentifiersRequest!

Example

Query
mutation SyncChaosHub(
  $id: ID!,
  $identifiers: IdentifiersRequest!
) {
  syncChaosHub(
    id: $id,
    identifiers: $identifiers
  )
}
Variables
{
  "id": "4",
  "identifiers": IdentifiersRequest
}
Response
{"data": {"syncChaosHub": {}}}

updateChaosHub

Description

Update the configuration of a ChaosHub

Response

Returns a ChaosHub!

Arguments
Name Description
id - ID!
request - ChaosHubRequest!
identifiers - IdentifiersRequest!

Example

Query
mutation UpdateChaosHub(
  $id: ID!,
  $request: ChaosHubRequest!,
  $identifiers: IdentifiersRequest!
) {
  updateChaosHub(
    id: $id,
    request: $request,
    identifiers: $identifiers
  ) {
    id
    identifiers {
      orgIdentifier
      accountIdentifier
      projectIdentifier
    }
    repoName
    repoURL
    repoBranch
    AuthType
    connectorId
    connectorScope
    name
    createdAt
    updatedAt
    lastSyncedAt
    isDefault
    tags
    createdBy {
      userID
      username
      email
    }
    updatedBy {
      userID
      username
      email
    }
    description
  }
}
Variables
{
  "id": 4,
  "request": ChaosHubRequest,
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "updateChaosHub": {
      "id": 4,
      "identifiers": Identifiers,
      "repoName": "xyz789",
      "repoURL": "abc123",
      "repoBranch": "abc123",
      "AuthType": "Ssh",
      "connectorId": "xyz789",
      "connectorScope": "ACCOUNT",
      "name": "xyz789",
      "createdAt": "abc123",
      "updatedAt": "abc123",
      "lastSyncedAt": "xyz789",
      "isDefault": true,
      "tags": ["abc123"],
      "createdBy": UserDetails,
      "updatedBy": UserDetails,
      "description": "xyz789"
    }
  }
}

updateChaosWorkflow

Description

Updates the workflow

Response

Returns a ChaosWorkFlowResponse!

Arguments
Name Description
request - ChaosWorkFlowRequest
identifiers - IdentifiersRequest!

Example

Query
mutation UpdateChaosWorkflow(
  $request: ChaosWorkFlowRequest,
  $identifiers: IdentifiersRequest!
) {
  updateChaosWorkflow(
    request: $request,
    identifiers: $identifiers
  ) {
    workflowID
    identifiers {
      orgIdentifier
      accountIdentifier
      projectIdentifier
    }
    cronSyntax
    workflowName
    workflowDescription
    isCustomWorkflow
    tags
  }
}
Variables
{
  "request": ChaosWorkFlowRequest,
  "identifiers": IdentifiersRequest
}
Response
{
  "data": {
    "updateChaosWorkflow": {
      "workflowID": "xyz789",
      "identifiers": Identifiers,
      "cronSyntax": "xyz789",
      "workflowName": "xyz789",
      "workflowDescription": "xyz789",
      "isCustomWorkflow": false,
      "tags": ["xyz789"]
    }
  }
}

Types

Annotation

Fields
Field Name Description
categories - String!
vendor - String!
createdAt - String!
repository - String!
support - String!
chartDescription - String!
Example
{
  "categories": "xyz789",
  "vendor": "abc123",
  "createdAt": "abc123",
  "repository": "abc123",
  "support": "xyz789",
  "chartDescription": "abc123"
}

Audit

Fields
Field Name Description
updatedAt - String
createdAt - String
updatedBy - UserDetails
createdBy - UserDetails
Example
{
  "updatedAt": "xyz789",
  "createdAt": "abc123",
  "updatedBy": UserDetails,
  "createdBy": UserDetails
}

Boolean

Description

The Boolean scalar type represents true or false.

Example
{}

ChaosHub

Fields
Field Name Description
id - ID! ID of the chaos hub
identifiers - Identifiers! Harness identifiers
repoName - String Name of the repository if connector is of Account type
repoURL - String! URL of the git repository
repoBranch - String! Branch of the git repository
AuthType - ChaosHubAuthType! AuthType
connectorId - String! Name of the GitConnectorId
connectorScope - ConnectorScope! Name of the ConnectorScope
name - String! Name of the chaos hub
createdAt - String! Timestamp when the chaos hub was created
updatedAt - String! Timestamp when the chaos hub was last updated
lastSyncedAt - String! Timestamp when the chaos hub was last synced
isDefault - Boolean! Default Hub Identifier
tags - [String!] Tags of the ChaosHub
createdBy - UserDetails User who created the ChaosHub
updatedBy - UserDetails User who has updated the ChaosHub
description - String Description of ChaosHub
Example
{
  "id": "4",
  "identifiers": Identifiers,
  "repoName": "xyz789",
  "repoURL": "abc123",
  "repoBranch": "abc123",
  "AuthType": "Ssh",
  "connectorId": "abc123",
  "connectorScope": "ACCOUNT",
  "name": "xyz789",
  "createdAt": "xyz789",
  "updatedAt": "abc123",
  "lastSyncedAt": "xyz789",
  "isDefault": false,
  "tags": ["xyz789"],
  "createdBy": UserDetails,
  "updatedBy": UserDetails,
  "description": "xyz789"
}

ChaosHubAuthType

Values
Enum Value Description

Ssh

UsernameToken

Example
{}

ChaosHubFilterInput

Description

Defines filter options for ChaosHub

Fields
Input Field Description
chaosHubName - String Name of the ChaosHub
tags - [String!] Tags of a chaos hub
description - String Description of a chaos hub
Example
{}

ChaosHubRequest

Description

Defines the details required for creating a chaos hub

Fields
Input Field Description
hubName - String! Name of the chaos hub
connectorId - String! Name of the GitConnectorId
connectorScope - ConnectorScope! Name of the ConnectorScope
repoName - String Repo name of the git repository
repoBranch - String! Branch of the git repository
tags - [String!] Tags of the ChaosHub
description - String Description of ChaosHub
Example
{}

ChaosHubStatus

Fields
Field Name Description
id - ID! ID of the hub
repoName - String Name of the repository if connector is of Account type
repoURL - String! URL of the git repository
repoBranch - String! Branch of the git repository
connectorId - String! Name of the GitConnectorId
connectorScope - ConnectorScope! Name of the ConnectorScope
AuthType - ChaosHubAuthType! AuthType
isAvailable - Boolean! Bool value indicating whether the hub is available or not.
totalExp - String! Total number of experiments in the hub
totalWorkflows - String! Total workflows
name - String! Name of the chaos hub
lastSyncedAt - String! Timestamp when the chaos hub was last synced
isDefault - Boolean! Default Hub Identifier
tags - [String!] Tags of the ChaosHub
createdBy - UserDetails User who created the ChaosHub
updatedBy - UserDetails User who has updated the ChaosHub
createdAt - String! Created at timestamp
updatedAt - String! Updated at timestamp
description - String Description of ChaosHub
Example
{
  "id": 4,
  "repoName": "abc123",
  "repoURL": "abc123",
  "repoBranch": "xyz789",
  "connectorId": "abc123",
  "connectorScope": "ACCOUNT",
  "AuthType": "Ssh",
  "isAvailable": true,
  "totalExp": "xyz789",
  "totalWorkflows": "abc123",
  "name": "abc123",
  "lastSyncedAt": "xyz789",
  "isDefault": false,
  "tags": ["abc123"],
  "createdBy": UserDetails,
  "updatedBy": UserDetails,
  "createdAt": "xyz789",
  "updatedAt": "abc123",
  "description": "abc123"
}

ChaosWorkFlowRequest

Description

Defines the details for a chaos workflow

Fields
Input Field Description
workflowID - String ID of the workflow
runExperiment - Boolean Boolean check indicating if the created scenario will be executed or not
workflowManifest - String! Manifest of the workflow
cronSyntax - String! Cron syntax of the workflow schedule
workflowName - String! Name of the workflow
workflowDescription - String! Description of the workflow
weightages - [WeightagesInput!]! Array containing weightage and name of each chaos experiment in the workflow
isCustomWorkflow - Boolean! Bool value indicating whether the workflow is a custom workflow or not
infraID - ID! ID of the target infra in which the workflow will run
tags - [String!] Tags of the infra
Example
{}

ChaosWorkFlowResponse

Description

Defines the response received for querying the details of chaos workflow

Fields
Field Name Description
workflowID - String! ID of the workflow
identifiers - Identifiers! Harness Identifiers
cronSyntax - String! Cron syntax of the workflow schedule
workflowName - String! Name of the workflow
workflowDescription - String! Description of the workflow
isCustomWorkflow - Boolean! Bool value indicating whether the workflow is a custom workflow or not
tags - [String!] Tags of the infra
Example
{
  "workflowID": "xyz789",
  "identifiers": Identifiers,
  "cronSyntax": "abc123",
  "workflowName": "xyz789",
  "workflowDescription": "xyz789",
  "isCustomWorkflow": true,
  "tags": ["abc123"]
}

Chart

Fields
Field Name Description
apiVersion - String!
kind - String!
metadata - Metadata!
spec - Spec!
packageInfo - PackageInformation!
Example
{
  "apiVersion": "xyz789",
  "kind": "xyz789",
  "metadata": Metadata,
  "spec": Spec,
  "packageInfo": PackageInformation
}

ConfirmInfraRegistrationResponse

Fields
Field Name Description
isInfraConfirmed - Boolean!
newAccessKey - String
infraID - String
Example
{
  "isInfraConfirmed": true,
  "newAccessKey": "abc123",
  "infraID": "abc123"
}

ConnectorScope

Values
Enum Value Description

ACCOUNT

PROJECT

ORGANISATION

Example
{}

DateRange

Description

Defines the start date and end date for the filtering the data

Fields
Input Field Description
startDate - String! Start date
endDate - String End date
Example
{}

ExperimentInfoInput

Fields
Input Field Description
name - String!
description - String!
Example
{}

ExperimentRequest

Fields
Input Field Description
chartName - String! Name of the chart being used
experimentName - String! Name of the experiment
hubID - String! Name of the hub
fileType - String Type of thr file for workflow: chaosEngine/ experimentInput
Example
{}

Experiments

Fields
Field Name Description
name - String!
CSV - String!
desc - String!
Example
{
  "name": "xyz789",
  "CSV": "abc123",
  "desc": "xyz789"
}

FaultList

Fields
Field Name Description
name - String!
displayName - String!
description - String!
Example
{
  "name": "xyz789",
  "displayName": "abc123",
  "description": "abc123"
}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
{}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
{}

INFRA_SCOPE

Values
Enum Value Description

namespace

cluster

Example
{}

Identifiers

Description

Defines the common identifiers for API operations

Fields
Field Name Description
orgIdentifier - String! Harness OrgID
accountIdentifier - String! Harness AccountID
projectIdentifier - String! Harness projectID
Example
{
  "orgIdentifier": "xyz789",
  "accountIdentifier": "xyz789",
  "projectIdentifier": "xyz789"
}

IdentifiersRequest

Fields
Input Field Description
orgIdentifier - String! Harness OrgID
accountIdentifier - String! Harness AccountID
projectIdentifier - String! Harness projectID
Example
{}

Infra

Description

Defines the details for a infra

Fields
Field Name Description
infraID - ID! ID of the infra
name - String! Name of the infra
description - String Description of the infra
tags - [String!] Tags of the infra
environmentID - String! Environment ID for the infra
platformName - String! Infra Platform Name eg. GKE,AWS, Others
isActive - Boolean! Boolean value indicating if chaos infrastructure is active or not
isInfraConfirmed - Boolean! Boolean value indicating if chaos infrastructure is confirmed or not
isRemoved - Boolean! Boolean value indicating if chaos infrastructure is removed or not
updatedAt - String! Timestamp when the infra was last updated
createdAt - String! Timestamp when the infra was created
noOfSchedules - Int Number of schedules created in the infra
noOfWorkflows - Int Number of workflows run in the infra
token - String! Token used to verify and retrieve the infra manifest
infraNamespace - String Namespace where the infra is being installed
serviceAccount - String Name of service account used by infra
infraScope - String! Scope of the infra : ns or infra
infraNsExists - Boolean Bool value indicating whether infra ns used already exists on infra or not
infraSaExists - Boolean Bool value indicating whether service account used already exists on infra or not
installationType - InstallationType! InstallationType connector/manifest
k8sConnectorID - String K8sConnectorID
lastWorkflowTimestamp - String Timestamp of the last workflow run in the infra
startTime - String! Timestamp when the infra got connected
version - String! Version of the infra
createdBy - UserDetails User who created the infra
updatedBy - UserDetails User who has updated the infra
Example
{
  "infraID": "4",
  "name": "xyz789",
  "description": "abc123",
  "tags": ["xyz789"],
  "environmentID": "abc123",
  "platformName": "abc123",
  "isActive": true,
  "isInfraConfirmed": true,
  "isRemoved": false,
  "updatedAt": "abc123",
  "createdAt": "abc123",
  "noOfSchedules": 123,
  "noOfWorkflows": 123,
  "token": "xyz789",
  "infraNamespace": "xyz789",
  "serviceAccount": "xyz789",
  "infraScope": "xyz789",
  "infraNsExists": false,
  "infraSaExists": false,
  "installationType": "CONNECTOR",
  "k8sConnectorID": "xyz789",
  "lastWorkflowTimestamp": "xyz789",
  "startTime": "xyz789",
  "version": "abc123",
  "createdBy": UserDetails,
  "updatedBy": UserDetails
}

InfraFilterInput

Description

Defines filter options for infras

Fields
Input Field Description
name - String Name of the infra
infraID - String ID of the infra
description - String ID of the infra
platformName - String Platform name of infra
infraScope - INFRA_SCOPE Scope of infra
isActive - Boolean Status of infra
tags - [String] Tags of an infra
Example
{}

InfraIdentity

Fields
Input Field Description
infraID - String!
accessKey - String!
version - String!
Example
{}

InstallationType

Description

InstallationType defines the installation method used by the user

Values
Enum Value Description

CONNECTOR

MANIFEST

Example
{}

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
{}

ListChaosHubRequest

Fields
Input Field Description
chaosHubIDs - [ID!] Array of ChaosHub IDs for which details will be fetched
filter - ChaosHubFilterInput Details for fetching filtered data
Example
{}

ListInfraRequest

Description

Defines the details for a workflow

Fields
Input Field Description
infraIDs - [ID!] Array of infra IDs for which details will be fetched
environmentIDs - [ID!] Environment ID
k8sConnectorIDs - [ID!] Connector ID
pagination - Pagination Details for fetching paginated data
filter - InfraFilterInput Details for fetching filtered data
Example
{}

ListInfraResponse

Description

Defines the details for a infras with total infras count

Fields
Field Name Description
totalNoOfInfras - Int! Total number of infras
infras - [Infra]! Details related to the infras
Example
{"totalNoOfInfras": 987, "infras": [Infra]}

ListWorkflowRequest

Description

Defines the details for a workflow

Fields
Input Field Description
workflowIDs - [ID] Array of workflow IDs for which details will be fetched
pagination - Pagination Details for fetching paginated data
sort - WorkflowSortInput Details for fetching sorted data
filter - WorkflowFilterInput Details for fetching filtered data
Example
{}

ListWorkflowResponse

Description

Defines the details for a workflow with total workflow count

Fields
Field Name Description
totalNoOfWorkflows - Int! Total number of workflows
workflows - [Workflow]! Details related to the workflows
Example
{"totalNoOfWorkflows": 987, "workflows": [Workflow]}

ListWorkflowRunRequest

Description

Defines the details for workflow runs

Fields
Input Field Description
workflowRunIDs - [ID] Array of workflow run IDs for which details will be fetched
notifyIDs - [ID] Array of notify IDs for which details will be fetched
workflowIDs - [ID] Array of workflow IDs for which details will be fetched
pagination - Pagination Details for fetching paginated data
sort - WorkflowRunSortInput Details for fetching sorted data
filter - WorkflowRunFilterInput Details for fetching filtered data
Example
{}

ListWorkflowRunResponse

Description

Defines the details of a workflow to sent as response

Fields
Field Name Description
totalNoOfWorkflowRuns - Int! Total number of workflow runs
workflowRuns - [WorkflowRun]! Defines details of workflow runs
Example
{
  "totalNoOfWorkflowRuns": 123,
  "workflowRuns": [WorkflowRun]
}

Maintainer

Description

Defines the details of the maintainer

Fields
Field Name Description
name - String! Name of the maintainer
email - String! Email of the maintainer
Example
{
  "name": "xyz789",
  "email": "xyz789"
}

Metadata

Fields
Field Name Description
name - String!
version - String!
annotations - Annotation!
Example
{
  "name": "xyz789",
  "version": "abc123",
  "annotations": Annotation
}

PackageInformation

Fields
Field Name Description
packageName - String!
experiments - [Experiments!]!
Example
{
  "packageName": "xyz789",
  "experiments": [Experiments]
}

Pagination

Description

Defines data required to fetch paginated data

Fields
Input Field Description
page - Int! Page number for which data will be fetched
limit - Int! Number of data to be fetched
Example
{}

PredefinedWorkflowList

Fields
Field Name Description
workflowName - String!
workflowCSV - String!
workflowManifest - String!
Example
{
  "workflowName": "abc123",
  "workflowCSV": "xyz789",
  "workflowManifest": "abc123"
}

Provider

Fields
Field Name Description
name - String!
Example
{"name": "xyz789"}

PushWorkflowToChaosHubInput

Fields
Input Field Description
id - String! HubID for the selected ChaosHub
manifest - String Workflow Manifest to be pushed
workflowID - String WorkflowID to fetch the manifest
scenarioName - String! Scenario Name
description - String! Scenario Description
tags - [String!] Tags for the scenario
experiments - [ExperimentInfoInput!] Experiment info
Example
{}

RegisterInfraRequest

Description

Defines the details for the new infra being connected

Fields
Input Field Description
name - String! Name of the infra
environmentID - String! Environment ID for the infra
description - String Description of the infra
platformName - String! Infra Platform Name eg. GKE,AWS, Others
infraNamespace - String Namespace where the infra is being installed
serviceAccount - String Name of service account used by infra
infraScope - String! Scope of the infra : ns or infra
infraNsExists - Boolean Bool value indicating whether infra ns used already exists on infra or not
infraSaExists - Boolean Bool value indicating whether service account used already exists on infra or not
installationType - InstallationType! InstallationType connector/manifest
k8sConnectorID - String K8sConnectorID
skipSsl - Boolean Bool value indicating whether infra will skip ssl checks or not
nodeSelector - String Node selectors used by infra
tolerations - [Toleration] Node tolerations used by infra
tags - [String!] Tags of the infra
Example
{}

RegisterInfraResponse

Description

Response received for registering a new infra

Fields
Field Name Description
token - String! Token used to verify and retrieve the infra manifest
infraID - String! Unique ID for the newly registered infra
name - String! Infra name as sent in request
manifest - String! Infra Manifest
Example
{
  "token": "xyz789",
  "infraID": "abc123",
  "name": "abc123",
  "manifest": "abc123"
}

ResourceDetails

Fields
Field Name Description
name - String!
description - String
tags - [String!]
Possible Types
ResourceDetails Types

Infra

ChaosHub

ChaosHubStatus

Workflow

WorkflowTemplateResponse

Example
{
  "name": "xyz789",
  "description": "xyz789",
  "tags": ["xyz789"]
}

RunChaosExperimentResponse

Fields
Field Name Description
notifyID - String!
Example
{"notifyID": "abc123"}

ScenarioType

Values
Enum Value Description

CRON

NON_CRON

Example
{}

Spec

Fields
Field Name Description
displayName - String!
categoryDescription - String!
keywords - [String!]!
maturity - String!
maintainers - [Maintainer!]!
minKubeVersion - String!
provider - Provider!
links - [Link!]!
faults - [FaultList!]
experiments - [String!]
chaosExpCRDLink - String!
platforms - [String!]!
chaosType - String
Example
{
  "displayName": "xyz789",
  "categoryDescription": "abc123",
  "keywords": ["abc123"],
  "maturity": "abc123",
  "maintainers": [Maintainer],
  "minKubeVersion": "abc123",
  "provider": Provider,
  "links": [Link],
  "faults": [FaultList],
  "experiments": ["abc123"],
  "chaosExpCRDLink": "abc123",
  "platforms": ["abc123"],
  "chaosType": "xyz789"
}

String

Description

The Stringscalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
{}

TemplateInput

Description

Details for saving the template

Fields
Input Field Description
manifest - String! Workflow manifest in JSON escaped format
templateName - String! Name of the template
templateDescription - String! Description of the template
isCustomWorkflow - Boolean! Bool value indicating whether the workflow is a custom workflow or not
tags - [String!] Tags of the WorkflowTemplates
Example
{}

Toleration

Fields
Input Field Description
tolerationSeconds - Int
key - String
operator - String
effect - String
value - String
Example
{}

UserDetails

Fields
Field Name Description
userID - String!
username - String!
email - String!
Example
{
  "userID": "xyz789",
  "username": "abc123",
  "email": "xyz789"
}

Weightages

Description

Defines the details of the weightages of each chaos experiment in the workflow

Fields
Field Name Description
experimentName - String! Name of the experiment
weightage - Int! Weightage of the experiment
Example
{
  "experimentName": "abc123",
  "weightage": 123
}

WeightagesInput

Description

Defines the details of the weightages of each chaos experiment in the workflow

Fields
Input Field Description
experimentName - String! Name of the experiment
weightage - Int! Weightage of the experiment
Example
{}

Workflow

Description

Defines the details for a workflow

Fields
Field Name Description
identifiers - Identifiers! Harness identifiers
workflowID - String! ID of the workflow
workflowManifest - String! Manifest of the workflow
cronSyntax - String! Cron syntax of the workflow schedule
name - String! Name of the workflow
description - String! Description of the workflow
weightages - [Weightages!]! Array containing weightage and name of each chaos experiment in the workflow
isCustomWorkflow - Boolean! Bool value indicating whether the workflow is a custom workflow or not
updatedAt - String! Timestamp when the workflow was last updated
createdAt - String! Timestamp when the workflow was created
infra - Infra Target infra in which the workflow will run
isRemoved - Boolean! Bool value indicating if the workflow has removed
tags - [String!] Tags of the workflow
createdBy - UserDetails User who created the workflow
avgResiliencyScore - Float! Shows the average resiliency score of the workflow
percentageChange - Float! Shows percentage change in resiliency score
lastWfRunDetails - WorkflowRun Object containing details of latest workflow run
updatedBy - UserDetails Details of the user who updated the workflow
Example
{
  "identifiers": Identifiers,
  "workflowID": "abc123",
  "workflowManifest": "xyz789",
  "cronSyntax": "abc123",
  "name": "xyz789",
  "description": "abc123",
  "weightages": [Weightages],
  "isCustomWorkflow": true,
  "updatedAt": "xyz789",
  "createdAt": "abc123",
  "infra": Infra,
  "isRemoved": true,
  "tags": ["abc123"],
  "createdBy": UserDetails,
  "avgResiliencyScore": 987.65,
  "percentageChange": 123.45,
  "lastWfRunDetails": WorkflowRun,
  "updatedBy": UserDetails
}

WorkflowFilterInput

Description

Defines filter options for workflows

Fields
Input Field Description
workflowName - String Name of the workflow
infraName - String Name of the infra in which the workflow is running
infraID - String ID of the agent in which the workflow is running
infraActive - Boolean Bool value indicating if Chaos Infrastructure is active
scenarioType - ScenarioType Scenario type of the workflow i.e. CRON or NON_CRON
status - String Status of the latest workflow run
dateRange - DateRange Date range for filtering purpose
Example
{}

WorkflowRun

Description

Defines the details of a workflow run

Fields
Field Name Description
identifiers - Identifiers! Harness identifiers
workflowRunID - ID! ID of the workflow run which is to be queried
workflowID - ID! ID of the workflow
weightages - [Weightages!]! Array containing weightage and name of each chaos experiment in the workflow
updatedAt - String! Timestamp at which workflow run was last updated
createdAt - String! Timestamp at which workflow run was created
infra - Infra! Target infra in which the workflow will run
workflowName - String! Name of the workflow
phase - String! Phase of the workflow run
resiliencyScore - Float Resiliency score of the workflow
experimentsPassed - Int Number of experiments passed
experimentsFailed - Int Number of experiments failed
experimentsAwaited - Int Number of experiments awaited
experimentsStopped - Int Number of experiments stopped
experimentsNa - Int Number of experiments which are not available
totalExperiments - Int Total number of experiments
executionData - String! Stores all the workflow run details related to the nodes of DAG graph and chaos results of the experiments
isRemoved - Boolean Bool value indicating if the workflow run has removed
updatedBy - UserDetails User who has updated the workflow
createdBy - UserDetails User who has created the experiment run
Example
{
  "identifiers": Identifiers,
  "workflowRunID": "4",
  "workflowID": "4",
  "weightages": [Weightages],
  "updatedAt": "xyz789",
  "createdAt": "abc123",
  "infra": Infra,
  "workflowName": "xyz789",
  "phase": "abc123",
  "resiliencyScore": 123.45,
  "experimentsPassed": 987,
  "experimentsFailed": 987,
  "experimentsAwaited": 987,
  "experimentsStopped": 123,
  "experimentsNa": 123,
  "totalExperiments": 987,
  "executionData": "xyz789",
  "isRemoved": false,
  "updatedBy": UserDetails,
  "createdBy": UserDetails
}

WorkflowRunFilterInput

Description

Defines input type for workflow run filter

Fields
Input Field Description
workflowName - String Name of the workflow
infraID - String Name of the infra infra
workflowStatus - WorkflowRunStatus Status of the workflow run
dateRange - DateRange Date range for filtering purpose
Example
{}

WorkflowRunRequest

Description

Defines the details for a workflow run

Fields
Input Field Description
workflowID - ID! ID of the workflow
workflowRunID - ID! ID of the workflow run which is to be queried
workflowName - String! Name of the workflow
executionData - String! Stores all the workflow run details related to the nodes of DAG graph and chaos results of the experiments
infraID - InfraIdentity! ID of the infra infra in which the workflow is running
revisionID - String! ID of the revision which consists manifest details
notifyID - String Notify ID is used to retrun re-run validation of an experiment
completed - Boolean! Bool value indicating if the workflow run has completed
isRemoved - Boolean Bool value indicating if the workflow run has removed
updatedBy - String! User who has updated the workflow
Example
{}

WorkflowRunSortInput

Description

Defines sorting options for workflow runs

Fields
Input Field Description
field - WorkflowSortingField! Field in which sorting will be done
descending - Boolean Bool value indicating whether the sorting will be done in descending order
Example
{}

WorkflowRunStatus

Values
Enum Value Description

All

Running

Completed

Terminated

Stopped

Error

Example
{}

WorkflowSortInput

Description

Defines sorting options for workflow

Fields
Input Field Description
field - WorkflowSortingField! Field in which sorting will be done
descending - Boolean Bool value indicating whether the sorting will be done in descending order
Example
{}

WorkflowSortingField

Values
Enum Value Description

NAME

TIME

Example
{}

WorkflowTemplateResponse

Description

Details for a workflow template

Fields
Field Name Description
identifiers - Identifiers! Harness identifiers
templateID - ID! ID of the template
manifest - String! Workflow manifest in JSON escaped string
name - String! Name of the template
description - String! Description of the template
projectName - String! Name of the project
createdAt - String! Time at which the manifest template was created
isRemoved - Boolean! Bool value indicating if the workflow template has removed
isCustomWorkflow - Boolean! Bool value indicating whether the workflow template is a custom or not
tags - [String!] Tags of the WorkflowTemplates
createdBy - UserDetails User who created the workflow template
updatedBy - UserDetails User who has updated the workflow template
updatedAt - String User who has updated the workflow template
Example
{
  "identifiers": Identifiers,
  "templateID": 4,
  "manifest": "xyz789",
  "name": "abc123",
  "description": "abc123",
  "projectName": "xyz789",
  "createdAt": "xyz789",
  "isRemoved": false,
  "isCustomWorkflow": false,
  "tags": ["abc123"],
  "createdBy": UserDetails,
  "updatedBy": UserDetails,
  "updatedAt": "abc123"
}