# Litmus Portal API Documentation | API Reference

# Litmus Portal API Documentation API Reference

Litmus Portal provides console and UI experience for managing, monitoring, and events around chaos workflows. Chaos workflows consist of a sequence of experiments run together to achieve the objective of introducing some kind of fault into an application or the Kubernetes platform.

##### API Endpoints

    Dev:
    http://localhost:8080
    Prod:
    http://localhost:8080/query

# Authentication

Litmus Portal API uses API keys to authenticate requests. API keys carry many privileges, so be sure to keep them secure! Do not share the API key in publicly accessible areas such as GitHub, client-side code and so forth.
Authentication to the API is performed via HTTP Basic Auth. Provide your username and password to generate a JWT token and set that token in the header of the API.
All API requests must be made over HTTP or HTTPS. API requests without authentication will also fail.

### API KEYS

name
Authorization
in
header

##### Request to generate API KEYS

    curl -H 'Content-Type: application/json' -X POST --data '{"username": "admin", "password": "litmus"}'  http://localhost:3000/login

# Cluster

Litmus Portal gives the ability to run chaos on remote Kubernetes cluster. Self cluster is automatically getting connected after submitting the welcome model. To connect an external cluster, use the following APIs for cluster operations.
User can access connected clusters via targets page of Litmus Portal.

Cluster

## Register Cluster

User can make requests to connect their kubernetes cluster and get a token as response, that token can be used to get the subscriber manifest which needs to apply in their cluster.

Field | Possible values | Mandatory/Optional
--- | --- | ---
platform_name | - | Optional
cluster_type | external/internal | Mandatory
agent_namespace | - | Optional
serviceaccount | - | Optional
agent_scope | cluster/namespace | Mandatory
agent_ns_exists | true/false | Mandatory
agent_sa_exists | true/false | Mandatory

###### Example Body:

{

"cluster_name": "Litmus-cluster",
"description": "New Litmus Portal Cluster",
"platform_name": "AWS",
"project_id": "5fd7d9212c9f32447e28317b",
"cluster_type": "external",
"agent_namespace": "",
"agent_namespace": "",
"agent_scope": cluster,
"agent_ns_exists": false,
"agent_sa_exists": false,

}
clusterInput:
ClusterInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation userClusterReg($clusterInput: ClusterInput!){
      userClusterReg(clusterInput: $clusterInput){
        token
        cluster_id
        cluster_name
      }
    }

##### Variables

    {
      "clusterInput": {
        "cluster_name": "string",
        "description": "string",
        "platform_name": "string",
        "project_id": "object",
        "cluster_type": "string",
        "agent_namespace": "string",
        "serviceaccount": "string",
        "agent_scope": "string",
        "agent_ns_exists": "boolean",
        "agent_sa_exists": "boolean"
      }
    }

Try it now

200 OK

Successful operation

type
clusterRegResponse

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "userClusterReg": {
          "token": "string",
          "cluster_id": "string",
          "cluster_name": "string"
        }
      }
    }

Cluster

## List Cluster

Returns a list of cluster with Litmus Portal. It includes pending, active and inactive clusters.

Field | Possible values | Mandatory/Optional
--- | --- | ---
project_id | - | Mandatory
cluster_type | external/internal | Mandatory

###### Example Body:

{

"project_id": "5fd7d9212c9f32447e28317b",
"cluster_type": "external",

}
project_id:
string

(no description)

cluster_type:
string

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    query getCluster($project_id: String!, $cluster_type: String){
      getCluster(project_id: $project_id, cluster_type: $cluster_type){
        cluster_id
        project_id
        cluster_name
        description
        platform_name
        access_key
        is_registered
        is_cluster_confirmed
        is_active
        updated_at
        created_at
        cluster_type
        no_of_schedules
        no_of_workflows
        token
        agent_namespace
        serviceaccount
        agent_scope
        agent_ns_exists
        agent_sa_exists
      }
    }

##### Variables

    {
      "project_id": "string",
      "cluster_type": "string"
    }

Try it now

200 OK

Successful operation

type
Cluster

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "getCluster": [
          {
            "cluster_id": "string",
            "project_id": "string",
            "cluster_name": "string",
            "description": "string",
            "platform_name": "string",
            "access_key": "string",
            "is_registered": "boolean",
            "is_cluster_confirmed": "boolean",
            "is_active": "boolean",
            "updated_at": "string",
            "created_at": "string",
            "cluster_type": "string",
            "no_of_schedules": "integer",
            "no_of_workflows": "integer",
            "token": "string",
            "agent_namespace": "string",
            "serviceaccount": "string",
            "agent_scope": "string",
            "agent_ns_exists": "boolean",
            "agent_sa_exists": "boolean"
          }
        ]
      }
    }

Cluster

## Delete Cluster

This query can be used to delete a cluster from litmus portal. It cannot be undone.
Note: User can access the details of deleted cluster inside MongoDB, which are being marked as removed.

Field | Possible values | Mandatory/Optional
--- | --- | ---
cluster_id | - | Mandatory

###### Example Body:

{

"cluster_id": "2df3212c9f32447e28317b",

}
cluster_id:
string

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation deleteClusterReg($cluster_id: String!){
      deleteClusterReg(cluster_id: $cluster_id)
    }

##### Variables

    {
      "cluster_id": "string"
    }

Try it now

200 OK

Successful operation

type
string

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "deleteClusterReg": "string"
      }
    }

# ChaosWorkflow

Chaos workflows consist of a sequence of experiments run together to introduce chaos in the Kubernetes platform.
Note: Target cluster should be in active state before scheduling the workflow

ChaosWorkflow

## Create ChaosWorkflow

User can create chaosworkflow easily via the workflow page of the Litmus Portal dashboard.

Field | Possible values | Mandatory/Optional
--- | --- | ---
workflow_manifest | - | Mandatory
cronSyntax | - | Optional
workflow_name | external/internal | Mandatory
workflow_description | - | Optional
isCustomWorkflow | true/false | Madatory
project_id |  | Mandatory
cluster_id |  | Mandatory

###### Example Body:

{

"workflow_name": "Pod-networkloss-chaos",
"workflow_manifest": "{ apiVersion: v1 ......}",
"cronSyntax": "***/2",
"project_id": "5fd7d9212c9f32447e28317b",
"cluster_id": "3gr3f492146f53d4g3e283re",
"workflow_description": "Pod networkloss-experiment",
"isCustomWorkflow": false,

}
input:
ChaosWorkFlowInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation createChaosWorkFlow($input: ChaosWorkFlowInput!){
      createChaosWorkFlow(input: $input){
        workflow_id
        cronSyntax
        workflow_name
        workflow_description
        isCustomWorkflow
      }
    }

##### Variables

    {
      "input": {
        "workflow_id": "string",
        "workflow_manifest": "string",
        "cronSyntax": "string",
        "workflow_name": "string",
        "workflow_description": "string",
        "weightages": [
          {
            "experiment_name": "string",
            "weightage": "number"
          }
        ],
        "isCustomWorkflow": "boolean",
        "project_id": "object",
        "cluster_id": "object"
      }
    }

Try it now

200 OK

Successful operation

type
ChaosWorkFlowResponse

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "createChaosWorkFlow": {
          "workflow_id": "string",
          "cronSyntax": "string",
          "workflow_name": "string",
          "workflow_description": "string",
          "isCustomWorkflow": "boolean"
        }
      }
    }

ChaosWorkflow

## List ChaosWorkflow

Returns a list of chaos workflow and details of particular using a same endpoint. It can fetch both cron and non-cron workflow present in the Litmus Portal.
User can get a particular workflow by appending workflow_id inside an array of workflow_ids, if the array is empty it will return a list of chaos workflow.

Field | Possible values | Mandatory/Optional
--- | --- | ---
project_id | - | Mandatory
workflow_ids | [] | Optional

###### Example Body:

{

"project_id": "5fd7d9212c9f32447e28317b",
"workflow_ids": ["3gr3f492146f53d4g3e283re"],

}
project_id:
string

(no description)

workflow_ids:
string[]

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    query ListWorkflow($project_id: String!, $workflow_ids: [ID]){
      ListWorkflow(project_id: $project_id, workflow_ids: $workflow_ids){
        workflow_id
        workflow_manifest
        cronSyntax
        cluster_name
        workflow_name
        workflow_description
        isCustomWorkflow
        updated_at
        created_at
        project_id
        cluster_id
        cluster_type
        isRemoved
      }
    }

##### Variables

    {
      "project_id": "string",
      "workflow_ids": [
        "string"
      ]
    }

Try it now

200 OK

Successful operation

type
Workflow

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "ListWorkflow": [
          {
            "workflow_id": "string",
            "workflow_manifest": "string",
            "cronSyntax": "string",
            "cluster_name": "string",
            "workflow_name": "string",
            "workflow_description": "string",
            "isCustomWorkflow": "boolean",
            "updated_at": "string",
            "created_at": "string",
            "project_id": "string",
            "cluster_id": "string",
            "cluster_type": "string",
            "isRemoved": "boolean"
          }
        ]
      }
    }

ChaosWorkflow

## Update ChaosWorkflow

Update the specified chaos workflow by setting the values of the parameters passed. Any parameters not provided will change with its empty value.

Field | Possible values | Mandatory/Optional
--- | --- | ---
workflow_id | - | Mandatory
cronSyntax | - | Mandatory
workflow_name | - | Mandatory
workflow_description | - | Mandatory
isCustomWorkflow | true/false | Mandatory

###### Example Body:

{

"workflow_id": "5fd7d9212c9f32447e28317b",
"cronSyntax": "****",
"workflow_name": "New-network-chaos",
"workflow_description": "Update Chaos workflow",
"isCustomWorkflow": false

}
input:
ChaosWorkFlowInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation updateChaosWorkflow($input: ChaosWorkFlowInput){
      updateChaosWorkflow(input: $input){
        workflow_id
        cronSyntax
        workflow_name
        workflow_description
        isCustomWorkflow
      }
    }

##### Variables

    {
      "input": {
        "workflow_id": "string",
        "workflow_manifest": "string",
        "cronSyntax": "string",
        "workflow_name": "string",
        "workflow_description": "string",
        "weightages": [
          {
            "experiment_name": "string",
            "weightage": "number"
          }
        ],
        "isCustomWorkflow": "boolean",
        "project_id": "object",
        "cluster_id": "object"
      }
    }

Try it now

200 OK

Successful operation

type
ChaosWorkFlowResponse

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "updateChaosWorkflow": {
          "workflow_id": "string",
          "cronSyntax": "string",
          "workflow_name": "string",
          "workflow_description": "string",
          "isCustomWorkflow": "boolean"
        }
      }
    }

Chaos Workflow

## Delete ChaosWorkflow

Delete chaos workflow will permanently delete schedule workflow from the cluster. It cannot be undone. Note: User can access the details of deleted workflow inside MongoDB, which are being marked as removed.

Field | Possible values | Mandatory/Optional
--- | --- | ---
workflowid | - | Mandatory

###### Example Body:

{

"workflowid": "2df3212c9f32447e28317b",

}
workflowid:
string

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation deleteChaosWorkflow($workflowid: String!){
      deleteChaosWorkflow(workflowid: $workflowid)
    }

##### Variables

    {
      "workflowid": "string"
    }

Try it now

200 OK

Successful operation

type
boolean

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "deleteChaosWorkflow": "boolean"
      }
    }

# MyHub

MyHub constructs workflow from a set of experiments from Chaos Hub or the Git Repo. There is a public hub which get cloned during the installation by default.

MyHub

## Add Myhub

User can add myhub easily via the myhub page of the Litmus Portal dashboard. After adding myhub, it will clone the git repository which has the chaos charts.

Field | Possible values | Mandatory/Optional
--- | --- | ---
RepoURL | - | Mandatory
RepoBranch | - | Mandatory
HubName | - | Mandatory

###### Example Body:

{

"RepoURL": "https://github.com/litmuschaos/chaos-charts",
"RepoBranch": "master",
"HubName": "my-chaos-hub",

}
myhubInput:
CreateMyHub

(no description)

projectID:
string

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation addMyHub($myhubInput: CreateMyHub!, $projectID: String!){
      addMyHub(myhubInput: $myhubInput, projectID: $projectID){
        id
        RepoURL
        RepoBranch
        ProjectID
        HubName
        CreatedAt
        UpdatedAt
      }
    }

##### Variables

    {
      "myhubInput": {
        "HubName": "string",
        "RepoURL": "string",
        "RepoBranch": "string"
      },
      "projectID": "string"
    }

Try it now

200 OK

Successful operation

type
MyHub

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "addMyHub": {
          "id": "string",
          "RepoURL": "string",
          "RepoBranch": "string",
          "ProjectID": "string",
          "HubName": "string",
          "CreatedAt": "string",
          "UpdatedAt": "string"
        }
      }
    }

MyHub

## List MyHub

Returns a list of myhub connected with Litmus Portal

Field | Possible values | Mandatory/Optional
--- | --- | ---
projectID | - | Mandatory

###### Example Body:

{

"projectID": "5fd7d9212c9f32447e28317b",

}
projectID:
string

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    query getHubStatus($projectID: String!){
      getHubStatus(projectID: $projectID){
        id
        RepoURL
        RepoBranch
        IsAvailable
        TotalExp
        HubName
      }
    }

##### Variables

    {
      "projectID": "string"
    }

Try it now

200 OK

Successful operation

type
MyHubStatus

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "getHubStatus": [
          {
            "id": "string",
            "RepoURL": "string",
            "RepoBranch": "string",
            "IsAvailable": "boolean",
            "TotalExp": "string",
            "HubName": "string"
          }
        ]
      }
    }

MyHub

## Sync MyHub

Sync hub will pull the latest commits from the git repository.

Field | Possible values | Mandatory/Optional
--- | --- | ---
projectID | - | Mandatory
HubName | - | Mandatory

###### Example Body:

{

"project_id": "5fd7d9212c9f32447e28317b",
"HubName": "my-chaos-hub",

}
projectID:
string

(no description)

HubName:
string

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation syncHub($projectID: String!, $HubName: String!){
      syncHub(projectID: $projectID, HubName: $HubName){
        id
        RepoURL
        RepoBranch
        IsAvailable
        TotalExp
        HubName
      }
    }

##### Variables

    {
      "projectID": "string",
      "HubName": "string"
    }

Try it now

200 OK

Successful operation

type
MyHubStatus

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "syncHub": [
          {
            "id": "string",
            "RepoURL": "string",
            "RepoBranch": "string",
            "IsAvailable": "boolean",
            "TotalExp": "string",
            "HubName": "string"
          }
        ]
      }
    }

# User Management

User Management APIs manages user accessibility with Litmus Portal

User Management

## Add User

Admin can add their team members via the user management panel of settings page. After that, user can login with their credentials to litmus portal.

Field | Possible values | Mandatory/Optional
--- | --- | ---
username | - | Mandatory
email | - | Mandatory
company_name | - | Mandatory
name | - | Mandatory
project_name | - | Mandatory

###### Example Body:

{

"username": "litmus-user",
"email": "litmuschaos@gmail.com",
"company_name": "CNCF",
"name": "Litmus User",
"project_name": "my-project",

}
user:
CreateUserInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation createUser($user: CreateUserInput!){
      createUser(user: $user){
        id
        username
        email
        is_email_verified
        company_name
        name
        role
        state
        created_at
        updated_at
        removed_at
      }
    }

##### Variables

    {
      "user": {
        "username": "string",
        "email": "string",
        "company_name": "string",
        "name": "string",
        "project_name": "string"
      }
    }

Try it now

200 OK

Successful operation

type
User

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "createUser": {
          "id": "string",
          "username": "string",
          "email": "string",
          "is_email_verified": "boolean",
          "company_name": "string",
          "name": "string",
          "role": "string",
          "state": "string",
          "created_at": "string",
          "updated_at": "string",
          "removed_at": "string"
        }
      }
    }

User Management

## List User

Returns a list of user within the Litmus Portal

#### Example

##### Request Content-Types: application/json

##### Query

    query users{
      users{
        id
        username
        email
        is_email_verified
        company_name
        name
        role
        state
        created_at
        updated_at
        removed_at
      }
    }

Try it now

200 OK

Successful operation

type
User

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "users": [
          {
            "id": "string",
            "username": "string",
            "email": "string",
            "is_email_verified": "boolean",
            "company_name": "string",
            "name": "string",
            "role": "string",
            "state": "string",
            "created_at": "string",
            "updated_at": "string",
            "removed_at": "string"
          }
        ]
      }
    }

User Management

## Get User

Returns a specified user within the Litmus Portal

Field | Possible values | Mandatory/Optional
--- | --- | ---
username | - | Mandatory

###### Example Body:

{

"username": "litmus-user",

}
username:
string

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    query getUser($username: String!){
      getUser(username: $username){
        id
        username
        email
        is_email_verified
        company_name
        name
        role
        state
        created_at
        updated_at
        removed_at
      }
    }

##### Variables

    {
      "username": "string"
    }

Try it now

200 OK

Successful operation

type
User

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "getUser": {
          "id": "string",
          "username": "string",
          "email": "string",
          "is_email_verified": "boolean",
          "company_name": "string",
          "name": "string",
          "role": "string",
          "state": "string",
          "created_at": "string",
          "updated_at": "string",
          "removed_at": "string"
        }
      }
    }

User Management

## Update User

User can update its details details by providing the following parameters:

Field | Possible values | Mandatory/Optional
--- | --- | ---
id | - | Mandatory
name | - | Mandatory
email | - | Mandatory
company_name | - | Mandatory

###### Example Body:

{

"id": "5fd7d9212c9f32447e28317b",
"name": "litmus-user",
"email": "litmususer@yahoo.com",
"company_name": "CNCF",

}
user:
UpdateUserInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    muatation updateUser($user: UpdateUserInput!){
      updateUser(user: $user)
    }

##### Variables

    {
      "user": {
        "id": "object",
        "name": "string",
        "email": "string",
        "company_name": "string"
      }
    }

Try it now

200 OK

Successful operation

type
string

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "updateUser": "string"
      }
    }

User Management

## Send Invitation

Admin can invite registered user to their project and assign them with viewer or editor access. Following are the parameters for this mutation:

Field | Possible values | Mandatory/Optional
--- | --- | ---
project_id | - | Mandatory
user_name | - | Mandatory
role | Viewer/Editor | Mandatory

###### Example Body:

{

"project_id": "5fd7d9212c9f32447e28317b",
"username": "litmus-user",
"role": "Editor",

}
member:
MemberInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation sendInvitation($member: MemberInput!){
      sendInvitation(member: $member){
        user_id
        user_name
        name
        email
        role
        invitation
        joined_at
      }
    }

##### Variables

    {
      "member": {
        "project_id": "object",
        "user_name": "string",
        "role": "string"
      }
    }

Try it now

200 OK

Successful operation

type
Member

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "sendInvitation": {
          "user_id": "string",
          "user_name": "string",
          "name": "string",
          "email": "string",
          "invitation": "string",
          "joined_at": "string"
        }
      }
    }

User Management

## Accept Invitation

User can accept the invitation by invoking this endpoint.

Field | Possible values | Mandatory/Optional
--- | --- | ---
project_id | - | Mandatory
user_name | - | Mandatory
role | Viewer/Editor | Mandatory

###### Example Body:

{

"project_id": "5fd7d9212c9f32447e28317b",
"username": "litmus-user",
"role": "Viewer",

}
member:
MemberInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation acceptInvitation($member: MemberInput!){
      acceptInvitation(member: $member)
    }

##### Variables

    {
      "member": {
        "project_id": "object",
        "user_name": "string",
        "role": "string"
      }
    }

Try it now

200 OK

Successful operation

type
string

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "acceptInvitation": "string"
      }
    }

User Management

## Decline Invitation

User can decline the invitation by invoking this endpoint.

Field | Possible values | Mandatory/Optional
--- | --- | ---
project_id | - | Mandatory
user_name | - | Mandatory
role | Viewer/Editor | Mandatory

###### Example Body:

{

"project_id": "5fd7d9212c9f32447e28317b",
"username": "litmus-user",
"role": "Viewer",

}
member:
MemberInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation declineInvitation($member: MemberInput!){
      declineInvitation(member: $member)
    }

##### Variables

    {
      "member": {
        "project_id": "object",
        "user_name": "string",
        "role": "string"
      }
    }

Try it now

200 OK

Successful operation

type
string

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "declineInvitation": "string"
      }
    }

User Management

## Remove Invitation

User can remove the invitation by invoking this endpoint.

Field | Possible values | Mandatory/Optional
--- | --- | ---
project_id | - | Mandatory
user_name | - | Mandatory
role | Viewer/Editor | Mandatory

###### Example Body:

{

"project_id": "5fd7d9212c9f32447e28317b",
"username": "litmus-user",
"role": "Viewer",

}
member:
MemberInput

(no description)

#### Example

##### Request Content-Types: application/json

##### Query

    mutation declineInvitation($member: MemberInput!){
      declineInvitation(member: $member)
    }

##### Variables

    {
      "member": {
        "project_id": "object",
        "user_name": "string",
        "role": "string"
      }
    }

Try it now

200 OK

Successful operation

type
string

##### Response Content-Types: application/json

##### Response Example (200 OK)

    {
      "data": {
        "declineInvitation": "string"
      }
    }

# Schema Definitions

## ActionPayload: object

request_type:
String
k8s_manifest:
String
namespace:
String
external_data:
String

##### Example

    {
      "request_type": "string",
      "k8s_manifest": "string",
      "namespace": "string",
      "external_data": "string"
    }

## Annotation: object

Categories:
String
Vendor:
String
CreatedAt:
String
Repository:
String
Support:
String
ChartDescription:
String

##### Example

    {
      "Categories": "string",
      "Vendor": "string",
      "CreatedAt": "string",
      "Repository": "string",
      "Support": "string",
      "ChartDescription": "string"
    }

## Boolean: boolean

The `Boolean` scalar type represents `true` or `false`.

##### Example

    boolean

## ChaosWorkFlowInput: object

workflow_id:
String
workflow_manifest:
String
cronSyntax:
String
workflow_name:
String
workflow_description:
String
weightages:
WeightagesInput
isCustomWorkflow:
Boolean
project_id:
ID
cluster_id:
ID

##### Example

    {
      "workflow_id": "string",
      "workflow_manifest": "string",
      "cronSyntax": "string",
      "workflow_name": "string",
      "workflow_description": "string",
      "weightages": [
        {
          "experiment_name": "string",
          "weightage": "number"
        }
      ],
      "isCustomWorkflow": "boolean",
      "project_id": "object",
      "cluster_id": "object"
    }

## ChaosWorkFlowResponse: object

workflow_id:
String
cronSyntax:
String
workflow_name:
String
workflow_description:
String
isCustomWorkflow:
Boolean

##### Example

    {
      "workflow_id": "string",
      "cronSyntax": "string",
      "workflow_name": "string",
      "workflow_description": "string",
      "isCustomWorkflow": "boolean"
    }

## Chart: object

ApiVersion:
String
Kind:
String
Metadata:
Metadata
Spec:
Spec
PackageInfo:
PackageInformation
Experiments:
Chart

##### Example

    {
      "ApiVersion": "string",
      "Kind": "string",
      "Metadata": {
        "Name": "string",
        "Version": "string",
        "Annotations": {
          "Categories": "string",
          "Vendor": "string",
          "CreatedAt": "string",
          "Repository": "string",
          "Support": "string",
          "ChartDescription": "string"
        }
      },
      "Spec": {
        "DisplayName": "string",
        "CategoryDescription": "string",
        "Keywords": [
          "string"
        ],
        "Maturity": "string",
        "Maintainers": [
          {
            "Name": "string",
            "Email": "string"
          }
        ],
        "MinKubeVersion": "string",
        "Provider": "string",
        "Links": [
          {
            "Name": "string",
            "Url": "string"
          }
        ],
        "Experiments": [
          "string"
        ],
        "ChaosExpCRDLink": "string",
        "Platforms": [
          "string"
        ],
        "ChaosType": "string"
      },
      "PackageInfo": {
        "PackageName": "string",
        "Experiments": [
          {
            "Name": "string",
            "CSV": "string",
            "Desc": "string"
          }
        ]
      },
      "Experiments": [
        {
          "ApiVersion": "string",
          "Kind": "string",
          "Metadata": {
            "Name": "string",
            "Version": "string",
            "Annotations": {
              "Categories": "string",
              "Vendor": "string",
              "CreatedAt": "string",
              "Repository": "string"
            }
          }
        }
      ]
    }

## Charts: object

Charts:
Chart

##### Example

    {
      "Charts": [
        {
          "ApiVersion": "string",
          "Kind": "string",
          "Metadata": {
            "Name": "string",
            "Version": "string",
            "Annotations": {
              "Categories": "string",
              "Vendor": "string",
              "CreatedAt": "string",
              "Repository": "string",
              "Support": "string",
              "ChartDescription": "string"
            }
          },
          "Spec": {
            "DisplayName": "string",
            "CategoryDescription": "string",
            "Keywords": [
              "string"
            ],
            "Maturity": "string",
            "Maintainers": [
              {
                "Name": "string",
                "Email": "string"
              }
            ],
            "MinKubeVersion": "string",
            "Provider": "string",
            "Links": [
              {
                "Name": "string",
                "Url": "string"
              }
            ],
            "Experiments": [
              "string"
            ],
            "ChaosExpCRDLink": "string",
            "Platforms": [
              "string"
            ],
            "ChaosType": "string"
          },
          "PackageInfo": {
            "PackageName": "string",
            "Experiments": [
              {
                "Name": "string",
                "CSV": "string",
                "Desc": "string"
              }
            ]
          },
          "Experiments": [
            {
              "ApiVersion": "string",
              "Kind": "string",
              "Metadata": {
                "Name": "string",
                "Version": "string",
                "Annotations": {
                  "Categories": "string",
                  "Vendor": "string"
                }
              }
            }
          ]
        }
      ]
    }

## CloningInput: object

HubName:
String
ProjectID:
String
RepoBranch:
String
RepoURL:
String

##### Example

    {
      "HubName": "string",
      "ProjectID": "string",
      "RepoBranch": "string",
      "RepoURL": "string"
    }

## Cluster: object

cluster_id:
ID
project_id:
ID
cluster_name:
String
description:
String
platform_name:
String
access_key:
String
is_registered:
Boolean
is_cluster_confirmed:
Boolean
is_active:
Boolean
updated_at:
String
created_at:
String
cluster_type:
String
no_of_schedules:
Int
no_of_workflows:
Int
token:
String
agent_namespace:
String
serviceaccount:
String
agent_scope:
String
agent_ns_exists:
Boolean
agent_sa_exists:
Boolean

##### Example

    {
      "cluster_id": "object",
      "project_id": "object",
      "cluster_name": "string",
      "description": "string",
      "platform_name": "string",
      "access_key": "string",
      "is_registered": "boolean",
      "is_cluster_confirmed": "boolean",
      "is_active": "boolean",
      "updated_at": "string",
      "created_at": "string",
      "cluster_type": "string",
      "no_of_schedules": "number",
      "no_of_workflows": "number",
      "token": "string",
      "agent_namespace": "string",
      "serviceaccount": "string",
      "agent_scope": "string",
      "agent_ns_exists": "boolean",
      "agent_sa_exists": "boolean"
    }

## ClusterAction: object

project_id:
ID
action:
ActionPayload

##### Example

    {
      "project_id": "object",
      "action": {
        "request_type": "string",
        "k8s_manifest": "string",
        "namespace": "string",
        "external_data": "string"
      }
    }

## ClusterActionInput: object

cluster_id:
ID
action:
String

##### Example

    {
      "cluster_id": "object",
      "action": "string"
    }

## ClusterConfirmResponse: object

isClusterConfirmed:
Boolean
newClusterKey:
String
cluster_id:
String

##### Example

    {
      "isClusterConfirmed": "boolean",
      "newClusterKey": "string",
      "cluster_id": "string"
    }

## ClusterEvent: object

event_id:
ID
event_type:
String
event_name:
String
description:
String
cluster:
Cluster

##### Example

    {
      "event_id": "object",
      "event_type": "string",
      "event_name": "string",
      "description": "string",
      "cluster": {
        "cluster_id": "object",
        "project_id": "object",
        "cluster_name": "string",
        "description": "string",
        "platform_name": "string",
        "access_key": "string",
        "is_registered": "boolean",
        "is_cluster_confirmed": "boolean",
        "is_active": "boolean",
        "updated_at": "string",
        "created_at": "string",
        "cluster_type": "string",
        "no_of_schedules": "number",
        "no_of_workflows": "number",
        "token": "string",
        "agent_namespace": "string",
        "serviceaccount": "string",
        "agent_scope": "string",
        "agent_ns_exists": "boolean",
        "agent_sa_exists": "boolean"
      }
    }

## ClusterEventInput: object

event_name:
String
description:
String
cluster_id:
String
access_key:
String

##### Example

    {
      "event_name": "string",
      "description": "string",
      "cluster_id": "string",
      "access_key": "string"
    }

## ClusterIdentity: object

cluster_id:
String
access_key:
String

##### Example

    {
      "cluster_id": "string",
      "access_key": "string"
    }

## ClusterInput: object

cluster_name:
String
description:
String
platform_name:
String
project_id:
ID
cluster_type:
String
agent_namespace:
String
serviceaccount:
String
agent_scope:
String
agent_ns_exists:
Boolean
agent_sa_exists:
Boolean

##### Example

    {
      "cluster_name": "string",
      "description": "string",
      "platform_name": "string",
      "project_id": "object",
      "cluster_type": "string",
      "agent_namespace": "string",
      "serviceaccount": "string",
      "agent_scope": "string",
      "agent_ns_exists": "boolean",
      "agent_sa_exists": "boolean"
    }

## CreateMyHub: object

HubName:
String
RepoURL:
String
RepoBranch:
String

##### Example

    {
      "HubName": "string",
      "RepoURL": "string",
      "RepoBranch": "string"
    }

## CreateUserInput: object

username:
String
email:
String
company_name:
String
name:
String
project_name:
String

##### Example

    {
      "username": "string",
      "email": "string",
      "company_name": "string",
      "name": "string",
      "project_name": "string"
    }

## ExperimentInput: object

ProjectID:
String
ChartName:
String
ExperimentName:
String
HubName:
String
FileType:
String

##### Example

    {
      "ProjectID": "string",
      "ChartName": "string",
      "ExperimentName": "string",
      "HubName": "string",
      "FileType": "string"
    }

## Experiments: object

Name:
String
CSV:
String
Desc:
String

##### Example

    {
      "Name": "string",
      "CSV": "string",
      "Desc": "string"
    }

## Float: number

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

##### Example

    number

## ID: object

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

    object

## Int: number

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

##### Example

    number

## Link: object

Name:
String
Url:
String

##### Example

    {
      "Name": "string",
      "Url": "string"
    }

## Maintainer: object

Name:
String
Email:
String

##### Example

    {
      "Name": "string",
      "Email": "string"
    }

## Member: object

user_id:
ID
user_name:
String
name:
String
email:
String
role:
MemberRole
invitation:
String
joined_at:
String

##### Example

    {
      "user_id": "object",
      "user_name": "string",
      "name": "string",
      "email": "string",
      "role": "string",
      "invitation": "string",
      "joined_at": "string"
    }

## MemberInput: object

project_id:
ID
user_name:
String
role:
MemberRole

##### Example

    {
      "project_id": "object",
      "user_name": "string",
      "role": "string"
    }

## MemberRole: string

object
Owner
object
Editor
object
Viewer

## Metadata: object

Name:
String
Version:
String
Annotations:
Annotation

##### Example

    {
      "Name": "string",
      "Version": "string",
      "Annotations": {
        "Categories": "string",
        "Vendor": "string",
        "CreatedAt": "string",
        "Repository": "string",
        "Support": "string",
        "ChartDescription": "string"
      }
    }

## MyHub: object

id:
ID
RepoURL:
String
RepoBranch:
String
ProjectID:
String
HubName:
String
CreatedAt:
String
UpdatedAt:
String

##### Example

    {
      "id": "object",
      "RepoURL": "string",
      "RepoBranch": "string",
      "ProjectID": "string",
      "HubName": "string",
      "CreatedAt": "string",
      "UpdatedAt": "string"
    }

## MyHubStatus: object

id:
ID
RepoURL:
String
RepoBranch:
String
IsAvailable:
Boolean
TotalExp:
String
HubName:
String

##### Example

    {
      "id": "object",
      "RepoURL": "string",
      "RepoBranch": "string",
      "IsAvailable": "boolean",
      "TotalExp": "string",
      "HubName": "string"
    }

## PackageInformation: object

PackageName:
String
Experiments:
Experiments

##### Example

    {
      "PackageName": "string",
      "Experiments": [
        {
          "Name": "string",
          "CSV": "string",
          "Desc": "string"
        }
      ]
    }

## PodLog: object

cluster_id:
ClusterIdentity
request_id:
ID
workflow_run_id:
ID
pod_name:
String
pod_type:
String
log:
String

##### Example

    {
      "cluster_id": {
        "cluster_id": "string",
        "access_key": "string"
      },
      "request_id": "object",
      "workflow_run_id": "object",
      "pod_name": "string",
      "pod_type": "string",
      "log": "string"
    }

## PodLogRequest: object

cluster_id:
ID
workflow_run_id:
ID
pod_name:
String
pod_namespace:
String
pod_type:
String
exp_pod:
String
runner_pod:
String
chaos_namespace:
String

##### Example

    {
      "cluster_id": "object",
      "workflow_run_id": "object",
      "pod_name": "string",
      "pod_namespace": "string",
      "pod_type": "string",
      "exp_pod": "string",
      "runner_pod": "string",
      "chaos_namespace": "string"
    }

## PodLogResponse: object

workflow_run_id:
ID
pod_name:
String
pod_type:
String
log:
String

##### Example

    {
      "workflow_run_id": "object",
      "pod_name": "string",
      "pod_type": "string",
      "log": "string"
    }

## Project: object

id:
ID
name:
String
members:
Member
state:
String
created_at:
String
updated_at:
String
removed_at:
String

##### Example

    {
      "id": "object",
      "name": "string",
      "members": [
        {
          "user_id": "object",
          "user_name": "string",
          "name": "string",
          "email": "string",
          "role": "string",
          "invitation": "string",
          "joined_at": "string"
        }
      ],
      "state": "string",
      "created_at": "string",
      "updated_at": "string",
      "removed_at": "string"
    }

## Provider: object

Name:
String

##### Example

    {
      "Name": "string"
    }

## ScheduledWorkflows: object

workflow_id:
String
workflow_manifest:
String
cronSyntax:
String
cluster_name:
String
workflow_name:
String
workflow_description:
String
weightages:
weightages
isCustomWorkflow:
Boolean
updated_at:
String
created_at:
String
project_id:
ID
cluster_id:
ID
cluster_type:
String
isRemoved:
Boolean

##### Example

    {
      "workflow_id": "string",
      "workflow_manifest": "string",
      "cronSyntax": "string",
      "cluster_name": "string",
      "workflow_name": "string",
      "workflow_description": "string",
      "weightages": [
        {
          "experiment_name": "string",
          "weightage": "number"
        }
      ],
      "isCustomWorkflow": "boolean",
      "updated_at": "string",
      "created_at": "string",
      "project_id": "object",
      "cluster_id": "object",
      "cluster_type": "string",
      "isRemoved": "boolean"
    }

## Spec: object

DisplayName:
String
CategoryDescription:
String
Keywords:
String
Maturity:
String
Maintainers:
Maintainer
MinKubeVersion:
String
Provider:
String
Links:
Link
Experiments:
String
ChaosExpCRDLink:
String
Platforms:
String
ChaosType:
String

##### Example

    {
      "DisplayName": "string",
      "CategoryDescription": "string",
      "Keywords": [
        "string"
      ],
      "Maturity": "string",
      "Maintainers": [
        {
          "Name": "string",
          "Email": "string"
        }
      ],
      "MinKubeVersion": "string",
      "Provider": "string",
      "Links": [
        {
          "Name": "string",
          "Url": "string"
        }
      ],
      "Experiments": [
        "string"
      ],
      "ChaosExpCRDLink": "string",
      "Platforms": [
        "string"
      ],
      "ChaosType": "string"
    }

## String: string

The `String`scalar 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.

## Subscription: object

clusterEventListener:
ClusterEvent
workflowEventListener:
WorkflowRun
getPodLog:
PodLogResponse
clusterConnect:
ClusterAction

##### Example

    {
      "clusterEventListener": {
        "event_id": "object",
        "event_type": "string",
        "event_name": "string",
        "description": "string",
        "cluster": {
          "cluster_id": "object",
          "project_id": "object",
          "cluster_name": "string",
          "description": "string",
          "platform_name": "string",
          "access_key": "string",
          "is_registered": "boolean",
          "is_cluster_confirmed": "boolean",
          "is_active": "boolean",
          "updated_at": "string",
          "created_at": "string",
          "cluster_type": "string",
          "no_of_schedules": "number",
          "no_of_workflows": "number",
          "token": "string",
          "agent_namespace": "string",
          "serviceaccount": "string",
          "agent_scope": "string",
          "agent_ns_exists": "boolean",
          "agent_sa_exists": "boolean"
        }
      },
      "workflowEventListener": {
        "workflow_run_id": "object",
        "workflow_id": "object",
        "cluster_name": "string",
        "last_updated": "string",
        "project_id": "object",
        "cluster_id": "object",
        "workflow_name": "string",
        "cluster_type": "string",
        "execution_data": "string"
      },
      "getPodLog": {
        "workflow_run_id": "object",
        "pod_name": "string",
        "pod_type": "string",
        "log": "string"
      },
      "clusterConnect": {
        "project_id": "object",
        "action": {
          "request_type": "string",
          "k8s_manifest": "string",
          "namespace": "string",
          "external_data": "string"
        }
      }
    }

## UpdateUserInput: object

id:
ID
name:
String
email:
String
company_name:
String

##### Example

    {
      "id": "object",
      "name": "string",
      "email": "string",
      "company_name": "string"
    }

## User: object

id:
ID
username:
String
email:
String
is_email_verified:
Boolean
company_name:
String
name:
String
projects:
Project
role:
String
state:
String
created_at:
String
updated_at:
String
removed_at:
String

##### Example

    {
      "id": "object",
      "username": "string",
      "email": "string",
      "is_email_verified": "boolean",
      "company_name": "string",
      "name": "string",
      "projects": [
        {
          "id": "object",
          "name": "string",
          "members": [
            {
              "user_id": "object",
              "user_name": "string",
              "name": "string",
              "email": "string",
              "role": "string",
              "invitation": "string",
              "joined_at": "string"
            }
          ],
          "state": "string",
          "created_at": "string",
          "updated_at": "string",
          "removed_at": "string"
        }
      ],
      "role": "string",
      "state": "string",
      "created_at": "string",
      "updated_at": "string",
      "removed_at": "string"
    }

## WeightagesInput: object

experiment_name:
String
weightage:
Int

##### Example

    {
      "experiment_name": "string",
      "weightage": "number"
    }

## Workflow: object

workflow_id:
String
workflow_manifest:
String
cronSyntax:
String
cluster_name:
String
workflow_name:
String
workflow_description:
String
weightages:
weightages
isCustomWorkflow:
Boolean
updated_at:
String
created_at:
String
project_id:
ID
cluster_id:
ID
cluster_type:
String
isRemoved:
Boolean
workflow_runs:
WorkflowRuns

##### Example

    {
      "workflow_id": "string",
      "workflow_manifest": "string",
      "cronSyntax": "string",
      "cluster_name": "string",
      "workflow_name": "string",
      "workflow_description": "string",
      "weightages": [
        {
          "experiment_name": "string",
          "weightage": "number"
        }
      ],
      "isCustomWorkflow": "boolean",
      "updated_at": "string",
      "created_at": "string",
      "project_id": "object",
      "cluster_id": "object",
      "cluster_type": "string",
      "isRemoved": "boolean",
      "workflow_runs": [
        {
          "execution_data": "string",
          "workflow_run_id": "object",
          "last_updated": "string"
        }
      ]
    }

## WorkflowRun: object

workflow_run_id:
ID
workflow_id:
ID
cluster_name:
String
last_updated:
String
project_id:
ID
cluster_id:
ID
workflow_name:
String
cluster_type:
String
execution_data:
String

##### Example

    {
      "workflow_run_id": "object",
      "workflow_id": "object",
      "cluster_name": "string",
      "last_updated": "string",
      "project_id": "object",
      "cluster_id": "object",
      "workflow_name": "string",
      "cluster_type": "string",
      "execution_data": "string"
    }

## WorkflowRunInput: object

workflow_id:
ID
workflow_run_id:
ID
workflow_name:
String
execution_data:
String
cluster_id:
ClusterIdentity
completed:
Boolean

##### Example

    {
      "workflow_id": "object",
      "workflow_run_id": "object",
      "workflow_name": "string",
      "execution_data": "string",
      "cluster_id": {
        "cluster_id": "string",
        "access_key": "string"
      },
      "completed": "boolean"
    }

## WorkflowRuns: object

execution_data:
String
workflow_run_id:
ID
last_updated:
String

##### Example

    {
      "execution_data": "string",
      "workflow_run_id": "object",
      "last_updated": "string"
    }

## clusterRegResponse: object

token:
String
cluster_id:
String
cluster_name:
String

##### Example

    {
      "token": "string",
      "cluster_id": "string",
      "cluster_name": "string"
    }

## weightages: object

experiment_name:
String
weightage:
Int

##### Example

    {
      "experiment_name": "string",
      "weightage": "number"
    }

Documentation by DociQL