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
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.
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,
(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
mutation userClusterReg($clusterInput: ClusterInput!){
userClusterReg(clusterInput: $clusterInput){
token
cluster_id
cluster_name
}
}
{
"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"
}
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"userClusterReg": {
"token": "string",
"cluster_id": "string",
"cluster_name": "string"
}
}
}
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",
(no description)
(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
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
}
}
{
"project_id": "string",
"cluster_type": "string"
}
Successful operation
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"
}
]
}
}
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",
(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
mutation deleteClusterReg($cluster_id: String!){
deleteClusterReg(cluster_id: $cluster_id)
}
{
"cluster_id": "string"
}
Successful operation
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
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,
(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
mutation createChaosWorkFlow($input: ChaosWorkFlowInput!){
createChaosWorkFlow(input: $input){
workflow_id
cronSyntax
workflow_name
workflow_description
isCustomWorkflow
}
}
{
"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"
}
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"createChaosWorkFlow": {
"workflow_id": "string",
"cronSyntax": "string",
"workflow_name": "string",
"workflow_description": "string",
"isCustomWorkflow": "boolean"
}
}
}
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"],
(no description)
(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
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
}
}
{
"project_id": "string",
"workflow_ids": [
"string"
]
}
Successful operation
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"
}
]
}
}
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
(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
mutation updateChaosWorkflow($input: ChaosWorkFlowInput){
updateChaosWorkflow(input: $input){
workflow_id
cronSyntax
workflow_name
workflow_description
isCustomWorkflow
}
}
{
"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"
}
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"updateChaosWorkflow": {
"workflow_id": "string",
"cronSyntax": "string",
"workflow_name": "string",
"workflow_description": "string",
"isCustomWorkflow": "boolean"
}
}
}
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",
(no description)
Example
Request Content-Types:
application/json
Query
mutation deleteChaosWorkflow($workflowid: String!){
deleteChaosWorkflow(workflowid: $workflowid)
}
Variables
{
"workflowid": "string"
}
Try it now
mutation deleteChaosWorkflow($workflowid: String!){
deleteChaosWorkflow(workflowid: $workflowid)
}
{
"workflowid": "string"
}
Successful operation
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.
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",
(no description)
(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
mutation addMyHub($myhubInput: CreateMyHub!, $projectID: String!){
addMyHub(myhubInput: $myhubInput, projectID: $projectID){
id
RepoURL
RepoBranch
ProjectID
HubName
CreatedAt
UpdatedAt
}
}
{
"myhubInput": {
"HubName": "string",
"RepoURL": "string",
"RepoBranch": "string"
},
"projectID": "string"
}
Successful operation
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"
}
}
}
List MyHub
Returns a list of myhub connected with Litmus Portal
Field | Possible values | Mandatory/Optional |
---|---|---|
projectID | - | Mandatory |
Example Body:
{
"projectID": "5fd7d9212c9f32447e28317b",
(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
query getHubStatus($projectID: String!){
getHubStatus(projectID: $projectID){
id
RepoURL
RepoBranch
IsAvailable
TotalExp
HubName
}
}
{
"projectID": "string"
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"getHubStatus": [
{
"id": "string",
"RepoURL": "string",
"RepoBranch": "string",
"IsAvailable": "boolean",
"TotalExp": "string",
"HubName": "string"
}
]
}
}
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",
(no description)
(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
mutation syncHub($projectID: String!, $HubName: String!){
syncHub(projectID: $projectID, HubName: $HubName){
id
RepoURL
RepoBranch
IsAvailable
TotalExp
HubName
}
}
{
"projectID": "string",
"HubName": "string"
}
Successful operation
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
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 |
- | 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",
(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
mutation createUser($user: CreateUserInput!){
createUser(user: $user){
id
username
email
is_email_verified
company_name
name
role
state
created_at
updated_at
removed_at
}
}
{
"user": {
"username": "string",
"email": "string",
"company_name": "string",
"name": "string",
"project_name": "string"
}
}
Successful operation
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"
}
}
}
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
query users{
users{
id
username
email
is_email_verified
company_name
name
role
state
created_at
updated_at
removed_at
}
}
Successful operation
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"
}
]
}
}
Get User
Returns a specified user within the Litmus Portal
Field | Possible values | Mandatory/Optional |
---|---|---|
username | - | Mandatory |
Example Body:
{
"username": "litmus-user",
(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
query getUser($username: String!){
getUser(username: $username){
id
username
email
is_email_verified
company_name
name
role
state
created_at
updated_at
removed_at
}
}
{
"username": "string"
}
Successful operation
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"
}
}
}
Update User
User can update its details details by providing the following parameters:
Field | Possible values | Mandatory/Optional |
---|---|---|
id | - | Mandatory |
name | - | Mandatory |
- | Mandatory | |
company_name | - | Mandatory |
Example Body:
{
"id": "5fd7d9212c9f32447e28317b",
"name": "litmus-user",
"email": "litmususer@yahoo.com",
"company_name": "CNCF",
(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
muatation updateUser($user: UpdateUserInput!){
updateUser(user: $user)
}
{
"user": {
"id": "object",
"name": "string",
"email": "string",
"company_name": "string"
}
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"updateUser": "string"
}
}
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",
(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
mutation sendInvitation($member: MemberInput!){
sendInvitation(member: $member){
user_id
user_name
name
email
role
invitation
joined_at
}
}
{
"member": {
"project_id": "object",
"user_name": "string",
"role": "string"
}
}
Successful operation
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"
}
}
}
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",
(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
mutation acceptInvitation($member: MemberInput!){
acceptInvitation(member: $member)
}
{
"member": {
"project_id": "object",
"user_name": "string",
"role": "string"
}
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"acceptInvitation": "string"
}
}
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",
(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
mutation declineInvitation($member: MemberInput!){
declineInvitation(member: $member)
}
{
"member": {
"project_id": "object",
"user_name": "string",
"role": "string"
}
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"declineInvitation": "string"
}
}
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",
(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
mutation declineInvitation($member: MemberInput!){
declineInvitation(member: $member)
}
{
"member": {
"project_id": "object",
"user_name": "string",
"role": "string"
}
}
Successful operation
Response Content-Types: application/json
Response Example (200 OK)
{
"data": {
"declineInvitation": "string"
}
}
Schema Definitions
ChaosWorkFlowInput: object
- workflow_id:
- workflow_manifest:
- cronSyntax:
- workflow_name:
- workflow_description:
- weightages:
- isCustomWorkflow:
- project_id:
- cluster_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"
}
Chart: object
- ApiVersion:
- Kind:
- Metadata:
- Spec:
- PackageInfo:
- Experiments:
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:
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"
}
}
}
]
}
]
}
Cluster: object
- 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:
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:
- action:
Example
{
"project_id": "object",
"action": {
"request_type": "string",
"k8s_manifest": "string",
"namespace": "string",
"external_data": "string"
}
}
ClusterEvent: object
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"
}
}
ClusterInput: object
- cluster_name:
- description:
- platform_name:
- project_id:
- cluster_type:
- agent_namespace:
- serviceaccount:
- agent_scope:
- agent_ns_exists:
- agent_sa_exists:
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"
}
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
MemberInput: object
- project_id:
- user_name:
- role:
Example
{
"project_id": "object",
"user_name": "string",
"role": "string"
}
Metadata: object
- Name:
- Version:
- Annotations:
Example
{
"Name": "string",
"Version": "string",
"Annotations": {
"Categories": "string",
"Vendor": "string",
"CreatedAt": "string",
"Repository": "string",
"Support": "string",
"ChartDescription": "string"
}
}
PackageInformation: object
- PackageName:
- Experiments:
Example
{
"PackageName": "string",
"Experiments": [
{
"Name": "string",
"CSV": "string",
"Desc": "string"
}
]
}
PodLogRequest: object
- cluster_id:
- workflow_run_id:
- pod_name:
- pod_namespace:
- pod_type:
- exp_pod:
- runner_pod:
- chaos_namespace:
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"
}
Project: object
- id:
- name:
- members:
- state:
- created_at:
- updated_at:
- removed_at:
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"
}
ScheduledWorkflows: object
- workflow_id:
- workflow_manifest:
- cronSyntax:
- cluster_name:
- workflow_name:
- workflow_description:
- weightages:
- isCustomWorkflow:
- updated_at:
- created_at:
- project_id:
- cluster_id:
- cluster_type:
- isRemoved:
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:
- CategoryDescription:
- Keywords:
- Maturity:
- Maintainers:
- MinKubeVersion:
- Provider:
- Links:
- Experiments:
- ChaosExpCRDLink:
- Platforms:
- ChaosType:
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:
- workflowEventListener:
- getPodLog:
- clusterConnect:
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"
}
}
}
User: object
- id:
- username:
- email:
- is_email_verified:
- company_name:
- name:
- projects:
- role:
- state:
- created_at:
- updated_at:
- removed_at:
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"
}
Workflow: object
- workflow_id:
- workflow_manifest:
- cronSyntax:
- cluster_name:
- workflow_name:
- workflow_description:
- weightages:
- isCustomWorkflow:
- updated_at:
- created_at:
- project_id:
- cluster_id:
- cluster_type:
- isRemoved:
- workflow_runs:
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:
- workflow_id:
- cluster_name:
- last_updated:
- project_id:
- cluster_id:
- workflow_name:
- cluster_type:
- execution_data:
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:
- workflow_run_id:
- workflow_name:
- execution_data:
- cluster_id:
- completed:
Example
{
"workflow_id": "object",
"workflow_run_id": "object",
"workflow_name": "string",
"execution_data": "string",
"cluster_id": {
"cluster_id": "string",
"access_key": "string"
},
"completed": "boolean"
}